authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-06-13 04:41:21-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-06-19 18:41:12-04:00
log1f98c98fffb09bf15a9fc04ecd5f1fa38a4bd4b8
tree23d82265b3a4500514063f0fa13533b255f88f64
parented37a1a33c2576c00697643463a4720728e04023

x86_64: increase passing test coverage on windows

Now that codegen has no references to linker state this is much easier. Closes #24153

51 files changed, 12364 insertions(+), 7958 deletions(-)

lib/compiler_rt/stack_probe.zig+28-28
...@@ -127,23 +127,23 @@ fn win_probe_stack_only() void {...@@ -127,23 +127,23 @@ fn win_probe_stack_only() void {
127 },127 },
128 .x86_64 => {128 .x86_64 => {
129 asm volatile (129 asm volatile (
130 \\ push %%rcx130 \\ pushq %%rcx
131 \\ push %%rax131 \\ pushq %%rax
132 \\ cmp $0x1000,%%rax132 \\ cmpq $0x1000,%%rax
133 \\ lea 24(%%rsp),%%rcx133 \\ leaq 24(%%rsp),%%rcx
134 \\ jb 1f134 \\ jb 1f
135 \\ 2:135 \\ 2:
136 \\ sub $0x1000,%%rcx136 \\ subq $0x1000,%%rcx
137 \\ test %%rcx,(%%rcx)137 \\ testq %%rcx,(%%rcx)
138 \\ sub $0x1000,%%rax138 \\ subq $0x1000,%%rax
139 \\ cmp $0x1000,%%rax139 \\ cmpq $0x1000,%%rax
140 \\ ja 2b140 \\ ja 2b
141 \\ 1:141 \\ 1:
142 \\ sub %%rax,%%rcx142 \\ subq %%rax,%%rcx
143 \\ test %%rcx,(%%rcx)143 \\ testq %%rcx,(%%rcx)
144 \\ pop %%rax144 \\ popq %%rax
145 \\ pop %%rcx145 \\ popq %%rcx
146 \\ ret146 \\ retq
147 );147 );
148 },148 },
149 .x86 => {149 .x86 => {
...@@ -179,26 +179,26 @@ fn win_probe_stack_adjust_sp() void {...@@ -179,26 +179,26 @@ fn win_probe_stack_adjust_sp() void {
179 switch (arch) {179 switch (arch) {
180 .x86_64 => {180 .x86_64 => {
181 asm volatile (181 asm volatile (
182 \\ push %%rcx182 \\ pushq %%rcx
183 \\ cmp $0x1000,%%rax183 \\ cmpq $0x1000,%%rax
184 \\ lea 16(%%rsp),%%rcx184 \\ leaq 16(%%rsp),%%rcx
185 \\ jb 1f185 \\ jb 1f
186 \\ 2:186 \\ 2:
187 \\ sub $0x1000,%%rcx187 \\ subq $0x1000,%%rcx
188 \\ test %%rcx,(%%rcx)188 \\ testq %%rcx,(%%rcx)
189 \\ sub $0x1000,%%rax189 \\ subq $0x1000,%%rax
190 \\ cmp $0x1000,%%rax190 \\ cmpq $0x1000,%%rax
191 \\ ja 2b191 \\ ja 2b
192 \\ 1:192 \\ 1:
193 \\ sub %%rax,%%rcx193 \\ subq %%rax,%%rcx
194 \\ test %%rcx,(%%rcx)194 \\ testq %%rcx,(%%rcx)
195 \\195 \\
196 \\ lea 8(%%rsp),%%rax196 \\ leaq 8(%%rsp),%%rax
197 \\ mov %%rcx,%%rsp197 \\ movq %%rcx,%%rsp
198 \\ mov -8(%%rax),%%rcx198 \\ movq -8(%%rax),%%rcx
199 \\ push (%%rax)199 \\ pushq (%%rax)
200 \\ sub %%rsp,%%rax200 \\ subq %%rsp,%%rax
201 \\ ret201 \\ retq
202 );202 );
203 },203 },
204 .x86 => {204 .x86 => {
lib/std/math/float.zig+41-22
...@@ -220,42 +220,61 @@ pub inline fn floatEpsAt(comptime T: type, x: T) T {...@@ -220,42 +220,61 @@ pub inline fn floatEpsAt(comptime T: type, x: T) T {
220 }220 }
221}221}
222222
223/// Returns the value inf for floating point type T.223/// Returns the inf value for a floating point `Type`.
224pub inline fn inf(comptime T: type) T {224pub inline fn inf(comptime Type: type) Type {
225 return reconstructFloat(T, floatExponentMax(T) + 1, mantissaOne(T));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));
226}230}
227231
228/// Returns the canonical quiet NaN representation for floating point type T.232/// Returns the canonical quiet NaN representation for a floating point `Type`.
229pub inline fn nan(comptime T: type) T {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 };
230 return reconstructFloat(238 return reconstructFloat(
231 T,239 RuntimeType,
232 floatExponentMax(T) + 1,240 floatExponentMax(RuntimeType) + 1,
233 mantissaOne(T) | 1 << (floatFractionalBits(T) - 1),241 mantissaOne(RuntimeType) | 1 << (floatFractionalBits(RuntimeType) - 1),
234 );242 );
235}243}
236244
237/// Returns a signalling NaN representation for floating point type T.245/// Returns a signalling NaN representation for a floating point `Type`.
238///246///
239/// TODO: LLVM is known to miscompile on some architectures to quiet NaN -247/// TODO: LLVM is known to miscompile on some architectures to quiet NaN -
240/// this is tracked by https://github.com/ziglang/zig/issues/14366248/// 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 };
242 return reconstructFloat(254 return reconstructFloat(
243 T,255 RuntimeType,
244 floatExponentMax(T) + 1,256 floatExponentMax(RuntimeType) + 1,
245 mantissaOne(T) | 1 << (floatFractionalBits(T) - 2),257 mantissaOne(RuntimeType) | 1 << (floatFractionalBits(RuntimeType) - 2),
246 );258 );
247}259}
248260
249test "float bits" {261fn floatBits(comptime Type: type) !void {
250 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {262 // (1 +) for the sign bit, since it is separate from the other bits
251 // (1 +) for the sign bit, since it is separate from the other bits263 const size = 1 + floatExponentBits(Type) + floatMantissaBits(Type);
252 const size = 1 + floatExponentBits(T) + floatMantissaBits(T);264 try expect(@bitSizeOf(Type) == size);
253 try expect(@bitSizeOf(T) == size);265 try expect(floatFractionalBits(Type) <= floatMantissaBits(Type));
254266
255 // for machine epsilon, assert expmin <= -prec <= expmax267 // for machine epsilon, assert expmin <= -prec <= expmax
256 try expect(floatExponentMin(T) <= -floatFractionalBits(T));268 try expect(floatExponentMin(Type) <= -floatFractionalBits(Type));
257 try expect(-floatFractionalBits(T) <= floatExponentMax(T));269 try expect(-floatFractionalBits(Type) <= floatExponentMax(Type));
258 }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);
259}278}
260279
261test inf {280test inf {
lib/std/math/signbit.zig+40-13
...@@ -4,20 +4,47 @@ const expect = std.testing.expect;...@@ -4,20 +4,47 @@ const expect = std.testing.expect;
44
5/// Returns whether x is negative or negative 0.5/// Returns whether x is negative or negative 0.
6pub fn signbit(x: anytype) bool {6pub fn signbit(x: anytype) bool {
7 const T = @TypeOf(x);7 return switch (@typeInfo(@TypeOf(x))) {
8 const TBits = std.meta.Int(.unsigned, @typeInfo(T).float.bits);8 .int, .comptime_int => x,
9 return @as(TBits, @bitCast(x)) >> (@bitSizeOf(T) - 1) != 0;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;
10}16}
1117
12test signbit {18test signbit {
13 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {19 try testInts(i0);
14 try expect(!signbit(@as(T, 0.0)));20 try testInts(u0);
15 try expect(!signbit(@as(T, 1.0)));21 try testInts(i1);
16 try expect(signbit(@as(T, -2.0)));22 try testInts(u1);
17 try expect(signbit(@as(T, -0.0)));23 try testInts(i2);
18 try expect(!signbit(math.inf(T)));24 try testInts(u2);
19 try expect(signbit(-math.inf(T)));25
20 try expect(!signbit(math.nan(T)));26 try testFloats(f16);
21 try expect(signbit(-math.nan(T)));27 try testFloats(f32);
22 }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)));
23}50}
lib/std/posix.zig+4-1
...@@ -7571,7 +7571,10 @@ const lfs64_abi = native_os == .linux and builtin.link_libc and (builtin.abi.isG...@@ -7571,7 +7571,10 @@ const lfs64_abi = native_os == .linux and builtin.link_libc and (builtin.abi.isG
7571/// If this happens the fix is to add the error code to the corresponding7571/// If this happens the fix is to add the error code to the corresponding
7572/// switch expression, possibly introduce a new error in the error set, and7572/// switch expression, possibly introduce a new error in the error set, and
7573/// send a patch to Zig.7573/// 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
7576pub const UnexpectedError = error{7579pub const UnexpectedError = error{
7577 /// The Operating System returned an undocumented error code.7580 /// The Operating System returned an undocumented error code.
lib/std/start.zig+6
...@@ -485,6 +485,9 @@ fn _start() callconv(.naked) noreturn {...@@ -485,6 +485,9 @@ fn _start() callconv(.naked) noreturn {
485}485}
486486
487fn WinStartup() callconv(.withStackAlign(.c, 1)) noreturn {487fn 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
488 if (!builtin.single_threaded and !builtin.link_libc) {491 if (!builtin.single_threaded and !builtin.link_libc) {
489 _ = @import("os/windows/tls.zig");492 _ = @import("os/windows/tls.zig");
490 }493 }
...@@ -495,6 +498,9 @@ fn WinStartup() callconv(.withStackAlign(.c, 1)) noreturn {...@@ -495,6 +498,9 @@ fn WinStartup() callconv(.withStackAlign(.c, 1)) noreturn {
495}498}
496499
497fn wWinMainCRTStartup() callconv(.withStackAlign(.c, 1)) noreturn {500fn 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
498 if (!builtin.single_threaded and !builtin.link_libc) {504 if (!builtin.single_threaded and !builtin.link_libc) {
499 _ = @import("os/windows/tls.zig");505 _ = @import("os/windows/tls.zig");
500 }506 }
src/Air/Legalize.zig+14-2
...@@ -122,8 +122,10 @@ pub const Feature = enum {...@@ -122,8 +122,10 @@ pub const Feature = enum {
122122
123 /// Legalize (shift lhs, (splat rhs)) -> (shift lhs, rhs)123 /// Legalize (shift lhs, (splat rhs)) -> (shift lhs, rhs)
124 unsplat_shift_rhs,124 unsplat_shift_rhs,
125 /// Legalize reduce of a one element vector to a bitcast125 /// Legalize reduce of a one element vector to a bitcast.
126 reduce_one_elem_to_bitcast,126 reduce_one_elem_to_bitcast,
127 /// Legalize splat to a one element vector to a bitcast.
128 splat_one_elem_to_bitcast,
127129
128 /// Replace `intcast_safe` with an explicit safety check which `call`s the panic function on failure.130 /// Replace `intcast_safe` with an explicit safety check which `call`s the panic function on failure.
129 /// Not compatible with `scalarize_intcast_safe`.131 /// Not compatible with `scalarize_intcast_safe`.
...@@ -628,7 +630,17 @@ fn legalizeBody(l: *Legalize, body_start: usize, body_len: usize) Error!void {...@@ -628,7 +630,17 @@ fn legalizeBody(l: *Legalize, body_start: usize, body_len: usize) Error!void {
628 else => {},630 else => {},
629 }631 }
630 },632 },
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 },
632 .shuffle_one => if (l.features.has(.scalarize_shuffle_one)) continue :inst try l.scalarize(inst, .shuffle_one),644 .shuffle_one => if (l.features.has(.scalarize_shuffle_one)) continue :inst try l.scalarize(inst, .shuffle_one),
633 .shuffle_two => if (l.features.has(.scalarize_shuffle_two)) continue :inst try l.scalarize(inst, .shuffle_two),645 .shuffle_two => if (l.features.has(.scalarize_shuffle_two)) continue :inst try l.scalarize(inst, .shuffle_two),
634 .select => if (l.features.has(.scalarize_select)) continue :inst try l.scalarize(inst, .select),646 .select => if (l.features.has(.scalarize_select)) continue :inst try l.scalarize(inst, .select),
src/arch/riscv64/CodeGen.zig+13-6
...@@ -5962,10 +5962,14 @@ fn airBr(func: *Func, inst: Air.Inst.Index) !void {...@@ -5962,10 +5962,14 @@ fn airBr(func: *Func, inst: Air.Inst.Index) !void {
5962 if (first_br) break :result src_mcv;5962 if (first_br) break :result src_mcv;
59635963
5964 try func.getValue(block_tracking.short, br.block_inst);5964 try func.getValue(block_tracking.short, br.block_inst);
5965 // .long = .none to avoid merging operand and block result stack frames.5965 try InstTracking.materializeUnsafe(
5966 const current_tracking: InstTracking = .{ .long = .none, .short = src_mcv };5966 // .long = .none to avoid merging operand and block result stack frames.
5967 try current_tracking.materializeUnsafe(func, br.block_inst, block_tracking.*);5967 .{ .long = .none, .short = src_mcv },
5968 for (current_tracking.getRegs()) |src_reg| func.register_manager.freeReg(src_reg);5968 func,
5969 br.block_inst,
5970 block_tracking.*,
5971 );
5972 try func.freeValue(src_mcv);
5969 break :result block_tracking.short;5973 break :result block_tracking.short;
5970 }5974 }
59715975
...@@ -8192,8 +8196,11 @@ fn genTypedValue(func: *Func, val: Value) InnerError!MCValue {...@@ -8192,8 +8196,11 @@ fn genTypedValue(func: *Func, val: Value) InnerError!MCValue {
8192 const lf = func.bin_file;8196 const lf = func.bin_file;
8193 const src_loc = func.src_loc;8197 const src_loc = func.src_loc;
81948198
8195 const result = if (val.isUndef(pt.zcu))8199 const result: codegen.GenResult = if (val.isUndef(pt.zcu))
8196 try lf.lowerUav(pt, val.toIntern(), .none, src_loc)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 }
8197 else8204 else
8198 try codegen.genTypedValue(lf, pt, src_loc, val, func.target);8205 try codegen.genTypedValue(lf, pt, src_loc, val, func.target);
8199 const mcv: MCValue = switch (result) {8206 const mcv: MCValue = switch (result) {
src/arch/x86_64/CodeGen.zig+11644-7221
...@@ -32,88 +32,47 @@ const FrameIndex = bits.FrameIndex;...@@ -32,88 +32,47 @@ const FrameIndex = bits.FrameIndex;
3232
33const InnerError = codegen.CodeGenError || error{OutOfRegisters};33const InnerError = codegen.CodeGenError || error{OutOfRegisters};
3434
35pub fn legalizeFeatures(target: *const std.Target) *const Air.Legalize.Features {35pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features {
36 @setEvalBranchQuota(1_200);36 return comptime &.initMany(&.{
37 return switch (target.ofmt == .coff) {37 .scalarize_mul_sat,
38 inline false, true => |use_old| comptime &.init(.{38 .scalarize_div_floor,
39 .scalarize_add = use_old,39 .scalarize_mod,
40 .scalarize_add_sat = use_old,40 .scalarize_add_with_overflow,
41 .scalarize_sub = use_old,41 .scalarize_sub_with_overflow,
42 .scalarize_sub_sat = use_old,42 .scalarize_mul_with_overflow,
43 .scalarize_mul = use_old,43 .scalarize_shl_with_overflow,
44 .scalarize_mul_wrap = use_old,44 .scalarize_shr,
45 .scalarize_mul_sat = true,45 .scalarize_shr_exact,
46 .scalarize_div_float = use_old,46 .scalarize_shl,
47 .scalarize_div_float_optimized = use_old,47 .scalarize_shl_exact,
48 .scalarize_div_trunc = use_old,48 .scalarize_shl_sat,
49 .scalarize_div_trunc_optimized = use_old,49 .scalarize_bitcast,
50 .scalarize_div_floor = true,50 .scalarize_ctz,
51 .scalarize_div_floor_optimized = use_old,51 .scalarize_popcount,
52 .scalarize_div_exact = use_old,52 .scalarize_byte_swap,
53 .scalarize_div_exact_optimized = use_old,53 .scalarize_bit_reverse,
54 .scalarize_mod = true,54 .scalarize_cmp_vector,
55 .scalarize_max = use_old,55 .scalarize_cmp_vector_optimized,
56 .scalarize_min = use_old,56 .scalarize_shuffle_one,
57 .scalarize_add_with_overflow = true,57 .scalarize_shuffle_two,
58 .scalarize_sub_with_overflow = true,58 .scalarize_select,
59 .scalarize_mul_with_overflow = true,59
60 .scalarize_shl_with_overflow = true,60 //.unsplat_shift_rhs,
61 .scalarize_bit_and = use_old,61 .reduce_one_elem_to_bitcast,
62 .scalarize_bit_or = use_old,62 .splat_one_elem_to_bitcast,
63 .scalarize_shr = true,63
64 .scalarize_shr_exact = true,64 .expand_intcast_safe,
65 .scalarize_shl = true,65 .expand_int_from_float_safe,
66 .scalarize_shl_exact = true,66 .expand_int_from_float_optimized_safe,
67 .scalarize_shl_sat = true,67 .expand_add_safe,
68 .scalarize_xor = use_old,68 .expand_sub_safe,
69 .scalarize_not = use_old,69 .expand_mul_safe,
70 .scalarize_bitcast = true,70
71 .scalarize_clz = use_old,71 .expand_packed_load,
72 .scalarize_ctz = true,72 .expand_packed_store,
73 .scalarize_popcount = true,73 .expand_packed_struct_field_val,
74 .scalarize_byte_swap = true,74 .expand_packed_aggregate_init,
75 .scalarize_bit_reverse = true,75 });
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 };
117}76}
11877
119/// Set this to `false` to uncover Sema OPV bugs.78/// Set this to `false` to uncover Sema OPV bugs.
...@@ -246,6 +205,7 @@ pub const MCValue = union(enum) {...@@ -246,6 +205,7 @@ pub const MCValue = union(enum) {
246 memory: u64,205 memory: u64,
247 /// The value is in memory at a constant offset from the address in a register.206 /// The value is in memory at a constant offset from the address in a register.
248 indirect: bits.RegisterOffset,207 indirect: bits.RegisterOffset,
208 indirect_load_frame: bits.FrameAddr,
249 /// The value stored at an offset from a frame index209 /// The value stored at an offset from a frame index
250 /// Payload is a frame address.210 /// Payload is a frame address.
251 load_frame: bits.FrameAddr,211 load_frame: bits.FrameAddr,
...@@ -279,6 +239,7 @@ pub const MCValue = union(enum) {...@@ -279,6 +239,7 @@ pub const MCValue = union(enum) {
279 .register_mask,239 .register_mask,
280 .eflags,240 .eflags,
281 .register_overflow,241 .register_overflow,
242 .indirect_load_frame,
282 .lea_frame,243 .lea_frame,
283 .lea_nav,244 .lea_nav,
284 .load_uav,245 .load_uav,
...@@ -417,6 +378,7 @@ pub const MCValue = union(enum) {...@@ -417,6 +378,7 @@ pub const MCValue = union(enum) {
417 0 => .{ .register = reg_off.reg },378 0 => .{ .register = reg_off.reg },
418 else => .{ .register_offset = reg_off },379 else => .{ .register_offset = reg_off },
419 },380 },
381 .indirect_load_frame => |frame_addr| .{ .load_frame = frame_addr },
420 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },382 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },
421 .load_nav => |nav| .{ .lea_nav = nav },383 .load_nav => |nav| .{ .lea_nav = nav },
422 .load_uav => |uav| .{ .lea_uav = uav },384 .load_uav => |uav| .{ .lea_uav = uav },
...@@ -439,7 +401,7 @@ pub const MCValue = union(enum) {...@@ -439,7 +401,7 @@ pub const MCValue = union(enum) {
439 .register_mask,401 .register_mask,
440 .memory,402 .memory,
441 .indirect,403 .indirect,
442 .load_frame,404 .indirect_load_frame,
443 .load_nav,405 .load_nav,
444 .load_uav,406 .load_uav,
445 .load_lazy_sym,407 .load_lazy_sym,
...@@ -451,6 +413,7 @@ pub const MCValue = union(enum) {...@@ -451,6 +413,7 @@ pub const MCValue = union(enum) {
451 .immediate => |addr| .{ .memory = addr },413 .immediate => |addr| .{ .memory = addr },
452 .register => |reg| .{ .indirect = .{ .reg = reg } },414 .register => |reg| .{ .indirect = .{ .reg = reg } },
453 .register_offset => |reg_off| .{ .indirect = reg_off },415 .register_offset => |reg_off| .{ .indirect = reg_off },
416 .load_frame => |frame_addr| .{ .indirect_load_frame = frame_addr },
454 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },417 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },
455 .lea_nav => |nav| .{ .load_nav = nav },418 .lea_nav => |nav| .{ .load_nav = nav },
456 .lea_uav => |uav| .{ .load_uav = uav },419 .lea_uav => |uav| .{ .load_uav = uav },
...@@ -477,6 +440,7 @@ pub const MCValue = union(enum) {...@@ -477,6 +440,7 @@ pub const MCValue = union(enum) {
477 .register_mask,440 .register_mask,
478 .memory,441 .memory,
479 .indirect,442 .indirect,
443 .indirect_load_frame,
480 .load_frame,444 .load_frame,
481 .load_nav,445 .load_nav,
482 .lea_nav,446 .lea_nav,
...@@ -516,6 +480,7 @@ pub const MCValue = union(enum) {...@@ -516,6 +480,7 @@ pub const MCValue = union(enum) {
516 .register_offset,480 .register_offset,
517 .register_overflow,481 .register_overflow,
518 .register_mask,482 .register_mask,
483 .indirect_load_frame,
519 .lea_frame,484 .lea_frame,
520 .elementwise_args,485 .elementwise_args,
521 .reserved_frame,486 .reserved_frame,
...@@ -589,6 +554,7 @@ pub const MCValue = union(enum) {...@@ -589,6 +554,7 @@ pub const MCValue = union(enum) {
589 @tagName(pl.reg),554 @tagName(pl.reg),
590 }),555 }),
591 .indirect => |pl| try writer.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }),556 .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 }),
592 .load_frame => |pl| try writer.print("[{} + 0x{x}]", .{ pl.index, pl.off }),558 .load_frame => |pl| try writer.print("[{} + 0x{x}]", .{ pl.index, pl.off }),
593 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),559 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
594 .load_nav => |pl| try writer.print("[nav:{d}]", .{@intFromEnum(pl)}),560 .load_nav => |pl| try writer.print("[nav:{d}]", .{@intFromEnum(pl)}),
...@@ -621,6 +587,7 @@ const InstTracking = struct {...@@ -621,6 +587,7 @@ const InstTracking = struct {
621 .undef,587 .undef,
622 .immediate,588 .immediate,
623 .memory,589 .memory,
590 .indirect_load_frame,
624 .load_frame,591 .load_frame,
625 .lea_frame,592 .lea_frame,
626 .load_nav,593 .load_nav,
...@@ -724,6 +691,7 @@ const InstTracking = struct {...@@ -724,6 +691,7 @@ const InstTracking = struct {
724 .undef,691 .undef,
725 .immediate,692 .immediate,
726 .memory,693 .memory,
694 .indirect_load_frame,
727 .lea_frame,695 .lea_frame,
728 .load_nav,696 .load_nav,
729 .lea_nav,697 .lea_nav,
...@@ -795,9 +763,9 @@ const InstTracking = struct {...@@ -795,9 +763,9 @@ const InstTracking = struct {
795 }763 }
796 }764 }
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 {
799 if (self.short == .dead) return;767 if (self.short == .dead) return;
800 try function.freeValue(self.short);768 try function.freeValue(self.short, opts);
801 if (self.long == .none) self.long = self.short;769 if (self.long == .none) self.long = self.short;
802 self.short = .{ .dead = function.scope_generation };770 self.short = .{ .dead = function.scope_generation };
803 tracking_log.debug("{} => {} (death)", .{ inst, self.* });771 tracking_log.debug("{} => {} (death)", .{ inst, self.* });
...@@ -2356,13 +2324,12 @@ fn genBodyBlock(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2356,13 +2324,12 @@ fn genBodyBlock(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2356}2324}
23572325
2358fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2326fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2359 @setEvalBranchQuota(28_700);2327 @setEvalBranchQuota(29_400);
2360 const pt = cg.pt;2328 const pt = cg.pt;
2361 const zcu = pt.zcu;2329 const zcu = pt.zcu;
2362 const ip = &zcu.intern_pool;2330 const ip = &zcu.intern_pool;
2363 const air_tags = cg.air.instructions.items(.tag);2331 const air_tags = cg.air.instructions.items(.tag);
2364 const air_datas = cg.air.instructions.items(.data);2332 const air_datas = cg.air.instructions.items(.data);
2365 const use_old = cg.target.ofmt == .coff;
23662333
2367 for (body) |inst| {2334 for (body) |inst| {
2368 if (cg.liveness.isUnused(inst) and !cg.air.mustLower(inst, ip)) continue;2335 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 {...@@ -2372,17 +2339,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2372 cg.reused_operands = .initEmpty();2339 cg.reused_operands = .initEmpty();
2373 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);2340 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
2374 switch (air_tags[@intFromEnum(inst)]) {2341 switch (air_tags[@intFromEnum(inst)]) {
2375 // zig fmt: off2342 .select => try cg.airSelect(inst),
2376 .select => try cg.airSelect(inst),
2377 .shuffle_one, .shuffle_two => @panic("x86_64 TODO: shuffle_one/shuffle_two"),2343 .shuffle_one, .shuffle_two => @panic("x86_64 TODO: shuffle_one/shuffle_two"),
2378 // zig fmt: on
23792344
2380 .arg => try cg.airArg(inst),2345 .arg => try cg.airArg(inst),
2381 .add, .add_optimized, .add_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) {2346 .add, .add_optimized, .add_wrap => |air_tag| {
2382 else => unreachable,
2383 .add, .add_optimized => .add,
2384 .add_wrap => .add_wrap,
2385 }) else {
2386 const bin_op = air_datas[@intFromEnum(inst)].bin_op;2347 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2387 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });2348 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2388 var res: [1]Temp = undefined;2349 var res: [1]Temp = undefined;
...@@ -3393,7 +3354,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3393,7 +3354,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3393 .any,3354 .any,
3394 },3355 },
3395 .patterns = &.{3356 .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 } },
3397 },3362 },
3398 .call_frame = .{ .alignment = .@"16" },3363 .call_frame = .{ .alignment = .@"16" },
3399 .extra_temps = .{3364 .extra_temps = .{
...@@ -3527,8 +3492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3527,8 +3492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3527 .call_frame = .{ .alignment = .@"16" },3492 .call_frame = .{ .alignment = .@"16" },
3528 .extra_temps = .{3493 .extra_temps = .{
3529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3530 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3495 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3531 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3496 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3532 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },3497 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3533 .unused,3498 .unused,
3534 .unused,3499 .unused,
...@@ -3563,8 +3528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3563,8 +3528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3563 .call_frame = .{ .alignment = .@"16" },3528 .call_frame = .{ .alignment = .@"16" },
3564 .extra_temps = .{3529 .extra_temps = .{
3565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3566 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3531 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3567 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3532 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3568 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },3533 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3569 .unused,3534 .unused,
3570 .unused,3535 .unused,
...@@ -3600,8 +3565,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3600,8 +3565,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3600 .call_frame = .{ .alignment = .@"16" },3565 .call_frame = .{ .alignment = .@"16" },
3601 .extra_temps = .{3566 .extra_temps = .{
3602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3603 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3568 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3604 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3569 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3605 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },3570 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3606 .{ .type = .f16, .kind = .{ .reg = .ax } },3571 .{ .type = .f16, .kind = .{ .reg = .ax } },
3607 .unused,3572 .unused,
...@@ -3640,8 +3605,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3640,8 +3605,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3641 .{ .type = .f16, .kind = .{ .reg = .ax } },3606 .{ .type = .f16, .kind = .{ .reg = .ax } },
3642 .{ .type = .f32, .kind = .mem },3607 .{ .type = .f32, .kind = .mem },
3643 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3608 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3644 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3609 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3645 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },3610 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3646 .unused,3611 .unused,
3647 .unused,3612 .unused,
...@@ -4021,6 +3986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4021,6 +3986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },3986 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4022 } },3987 } },
4023 }, .{3988 }, .{
3989 .required_abi = .gnu,
4024 .required_features = .{ .x87, null, null, null },3990 .required_features = .{ .x87, null, null, null },
4025 .src_constraints = .{3991 .src_constraints = .{
4026 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },3992 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -4051,6 +4017,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4051,6 +4017,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4051 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },4017 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4052 } },4018 } },
4053 }, .{4019 }, .{
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,
4054 .required_features = .{ .x87, null, null, null },4058 .required_features = .{ .x87, null, null, null },
4055 .src_constraints = .{4059 .src_constraints = .{
4056 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },4060 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -4082,6 +4086,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4082,6 +4086,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4082 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },4086 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4083 } },4087 } },
4084 }, .{4088 }, .{
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,
4085 .required_features = .{ .x87, null, null, null },4128 .required_features = .{ .x87, null, null, null },
4086 .src_constraints = .{4129 .src_constraints = .{
4087 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },4130 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -4115,6 +4158,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4115,6 +4158,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4115 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },4158 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
4116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },4159 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4117 } },4160 } },
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 } },
4118 }, .{4202 }, .{
4119 .required_features = .{ .sse, null, null, null },4203 .required_features = .{ .sse, null, null, null },
4120 .src_constraints = .{4204 .src_constraints = .{
...@@ -4123,7 +4207,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4123,7 +4207,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4123 .any,4207 .any,
4124 },4208 },
4125 .patterns = &.{4209 .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 } },
4127 },4215 },
4128 .call_frame = .{ .alignment = .@"16" },4216 .call_frame = .{ .alignment = .@"16" },
4129 .extra_temps = .{4217 .extra_temps = .{
...@@ -4157,8 +4245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4157,8 +4245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4157 .call_frame = .{ .alignment = .@"16" },4245 .call_frame = .{ .alignment = .@"16" },
4158 .extra_temps = .{4246 .extra_temps = .{
4159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4160 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },4248 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4161 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },4249 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4162 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },4250 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4163 .unused,4251 .unused,
4164 .unused,4252 .unused,
...@@ -4192,8 +4280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4192,8 +4280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4192 .call_frame = .{ .alignment = .@"16" },4280 .call_frame = .{ .alignment = .@"16" },
4193 .extra_temps = .{4281 .extra_temps = .{
4194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4195 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },4283 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4196 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },4284 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4197 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },4285 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4198 .unused,4286 .unused,
4199 .unused,4287 .unused,
...@@ -4227,8 +4315,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4227,8 +4315,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4227 .call_frame = .{ .alignment = .@"16" },4315 .call_frame = .{ .alignment = .@"16" },
4228 .extra_temps = .{4316 .extra_temps = .{
4229 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4230 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },4318 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4231 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },4319 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4232 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },4320 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4233 .unused,4321 .unused,
4234 .unused,4322 .unused,
...@@ -4273,7 +4361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4273,7 +4361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4273 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);4361 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4274 },4362 },
4275 .add_safe => unreachable,4363 .add_safe => unreachable,
4276 .add_sat => |air_tag| if (use_old) try cg.airAddSat(inst) else {4364 .add_sat => |air_tag| {
4277 const bin_op = air_datas[@intFromEnum(inst)].bin_op;4365 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
4278 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });4366 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
4279 var res: [1]Temp = undefined;4367 var res: [1]Temp = undefined;
...@@ -12838,11 +12926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12838,11 +12926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12838 };12926 };
12839 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);12927 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
12840 },12928 },
12841 .sub, .sub_optimized, .sub_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) {12929 .sub, .sub_optimized, .sub_wrap => |air_tag| {
12842 else => unreachable,
12843 .sub, .sub_optimized => .sub,
12844 .sub_wrap => .sub_wrap,
12845 }) else {
12846 const bin_op = air_datas[@intFromEnum(inst)].bin_op;12930 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
12847 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });12931 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
12848 var res: [1]Temp = undefined;12932 var res: [1]Temp = undefined;
...@@ -13825,7 +13909,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13825,7 +13909,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13825 .any,13909 .any,
13826 },13910 },
13827 .patterns = &.{13911 .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 } },
13829 },13917 },
13830 .call_frame = .{ .alignment = .@"16" },13918 .call_frame = .{ .alignment = .@"16" },
13831 .extra_temps = .{13919 .extra_temps = .{
...@@ -13959,8 +14047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13959,8 +14047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13959 .call_frame = .{ .alignment = .@"16" },14047 .call_frame = .{ .alignment = .@"16" },
13960 .extra_temps = .{14048 .extra_temps = .{
13961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13962 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },14050 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
13963 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },14051 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
13964 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },14052 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
13965 .unused,14053 .unused,
13966 .unused,14054 .unused,
...@@ -13995,8 +14083,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13995,8 +14083,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13995 .call_frame = .{ .alignment = .@"16" },14083 .call_frame = .{ .alignment = .@"16" },
13996 .extra_temps = .{14084 .extra_temps = .{
13997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13998 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },14086 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
13999 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },14087 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
14000 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },14088 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14001 .unused,14089 .unused,
14002 .unused,14090 .unused,
...@@ -14032,8 +14120,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14032,8 +14120,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14032 .call_frame = .{ .alignment = .@"16" },14120 .call_frame = .{ .alignment = .@"16" },
14033 .extra_temps = .{14121 .extra_temps = .{
14034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14035 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },14123 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14036 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },14124 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
14037 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },14125 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14038 .{ .type = .f16, .kind = .{ .reg = .ax } },14126 .{ .type = .f16, .kind = .{ .reg = .ax } },
14039 .unused,14127 .unused,
...@@ -14072,8 +14160,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14072,8 +14160,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14073 .{ .type = .f16, .kind = .{ .reg = .ax } },14161 .{ .type = .f16, .kind = .{ .reg = .ax } },
14074 .{ .type = .f32, .kind = .mem },14162 .{ .type = .f32, .kind = .mem },
14075 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },14163 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14076 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },14164 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
14077 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },14165 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14078 .unused,14166 .unused,
14079 .unused,14167 .unused,
...@@ -14442,6 +14530,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14442,6 +14530,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14442 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14443 } },14531 } },
14444 }, .{14532 }, .{
14533 .required_abi = .gnu,
14445 .required_features = .{ .x87, null, null, null },14534 .required_features = .{ .x87, null, null, null },
14446 .src_constraints = .{14535 .src_constraints = .{
14447 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },14536 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -14472,6 +14561,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14472,6 +14561,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14472 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },14561 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14473 } },14562 } },
14474 }, .{14563 }, .{
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,
14475 .required_features = .{ .x87, null, null, null },14602 .required_features = .{ .x87, null, null, null },
14476 .src_constraints = .{14603 .src_constraints = .{
14477 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },14604 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -14501,6 +14628,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14501,6 +14628,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14501 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },14628 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14502 } },14629 } },
14503 }, .{14630 }, .{
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,
14504 .required_features = .{ .x87, null, null, null },14668 .required_features = .{ .x87, null, null, null },
14505 .src_constraints = .{14669 .src_constraints = .{
14506 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },14670 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -14531,6 +14695,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14531,6 +14695,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14531 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },14695 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14532 } },14696 } },
14533 }, .{14697 }, .{
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,
14534 .required_features = .{ .x87, null, null, null },14736 .required_features = .{ .x87, null, null, null },
14535 .src_constraints = .{14737 .src_constraints = .{
14536 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },14738 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -14564,6 +14766,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14564,6 +14766,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14564 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },14766 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
14565 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14566 } },14768 } },
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 } },
14567 }, .{14810 }, .{
14568 .required_features = .{ .sse, null, null, null },14811 .required_features = .{ .sse, null, null, null },
14569 .src_constraints = .{14812 .src_constraints = .{
...@@ -14572,7 +14815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14572,7 +14815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14572 .any,14815 .any,
14573 },14816 },
14574 .patterns = &.{14817 .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 } },
14576 },14823 },
14577 .call_frame = .{ .alignment = .@"16" },14824 .call_frame = .{ .alignment = .@"16" },
14578 .extra_temps = .{14825 .extra_temps = .{
...@@ -14606,8 +14853,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14606,8 +14853,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14606 .call_frame = .{ .alignment = .@"16" },14853 .call_frame = .{ .alignment = .@"16" },
14607 .extra_temps = .{14854 .extra_temps = .{
14608 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14609 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },14856 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14610 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },14857 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
14611 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },14858 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14612 .unused,14859 .unused,
14613 .unused,14860 .unused,
...@@ -14641,8 +14888,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14641,8 +14888,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14641 .call_frame = .{ .alignment = .@"16" },14888 .call_frame = .{ .alignment = .@"16" },
14642 .extra_temps = .{14889 .extra_temps = .{
14643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14644 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },14891 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14645 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },14892 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
14646 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },14893 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14647 .unused,14894 .unused,
14648 .unused,14895 .unused,
...@@ -14676,8 +14923,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14676,8 +14923,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14676 .call_frame = .{ .alignment = .@"16" },14923 .call_frame = .{ .alignment = .@"16" },
14677 .extra_temps = .{14924 .extra_temps = .{
14678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14679 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },14926 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14680 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },14927 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
14681 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },14928 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14682 .unused,14929 .unused,
14683 .unused,14930 .unused,
...@@ -14722,7 +14969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14722,7 +14969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14722 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);14969 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
14723 },14970 },
14724 .sub_safe => unreachable,14971 .sub_safe => unreachable,
14725 .sub_sat => |air_tag| if (use_old) try cg.airSubSat(inst) else {14972 .sub_sat => |air_tag| {
14726 const bin_op = air_datas[@intFromEnum(inst)].bin_op;14973 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
14727 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });14974 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
14728 var res: [1]Temp = undefined;14975 var res: [1]Temp = undefined;
...@@ -21556,7 +21803,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21556,7 +21803,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21556 };21803 };
21557 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);21804 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21558 },21805 },
21559 .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else {21806 .mul, .mul_optimized => |air_tag| {
21560 const bin_op = air_datas[@intFromEnum(inst)].bin_op;21807 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
21561 const ty = cg.typeOf(bin_op.lhs);21808 const ty = cg.typeOf(bin_op.lhs);
21562 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });21809 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 {...@@ -23355,7 +23602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23355 .any,23602 .any,
23356 },23603 },
23357 .patterns = &.{23604 .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 } },
23359 },23610 },
23360 .call_frame = .{ .alignment = .@"16" },23611 .call_frame = .{ .alignment = .@"16" },
23361 .extra_temps = .{23612 .extra_temps = .{
...@@ -23489,8 +23740,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23489,8 +23740,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23489 .call_frame = .{ .alignment = .@"16" },23740 .call_frame = .{ .alignment = .@"16" },
23490 .extra_temps = .{23741 .extra_temps = .{
23491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23492 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23743 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23493 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23744 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
23494 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },23745 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23495 .unused,23746 .unused,
23496 .unused,23747 .unused,
...@@ -23525,8 +23776,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23525,8 +23776,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23525 .call_frame = .{ .alignment = .@"16" },23776 .call_frame = .{ .alignment = .@"16" },
23526 .extra_temps = .{23777 .extra_temps = .{
23527 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23779 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23780 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
23530 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },23781 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23531 .unused,23782 .unused,
23532 .unused,23783 .unused,
...@@ -23562,8 +23813,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23562,8 +23813,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23562 .call_frame = .{ .alignment = .@"16" },23813 .call_frame = .{ .alignment = .@"16" },
23563 .extra_temps = .{23814 .extra_temps = .{
23564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23816 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23566 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23817 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
23567 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },23818 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23568 .{ .type = .f16, .kind = .{ .reg = .ax } },23819 .{ .type = .f16, .kind = .{ .reg = .ax } },
23569 .unused,23820 .unused,
...@@ -23602,8 +23853,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23602,8 +23853,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23853 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23603 .{ .type = .f16, .kind = .{ .reg = .ax } },23854 .{ .type = .f16, .kind = .{ .reg = .ax } },
23604 .{ .type = .f32, .kind = .mem },23855 .{ .type = .f32, .kind = .mem },
23605 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23856 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23606 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23857 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
23607 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },23858 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23608 .unused,23859 .unused,
23609 .unused,23860 .unused,
...@@ -23983,6 +24234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23983,6 +24234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23983 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },24234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23984 } },24235 } },
23985 }, .{24236 }, .{
24237 .required_abi = .gnu,
23986 .required_features = .{ .x87, null, null, null },24238 .required_features = .{ .x87, null, null, null },
23987 .src_constraints = .{24239 .src_constraints = .{
23988 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },24240 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -24013,6 +24265,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24013,6 +24265,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24013 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },24265 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24014 } },24266 } },
24015 }, .{24267 }, .{
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,
24016 .required_features = .{ .x87, null, null, null },24306 .required_features = .{ .x87, null, null, null },
24017 .src_constraints = .{24307 .src_constraints = .{
24018 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },24308 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -24044,6 +24334,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24044,6 +24334,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24044 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },24334 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24045 } },24335 } },
24046 }, .{24336 }, .{
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,
24047 .required_features = .{ .x87, null, null, null },24376 .required_features = .{ .x87, null, null, null },
24048 .src_constraints = .{24377 .src_constraints = .{
24049 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },24378 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -24077,6 +24406,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24077,6 +24406,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24077 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },24406 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24078 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },24407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24079 } },24408 } },
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 } },
24080 }, .{24450 }, .{
24081 .required_features = .{ .sse, null, null, null },24451 .required_features = .{ .sse, null, null, null },
24082 .src_constraints = .{24452 .src_constraints = .{
...@@ -24085,7 +24455,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24085,7 +24455,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24085 .any,24455 .any,
24086 },24456 },
24087 .patterns = &.{24457 .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 } },
24089 },24463 },
24090 .call_frame = .{ .alignment = .@"16" },24464 .call_frame = .{ .alignment = .@"16" },
24091 .extra_temps = .{24465 .extra_temps = .{
...@@ -24119,8 +24493,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24119,8 +24493,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24119 .call_frame = .{ .alignment = .@"16" },24493 .call_frame = .{ .alignment = .@"16" },
24120 .extra_temps = .{24494 .extra_temps = .{
24121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24122 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },24496 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
24123 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },24497 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
24124 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },24498 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24125 .unused,24499 .unused,
24126 .unused,24500 .unused,
...@@ -24154,8 +24528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24154,8 +24528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24154 .call_frame = .{ .alignment = .@"16" },24528 .call_frame = .{ .alignment = .@"16" },
24155 .extra_temps = .{24529 .extra_temps = .{
24156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24157 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },24531 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
24158 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },24532 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
24159 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },24533 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24160 .unused,24534 .unused,
24161 .unused,24535 .unused,
...@@ -24189,8 +24563,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24189,8 +24563,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24189 .call_frame = .{ .alignment = .@"16" },24563 .call_frame = .{ .alignment = .@"16" },
24190 .extra_temps = .{24564 .extra_temps = .{
24191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24192 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },24566 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
24193 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },24567 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
24194 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },24568 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24195 .unused,24569 .unused,
24196 .unused,24570 .unused,
...@@ -24223,7 +24597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24223,7 +24597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24223 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);24597 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
24224 },24598 },
24225 .mul_safe => unreachable,24599 .mul_safe => unreachable,
24226 .mul_wrap => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else {24600 .mul_wrap => |air_tag| {
24227 const bin_op = air_datas[@intFromEnum(inst)].bin_op;24601 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
24228 const ty = cg.typeOf(bin_op.lhs);24602 const ty = cg.typeOf(bin_op.lhs);
24229 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });24603 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 {...@@ -26047,7 +26421,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26047 .any,26421 .any,
26048 },26422 },
26049 .patterns = &.{26423 .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 } },
26051 },26429 },
26052 .call_frame = .{ .alignment = .@"16" },26430 .call_frame = .{ .alignment = .@"16" },
26053 .extra_temps = .{26431 .extra_temps = .{
...@@ -26181,8 +26559,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26181,8 +26559,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26181 .call_frame = .{ .alignment = .@"16" },26559 .call_frame = .{ .alignment = .@"16" },
26182 .extra_temps = .{26560 .extra_temps = .{
26183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26184 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26562 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26185 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26563 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26186 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },26564 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26187 .unused,26565 .unused,
26188 .unused,26566 .unused,
...@@ -26217,8 +26595,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26217,8 +26595,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26217 .call_frame = .{ .alignment = .@"16" },26595 .call_frame = .{ .alignment = .@"16" },
26218 .extra_temps = .{26596 .extra_temps = .{
26219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26220 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26598 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26221 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26599 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26222 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },26600 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26223 .unused,26601 .unused,
26224 .unused,26602 .unused,
...@@ -26254,8 +26632,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26254,8 +26632,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26254 .call_frame = .{ .alignment = .@"16" },26632 .call_frame = .{ .alignment = .@"16" },
26255 .extra_temps = .{26633 .extra_temps = .{
26256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26257 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26635 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26258 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26636 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26259 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },26637 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26260 .{ .type = .f16, .kind = .{ .reg = .ax } },26638 .{ .type = .f16, .kind = .{ .reg = .ax } },
26261 .unused,26639 .unused,
...@@ -26294,8 +26672,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26294,8 +26672,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26295 .{ .type = .f16, .kind = .{ .reg = .ax } },26673 .{ .type = .f16, .kind = .{ .reg = .ax } },
26296 .{ .type = .f32, .kind = .mem },26674 .{ .type = .f32, .kind = .mem },
26297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26675 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26298 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26676 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26299 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },26677 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26300 .unused,26678 .unused,
26301 .unused,26679 .unused,
...@@ -26777,7 +27155,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26777,7 +27155,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26777 .any,27155 .any,
26778 },27156 },
26779 .patterns = &.{27157 .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 } },
26781 },27163 },
26782 .call_frame = .{ .alignment = .@"16" },27164 .call_frame = .{ .alignment = .@"16" },
26783 .extra_temps = .{27165 .extra_temps = .{
...@@ -26811,8 +27193,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26811,8 +27193,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26811 .call_frame = .{ .alignment = .@"16" },27193 .call_frame = .{ .alignment = .@"16" },
26812 .extra_temps = .{27194 .extra_temps = .{
26813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26814 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27196 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26815 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27197 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26816 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },27198 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26817 .unused,27199 .unused,
26818 .unused,27200 .unused,
...@@ -26846,8 +27228,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26846,8 +27228,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26846 .call_frame = .{ .alignment = .@"16" },27228 .call_frame = .{ .alignment = .@"16" },
26847 .extra_temps = .{27229 .extra_temps = .{
26848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26849 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27231 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26850 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27232 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26851 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },27233 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26852 .unused,27234 .unused,
26853 .unused,27235 .unused,
...@@ -26881,8 +27263,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26881,8 +27263,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26881 .call_frame = .{ .alignment = .@"16" },27263 .call_frame = .{ .alignment = .@"16" },
26882 .extra_temps = .{27264 .extra_temps = .{
26883 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },27265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26884 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },27266 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26885 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },27267 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
26886 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },27268 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26887 .unused,27269 .unused,
26888 .unused,27270 .unused,
...@@ -26922,9 +27304,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26922,9 +27304,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26922 };27304 };
26923 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);27305 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
26924 },27306 },
26925 .mul_sat => |air_tag| if (use_old) try cg.airMulSat(inst) else fallback: {27307 .mul_sat => |air_tag| {
26926 const bin_op = air_datas[@intFromEnum(inst)].bin_op;27308 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
26927 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airMulSat(inst);
26928 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });27309 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
26929 var res: [1]Temp = undefined;27310 var res: [1]Temp = undefined;
26930 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{27311 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 {...@@ -32140,11 +32521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32140 };32521 };
32141 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);32522 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
32142 },32523 },
32143 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {32524 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| {
32144 else => unreachable,
32145 .div_float, .div_float_optimized => .div_float,
32146 .div_exact, .div_exact_optimized => .div_exact,
32147 }) else {
32148 const bin_op = air_datas[@intFromEnum(inst)].bin_op;32525 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
32149 const ty = cg.typeOf(bin_op.lhs);32526 const ty = cg.typeOf(bin_op.lhs);
32150 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });32527 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 {...@@ -32187,7 +32564,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32187 .any,32564 .any,
32188 },32565 },
32189 .patterns = &.{32566 .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 } },
32191 },32572 },
32192 .call_frame = .{ .alignment = .@"16" },32573 .call_frame = .{ .alignment = .@"16" },
32193 .extra_temps = .{32574 .extra_temps = .{
...@@ -32321,8 +32702,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32321,8 +32702,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32321 .call_frame = .{ .alignment = .@"16" },32702 .call_frame = .{ .alignment = .@"16" },
32322 .extra_temps = .{32703 .extra_temps = .{
32323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32324 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32705 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32325 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32706 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
32326 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },32707 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32327 .unused,32708 .unused,
32328 .unused,32709 .unused,
...@@ -32357,8 +32738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32357,8 +32738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32357 .call_frame = .{ .alignment = .@"16" },32738 .call_frame = .{ .alignment = .@"16" },
32358 .extra_temps = .{32739 .extra_temps = .{
32359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32360 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32741 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32361 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32742 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
32362 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },32743 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32363 .unused,32744 .unused,
32364 .unused,32745 .unused,
...@@ -32394,8 +32775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32394,8 +32775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32394 .call_frame = .{ .alignment = .@"16" },32775 .call_frame = .{ .alignment = .@"16" },
32395 .extra_temps = .{32776 .extra_temps = .{
32396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32777 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32778 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32398 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32779 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
32399 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },32780 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32400 .{ .type = .f16, .kind = .{ .reg = .ax } },32781 .{ .type = .f16, .kind = .{ .reg = .ax } },
32401 .unused,32782 .unused,
...@@ -32434,8 +32815,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32434,8 +32815,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32435 .{ .type = .f16, .kind = .{ .reg = .ax } },32816 .{ .type = .f16, .kind = .{ .reg = .ax } },
32436 .{ .type = .f32, .kind = .mem },32817 .{ .type = .f32, .kind = .mem },
32437 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32818 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32438 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32819 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
32439 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },32820 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32440 .unused,32821 .unused,
32441 .unused,32822 .unused,
...@@ -32805,6 +33186,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32805,6 +33186,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32806 } },33187 } },
32807 }, .{33188 }, .{
33189 .required_abi = .gnu,
32808 .required_features = .{ .x87, null, null, null },33190 .required_features = .{ .x87, null, null, null },
32809 .src_constraints = .{33191 .src_constraints = .{
32810 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },33192 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -32835,6 +33217,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32835,6 +33217,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32835 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },33217 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
32836 } },33218 } },
32837 }, .{33219 }, .{
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,
32838 .required_features = .{ .x87, null, null, null },33258 .required_features = .{ .x87, null, null, null },
32839 .src_constraints = .{33259 .src_constraints = .{
32840 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },33260 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -32864,6 +33284,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32864,6 +33284,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32864 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },33284 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
32865 } },33285 } },
32866 }, .{33286 }, .{
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,
32867 .required_features = .{ .x87, null, null, null },33324 .required_features = .{ .x87, null, null, null },
32868 .src_constraints = .{33325 .src_constraints = .{
32869 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },33326 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -32894,6 +33351,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32894,6 +33351,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32894 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },33351 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
32895 } },33352 } },
32896 }, .{33353 }, .{
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,
32897 .required_features = .{ .x87, null, null, null },33392 .required_features = .{ .x87, null, null, null },
32898 .src_constraints = .{33393 .src_constraints = .{
32899 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },33394 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -32927,6 +33422,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32927,6 +33422,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32927 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },33422 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },33423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32929 } },33424 } },
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 } },
32930 }, .{33466 }, .{
32931 .required_features = .{ .sse, null, null, null },33467 .required_features = .{ .sse, null, null, null },
32932 .src_constraints = .{33468 .src_constraints = .{
...@@ -32935,7 +33471,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32935,7 +33471,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32935 .any,33471 .any,
32936 },33472 },
32937 .patterns = &.{33473 .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 } },
32939 },33479 },
32940 .call_frame = .{ .alignment = .@"16" },33480 .call_frame = .{ .alignment = .@"16" },
32941 .extra_temps = .{33481 .extra_temps = .{
...@@ -32969,8 +33509,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32969,8 +33509,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32969 .call_frame = .{ .alignment = .@"16" },33509 .call_frame = .{ .alignment = .@"16" },
32970 .extra_temps = .{33510 .extra_temps = .{
32971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33511 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32972 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },33512 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32973 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },33513 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
32974 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },33514 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
32975 .unused,33515 .unused,
32976 .unused,33516 .unused,
...@@ -33004,8 +33544,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33004,8 +33544,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33004 .call_frame = .{ .alignment = .@"16" },33544 .call_frame = .{ .alignment = .@"16" },
33005 .extra_temps = .{33545 .extra_temps = .{
33006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33007 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },33547 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33008 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },33548 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33009 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },33549 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
33010 .unused,33550 .unused,
33011 .unused,33551 .unused,
...@@ -33039,8 +33579,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33039,8 +33579,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33039 .call_frame = .{ .alignment = .@"16" },33579 .call_frame = .{ .alignment = .@"16" },
33040 .extra_temps = .{33580 .extra_temps = .{
33041 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33042 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },33582 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33043 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },33583 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33044 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },33584 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
33045 .unused,33585 .unused,
33046 .unused,33586 .unused,
...@@ -33075,7 +33615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33075,7 +33615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33075 };33615 };
33076 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);33616 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
33077 },33617 },
33078 .div_trunc => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else {33618 .div_trunc => |air_tag| {
33079 const bin_op = air_datas[@intFromEnum(inst)].bin_op;33619 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
33080 const ty = cg.typeOf(bin_op.lhs);33620 const ty = cg.typeOf(bin_op.lhs);
33081 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });33621 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 {...@@ -33121,7 +33661,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33121 .any,33661 .any,
33122 },33662 },
33123 .patterns = &.{33663 .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 } },
33125 },33669 },
33126 .call_frame = .{ .alignment = .@"16" },33670 .call_frame = .{ .alignment = .@"16" },
33127 .extra_temps = .{33671 .extra_temps = .{
...@@ -33265,8 +33809,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33265,8 +33809,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33265 .call_frame = .{ .alignment = .@"16" },33809 .call_frame = .{ .alignment = .@"16" },
33266 .extra_temps = .{33810 .extra_temps = .{
33267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33268 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33812 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33269 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33813 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33270 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },33814 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33271 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },33815 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33272 .unused,33816 .unused,
...@@ -33302,8 +33846,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33302,8 +33846,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33302 .call_frame = .{ .alignment = .@"16" },33846 .call_frame = .{ .alignment = .@"16" },
33303 .extra_temps = .{33847 .extra_temps = .{
33304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33305 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33849 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33306 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33850 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33307 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },33851 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33308 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },33852 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33309 .unused,33853 .unused,
...@@ -33340,8 +33884,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33340,8 +33884,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33340 .call_frame = .{ .alignment = .@"16" },33884 .call_frame = .{ .alignment = .@"16" },
33341 .extra_temps = .{33885 .extra_temps = .{
33342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33343 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33887 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33344 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33888 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33345 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },33889 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33346 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },33890 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33347 .{ .type = .f16, .kind = .{ .reg = .ax } },33891 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -33381,8 +33925,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33381,8 +33925,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33382 .{ .type = .f16, .kind = .{ .reg = .ax } },33926 .{ .type = .f16, .kind = .{ .reg = .ax } },
33383 .{ .type = .f32, .kind = .mem },33927 .{ .type = .f32, .kind = .mem },
33384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33928 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33385 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33929 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33386 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },33930 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33387 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },33931 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33388 .unused,33932 .unused,
...@@ -33448,7 +33992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33448,7 +33992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33448 .any,33992 .any,
33449 },33993 },
33450 .patterns = &.{33994 .patterns = &.{
33451 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },33995 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
33452 },33996 },
33453 .call_frame = .{ .alignment = .@"16" },33997 .call_frame = .{ .alignment = .@"16" },
33454 .extra_temps = .{33998 .extra_temps = .{
...@@ -33515,7 +34059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33515,7 +34059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33515 .call_frame = .{ .alignment = .@"16" },34059 .call_frame = .{ .alignment = .@"16" },
33516 .extra_temps = .{34060 .extra_temps = .{
33517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33518 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },34062 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33519 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },34063 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
33520 .unused,34064 .unused,
33521 .unused,34065 .unused,
...@@ -33661,7 +34205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33661,7 +34205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33661 .any,34205 .any,
33662 },34206 },
33663 .patterns = &.{34207 .patterns = &.{
33664 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },34208 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
33665 },34209 },
33666 .call_frame = .{ .alignment = .@"16" },34210 .call_frame = .{ .alignment = .@"16" },
33667 .extra_temps = .{34211 .extra_temps = .{
...@@ -33691,7 +34235,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33691,7 +34235,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33691 .any,34235 .any,
33692 },34236 },
33693 .patterns = &.{34237 .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 } },
33695 },34243 },
33696 .call_frame = .{ .alignment = .@"16" },34244 .call_frame = .{ .alignment = .@"16" },
33697 .extra_temps = .{34245 .extra_temps = .{
...@@ -33842,7 +34390,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33842,7 +34390,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33842 .call_frame = .{ .alignment = .@"16" },34390 .call_frame = .{ .alignment = .@"16" },
33843 .extra_temps = .{34391 .extra_temps = .{
33844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33845 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },34393 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33846 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },34394 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
33847 .unused,34395 .unused,
33848 .unused,34396 .unused,
...@@ -33877,8 +34425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33877,8 +34425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33877 .call_frame = .{ .alignment = .@"16" },34425 .call_frame = .{ .alignment = .@"16" },
33878 .extra_temps = .{34426 .extra_temps = .{
33879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33880 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },34428 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33881 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },34429 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
33882 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },34430 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
33883 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },34431 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
33884 .unused,34432 .unused,
...@@ -33903,6 +34451,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33903,6 +34451,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34451 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33904 } },34452 } },
33905 }, .{34453 }, .{
34454 .required_abi = .gnu,
34455 .required_cc_abi = .sysv64,
33906 .required_features = .{ .x87, null, null, null },34456 .required_features = .{ .x87, null, null, null },
33907 .src_constraints = .{34457 .src_constraints = .{
33908 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },34458 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -33936,6 +34486,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33936,6 +34486,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33936 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },34486 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
33937 } },34487 } },
33938 }, .{34488 }, .{
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,
33939 .required_features = .{ .x87, null, null, null },34571 .required_features = .{ .x87, null, null, null },
33940 .src_constraints = .{34572 .src_constraints = .{
33941 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },34573 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -33973,6 +34605,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33973,6 +34605,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33973 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },34605 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },34606 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33975 } },34607 } },
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 } },
33976 }, .{34694 }, .{
33977 .required_features = .{ .sse, null, null, null },34695 .required_features = .{ .sse, null, null, null },
33978 .src_constraints = .{34696 .src_constraints = .{
...@@ -33981,7 +34699,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33981,7 +34699,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33981 .any,34699 .any,
33982 },34700 },
33983 .patterns = &.{34701 .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 } },
33985 },34707 },
33986 .call_frame = .{ .alignment = .@"16" },34708 .call_frame = .{ .alignment = .@"16" },
33987 .extra_temps = .{34709 .extra_temps = .{
...@@ -34016,8 +34738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34016,8 +34738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34016 .call_frame = .{ .alignment = .@"16" },34738 .call_frame = .{ .alignment = .@"16" },
34017 .extra_temps = .{34739 .extra_temps = .{
34018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34019 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },34741 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34020 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },34742 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34021 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },34743 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34022 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },34744 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34023 .unused,34745 .unused,
...@@ -34052,8 +34774,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34052,8 +34774,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34052 .call_frame = .{ .alignment = .@"16" },34774 .call_frame = .{ .alignment = .@"16" },
34053 .extra_temps = .{34775 .extra_temps = .{
34054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },34777 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34056 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },34778 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34057 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },34779 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34058 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },34780 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34059 .unused,34781 .unused,
...@@ -34088,8 +34810,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34088,8 +34810,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34088 .call_frame = .{ .alignment = .@"16" },34810 .call_frame = .{ .alignment = .@"16" },
34089 .extra_temps = .{34811 .extra_temps = .{
34090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34091 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },34813 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34092 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },34814 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34093 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },34815 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34094 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },34816 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34095 .unused,34817 .unused,
...@@ -34124,11 +34846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34124,11 +34846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34124 };34846 };
34125 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);34847 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
34126 },34848 },
34127 .div_trunc_optimized, .div_floor_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {34849 .div_trunc_optimized, .div_floor_optimized => |air_tag| {
34128 else => unreachable,
34129 .div_trunc_optimized => .div_trunc,
34130 .div_floor_optimized => .div_floor,
34131 }) else {
34132 const bin_op = air_datas[@intFromEnum(inst)].bin_op;34850 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
34133 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });34851 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
34134 var res: [1]Temp = undefined;34852 var res: [1]Temp = undefined;
...@@ -34177,7 +34895,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34177,7 +34895,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34177 .any,34895 .any,
34178 },34896 },
34179 .patterns = &.{34897 .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 } },
34181 },34903 },
34182 .call_frame = .{ .alignment = .@"16" },34904 .call_frame = .{ .alignment = .@"16" },
34183 .extra_temps = .{34905 .extra_temps = .{
...@@ -34319,8 +35041,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34319,8 +35041,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34319 .call_frame = .{ .alignment = .@"16" },35041 .call_frame = .{ .alignment = .@"16" },
34320 .extra_temps = .{35042 .extra_temps = .{
34321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35044 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34323 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35045 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34324 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },35046 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34325 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35047 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34326 else => unreachable,35048 else => unreachable,
...@@ -34360,8 +35082,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34360,8 +35082,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34360 .call_frame = .{ .alignment = .@"16" },35082 .call_frame = .{ .alignment = .@"16" },
34361 .extra_temps = .{35083 .extra_temps = .{
34362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35084 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34363 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35085 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34364 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35086 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34365 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },35087 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34366 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35088 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34367 else => unreachable,35089 else => unreachable,
...@@ -34402,8 +35124,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34402,8 +35124,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34402 .call_frame = .{ .alignment = .@"16" },35124 .call_frame = .{ .alignment = .@"16" },
34403 .extra_temps = .{35125 .extra_temps = .{
34404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35126 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34405 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35127 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34406 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35128 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34407 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },35129 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34408 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35130 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34409 else => unreachable,35131 else => unreachable,
...@@ -34447,8 +35169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34447,8 +35169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34447 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34448 .{ .type = .f16, .kind = .{ .reg = .ax } },35170 .{ .type = .f16, .kind = .{ .reg = .ax } },
34449 .{ .type = .f32, .kind = .mem },35171 .{ .type = .f32, .kind = .mem },
34450 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35172 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34451 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35173 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34452 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },35174 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34453 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35175 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34454 else => unreachable,35176 else => unreachable,
...@@ -34518,7 +35240,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34518,7 +35240,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34518 .any,35240 .any,
34519 },35241 },
34520 .patterns = &.{35242 .patterns = &.{
34521 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },35243 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
34522 },35244 },
34523 .call_frame = .{ .alignment = .@"16" },35245 .call_frame = .{ .alignment = .@"16" },
34524 .extra_temps = .{35246 .extra_temps = .{
...@@ -34589,7 +35311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34589,7 +35311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34589 .call_frame = .{ .alignment = .@"16" },35311 .call_frame = .{ .alignment = .@"16" },
34590 .extra_temps = .{35312 .extra_temps = .{
34591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34592 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },35314 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34593 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35315 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34594 else => unreachable,35316 else => unreachable,
34595 .zero => "truncf",35317 .zero => "truncf",
...@@ -34739,7 +35461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34739,7 +35461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34739 .any,35461 .any,
34740 },35462 },
34741 .patterns = &.{35463 .patterns = &.{
34742 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },35464 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
34743 },35465 },
34744 .call_frame = .{ .alignment = .@"16" },35466 .call_frame = .{ .alignment = .@"16" },
34745 .extra_temps = .{35467 .extra_temps = .{
...@@ -34773,7 +35495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34773,7 +35495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34773 .any,35495 .any,
34774 },35496 },
34775 .patterns = &.{35497 .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 } },
34777 },35503 },
34778 .call_frame = .{ .alignment = .@"16" },35504 .call_frame = .{ .alignment = .@"16" },
34779 .extra_temps = .{35505 .extra_temps = .{
...@@ -34928,7 +35654,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34928,7 +35654,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34928 .call_frame = .{ .alignment = .@"16" },35654 .call_frame = .{ .alignment = .@"16" },
34929 .extra_temps = .{35655 .extra_temps = .{
34930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35656 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34931 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },35657 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34932 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35658 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34933 else => unreachable,35659 else => unreachable,
34934 .zero => "trunc",35660 .zero => "trunc",
...@@ -34967,8 +35693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34967,8 +35693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34967 .call_frame = .{ .alignment = .@"16" },35693 .call_frame = .{ .alignment = .@"16" },
34968 .extra_temps = .{35694 .extra_temps = .{
34969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34970 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },35696 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34971 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },35697 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34972 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },35698 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
34973 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35699 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34974 else => unreachable,35700 else => unreachable,
...@@ -34997,6 +35723,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34997,6 +35723,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34998 } },35724 } },
34999 }, .{35725 }, .{
35726 .required_abi = .gnu,
35727 .required_cc_abi = .sysv64,
35000 .required_features = .{ .x87, null, null, null },35728 .required_features = .{ .x87, null, null, null },
35001 .src_constraints = .{35729 .src_constraints = .{
35002 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },35730 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -35004,7 +35732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35004,7 +35732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35004 .any,35732 .any,
35005 },35733 },
35006 .patterns = &.{35734 .patterns = &.{
35007 .{ .src = .{ .mem, .mem, .none } },35735 .{ .src = .{ .to_mem, .to_mem, .none } },
35008 },35736 },
35009 .call_frame = .{ .size = 16, .alignment = .@"16" },35737 .call_frame = .{ .size = 16, .alignment = .@"16" },
35010 .extra_temps = .{35738 .extra_temps = .{
...@@ -35034,6 +35762,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35034,6 +35762,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35034 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },35762 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
35035 } },35763 } },
35036 }, .{35764 }, .{
35765 .required_abi = .gnu,
35766 .required_cc_abi = .win64,
35037 .required_features = .{ .x87, null, null, null },35767 .required_features = .{ .x87, null, null, null },
35038 .src_constraints = .{35768 .src_constraints = .{
35039 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },35769 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -35041,12 +35771,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35041,12 +35771,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35041 .any,35771 .any,
35042 },35772 },
35043 .patterns = &.{35773 .patterns = &.{
35044 .{ .src = .{ .to_x87, .mem, .none } },35774 .{ .src = .{ .to_mem, .to_mem, .none } },
35045 },35775 },
35046 .call_frame = .{ .size = 16, .alignment = .@"16" },35776 .call_frame = .{ .alignment = .@"16" },
35047 .extra_temps = .{35777 .extra_temps = .{
35778 .{ .type = .f80, .kind = .{ .reg = .st6 } },
35048 .{ .type = .f80, .kind = .{ .reg = .st7 } },35779 .{ .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 } } },
35050 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35782 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35051 else => unreachable,35783 else => unreachable,
35052 .zero => "__truncx",35784 .zero => "__truncx",
...@@ -35058,18 +35790,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35058,18 +35790,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35058 .unused,35790 .unused,
35059 .unused,35791 .unused,
35060 .unused,35792 .unused,
35061 .unused,
35062 .unused,
35063 },35793 },
35064 .dst_temps = .{ .{ .reg = .st0 }, .unused },35794 .dst_temps = .{ .mem, .unused },
35065 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35066 .each = .{ .once = &.{35796 .each = .{ .once = &.{
35067 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },35797 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
35068 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },35798 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
35069 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },35799 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
35070 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },35800 .{ ._, .f_p, .div, ._, ._, ._, ._ },
35801 .{ ._, .f_p, .st, .lea(.tmp2t), ._, ._, ._ },
35802 .{ ._, ._, .mov, .tmp3p, .tmp2p, ._, ._ },
35803 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
35071 } },35804 } },
35072 }, .{35805 }, .{
35806 .required_abi = .msvc,
35807 .required_cc_abi = .win64,
35073 .required_features = .{ .x87, null, null, null },35808 .required_features = .{ .x87, null, null, null },
35074 .src_constraints = .{35809 .src_constraints = .{
35075 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },35810 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -35077,13 +35812,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35077,13 +35812,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35077 .any,35812 .any,
35078 },35813 },
35079 .patterns = &.{35814 .patterns = &.{
35080 .{ .src = .{ .mem, .to_x87, .none } },35815 .{ .src = .{ .to_mem, .to_mem, .none } },
35081 .{ .src = .{ .to_x87, .to_x87, .none } },
35082 },35816 },
35083 .call_frame = .{ .size = 16, .alignment = .@"16" },35817 .call_frame = .{ .alignment = .@"16" },
35084 .extra_temps = .{35818 .extra_temps = .{
35819 .{ .type = .f80, .kind = .{ .reg = .st6 } },
35085 .{ .type = .f80, .kind = .{ .reg = .st7 } },35820 .{ .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 } } },
35087 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {35824 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35088 else => unreachable,35825 else => unreachable,
35089 .zero => "__truncx",35826 .zero => "__truncx",
...@@ -35094,19 +35831,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35094,19 +35831,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35094 .unused,35831 .unused,
35095 .unused,35832 .unused,
35096 .unused,35833 .unused,
35097 .unused,
35098 .unused,
35099 .unused,
35100 },35834 },
35101 .dst_temps = .{ .{ .reg = .st0 }, .unused },35835 .dst_temps = .{ .mem, .unused },
35102 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },35836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35103 .each = .{ .once = &.{35837 .each = .{ .once = &.{
35104 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },35838 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
35105 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },35839 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
35106 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },35840 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
35107 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },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, ._, ._, ._ },
35108 } },35851 } },
35109 }, .{35852 }, .{
35853 .required_abi = .gnu,
35854 .required_cc_abi = .sysv64,
35110 .required_features = .{ .x87, null, null, null },35855 .required_features = .{ .x87, null, null, null },
35111 .src_constraints = .{35856 .src_constraints = .{
35112 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },35857 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -35148,6 +35893,100 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35148,6 +35893,100 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35148 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },35893 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },35894 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35150 } },35895 } },
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 } },
35151 }, .{35990 }, .{
35152 .required_features = .{ .sse, null, null, null },35991 .required_features = .{ .sse, null, null, null },
35153 .src_constraints = .{35992 .src_constraints = .{
...@@ -35156,7 +35995,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35156,7 +35995,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35156 .any,35995 .any,
35157 },35996 },
35158 .patterns = &.{35997 .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 } },
35160 },36003 },
35161 .call_frame = .{ .alignment = .@"16" },36004 .call_frame = .{ .alignment = .@"16" },
35162 .extra_temps = .{36005 .extra_temps = .{
...@@ -35195,8 +36038,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35195,8 +36038,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35195 .call_frame = .{ .alignment = .@"16" },36038 .call_frame = .{ .alignment = .@"16" },
35196 .extra_temps = .{36039 .extra_temps = .{
35197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35198 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36041 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35199 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },36042 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35200 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },36043 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35201 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {36044 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35202 else => unreachable,36045 else => unreachable,
...@@ -35235,8 +36078,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35235,8 +36078,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35235 .call_frame = .{ .alignment = .@"16" },36078 .call_frame = .{ .alignment = .@"16" },
35236 .extra_temps = .{36079 .extra_temps = .{
35237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35238 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36081 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35239 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },36082 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35240 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },36083 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35241 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {36084 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35242 else => unreachable,36085 else => unreachable,
...@@ -35275,8 +36118,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35275,8 +36118,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35275 .call_frame = .{ .alignment = .@"16" },36118 .call_frame = .{ .alignment = .@"16" },
35276 .extra_temps = .{36119 .extra_temps = .{
35277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35278 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36121 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35279 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },36122 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35280 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },36123 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35281 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {36124 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35282 else => unreachable,36125 else => unreachable,
...@@ -35314,7 +36157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35314,7 +36157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35314 };36157 };
35315 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);36158 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
35316 },36159 },
35317 .div_floor => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else {36160 .div_floor => |air_tag| {
35318 const bin_op = air_datas[@intFromEnum(inst)].bin_op;36161 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
35319 const ty = cg.typeOf(bin_op.lhs);36162 const ty = cg.typeOf(bin_op.lhs);
35320 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });36163 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 {...@@ -35460,15 +36303,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35460 .{ ._, ._, .adc, .dst0q, .si(-1), ._, ._ },36303 .{ ._, ._, .adc, .dst0q, .si(-1), ._, ._ },
35461 } },36304 } },
35462 }, .{36305 }, .{
35463 .required_features = .{ .@"64bit", null, null, null },36306 .required_cc_abi = .sysv64,
35464 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },36307 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
35465 .patterns = &.{36308 .patterns = &.{
35466 .{ .src = .{ .mem, .mem, .none } },36309 .{ .src = .{ .mem, .mem, .none } },
35467 },36310 },
35468 .call_frame = .{ .alignment = .@"16" },36311 .call_frame = .{ .alignment = .@"16" },
35469 .extra_temps = .{36312 .extra_temps = .{
35470 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .at = 0 } } },36313 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35471 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },36314 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
35472 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },36315 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
35473 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },36316 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35474 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },36317 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
...@@ -35479,7 +36322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35479,7 +36322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35479 .unused,36322 .unused,
35480 .unused,36323 .unused,
35481 },36324 },
35482 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },36325 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
35483 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },36326 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35484 .each = .{ .once = &.{36327 .each = .{ .once = &.{
35485 .{ ._, ._, .mov, .tmp0q0, .mem(.src0q), ._, ._ },36328 .{ ._, ._, .mov, .tmp0q0, .mem(.src0q), ._, ._ },
...@@ -35515,10 +36358,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35515,10 +36358,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35515 },36358 },
35516 .call_frame = .{ .alignment = .@"16" },36359 .call_frame = .{ .alignment = .@"16" },
35517 .extra_temps = .{36360 .extra_temps = .{
35518 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },36361 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35519 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },36362 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35520 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },36363 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
35521 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },36364 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
35522 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },36365 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
35523 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },36366 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
35524 .{ .kind = .{ .mem_of_type = .dst0 } },36367 .{ .kind = .{ .mem_of_type = .dst0 } },
...@@ -35597,7 +36440,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35597,7 +36440,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35597 .any,36440 .any,
35598 },36441 },
35599 .patterns = &.{36442 .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 } },
35601 },36448 },
35602 .call_frame = .{ .alignment = .@"16" },36449 .call_frame = .{ .alignment = .@"16" },
35603 .extra_temps = .{36450 .extra_temps = .{
...@@ -35741,8 +36588,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35741,8 +36588,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35741 .call_frame = .{ .alignment = .@"16" },36588 .call_frame = .{ .alignment = .@"16" },
35742 .extra_temps = .{36589 .extra_temps = .{
35743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35744 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36591 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35745 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },36592 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35746 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },36593 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35747 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },36594 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35748 .unused,36595 .unused,
...@@ -35778,8 +36625,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35778,8 +36625,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35778 .call_frame = .{ .alignment = .@"16" },36625 .call_frame = .{ .alignment = .@"16" },
35779 .extra_temps = .{36626 .extra_temps = .{
35780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35781 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36628 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35782 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },36629 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35783 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },36630 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35784 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },36631 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35785 .unused,36632 .unused,
...@@ -35816,8 +36663,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35816,8 +36663,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35816 .call_frame = .{ .alignment = .@"16" },36663 .call_frame = .{ .alignment = .@"16" },
35817 .extra_temps = .{36664 .extra_temps = .{
35818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35819 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36666 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35820 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },36667 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35821 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },36668 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35822 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },36669 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35823 .{ .type = .f16, .kind = .{ .reg = .ax } },36670 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -35857,8 +36704,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35857,8 +36704,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35857 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35858 .{ .type = .f16, .kind = .{ .reg = .ax } },36705 .{ .type = .f16, .kind = .{ .reg = .ax } },
35859 .{ .type = .f32, .kind = .mem },36706 .{ .type = .f32, .kind = .mem },
35860 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },36707 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35861 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },36708 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35862 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },36709 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35863 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },36710 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35864 .unused,36711 .unused,
...@@ -35924,7 +36771,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35924,7 +36771,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35924 .any,36771 .any,
35925 },36772 },
35926 .patterns = &.{36773 .patterns = &.{
35927 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },36774 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
35928 },36775 },
35929 .call_frame = .{ .alignment = .@"16" },36776 .call_frame = .{ .alignment = .@"16" },
35930 .extra_temps = .{36777 .extra_temps = .{
...@@ -35991,7 +36838,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35991,7 +36838,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35991 .call_frame = .{ .alignment = .@"16" },36838 .call_frame = .{ .alignment = .@"16" },
35992 .extra_temps = .{36839 .extra_temps = .{
35993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35994 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },36841 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35995 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },36842 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
35996 .unused,36843 .unused,
35997 .unused,36844 .unused,
...@@ -36137,7 +36984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36137,7 +36984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36137 .any,36984 .any,
36138 },36985 },
36139 .patterns = &.{36986 .patterns = &.{
36140 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },36987 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
36141 },36988 },
36142 .call_frame = .{ .alignment = .@"16" },36989 .call_frame = .{ .alignment = .@"16" },
36143 .extra_temps = .{36990 .extra_temps = .{
...@@ -36167,7 +37014,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36167,7 +37014,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36167 .any,37014 .any,
36168 },37015 },
36169 .patterns = &.{37016 .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 } },
36171 },37022 },
36172 .call_frame = .{ .alignment = .@"16" },37023 .call_frame = .{ .alignment = .@"16" },
36173 .extra_temps = .{37024 .extra_temps = .{
...@@ -36318,7 +37169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36318,7 +37169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36318 .call_frame = .{ .alignment = .@"16" },37169 .call_frame = .{ .alignment = .@"16" },
36319 .extra_temps = .{37170 .extra_temps = .{
36320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36321 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37172 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36322 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },37173 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
36323 .unused,37174 .unused,
36324 .unused,37175 .unused,
...@@ -36353,8 +37204,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36353,8 +37204,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36353 .call_frame = .{ .alignment = .@"16" },37204 .call_frame = .{ .alignment = .@"16" },
36354 .extra_temps = .{37205 .extra_temps = .{
36355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36356 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37207 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36357 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },37208 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36358 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },37209 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
36359 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },37210 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
36360 .unused,37211 .unused,
...@@ -36379,6 +37230,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36379,6 +37230,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36379 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36380 } },37231 } },
36381 }, .{37232 }, .{
37233 .required_abi = .gnu,
37234 .required_cc_abi = .sysv64,
36382 .required_features = .{ .x87, null, null, null },37235 .required_features = .{ .x87, null, null, null },
36383 .src_constraints = .{37236 .src_constraints = .{
36384 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },37237 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -36412,6 +37265,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36412,6 +37265,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36412 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },37265 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
36413 } },37266 } },
36414 }, .{37267 }, .{
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,
36415 .required_features = .{ .x87, null, null, null },37350 .required_features = .{ .x87, null, null, null },
36416 .src_constraints = .{37351 .src_constraints = .{
36417 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },37352 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -36449,6 +37384,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36449,6 +37384,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36449 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },37384 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
36450 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },37385 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
36451 } },37386 } },
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 } },
36452 }, .{37473 }, .{
36453 .required_features = .{ .sse, null, null, null },37474 .required_features = .{ .sse, null, null, null },
36454 .src_constraints = .{37475 .src_constraints = .{
...@@ -36457,7 +37478,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36457,7 +37478,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36457 .any,37478 .any,
36458 },37479 },
36459 .patterns = &.{37480 .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 } },
36461 },37486 },
36462 .call_frame = .{ .alignment = .@"16" },37487 .call_frame = .{ .alignment = .@"16" },
36463 .extra_temps = .{37488 .extra_temps = .{
...@@ -36492,8 +37517,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36492,8 +37517,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36492 .call_frame = .{ .alignment = .@"16" },37517 .call_frame = .{ .alignment = .@"16" },
36493 .extra_temps = .{37518 .extra_temps = .{
36494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36495 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },37520 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36496 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },37521 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36497 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },37522 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36498 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },37523 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36499 .unused,37524 .unused,
...@@ -36528,8 +37553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36528,8 +37553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36528 .call_frame = .{ .alignment = .@"16" },37553 .call_frame = .{ .alignment = .@"16" },
36529 .extra_temps = .{37554 .extra_temps = .{
36530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37555 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36531 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },37556 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36532 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },37557 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36533 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },37558 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36534 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },37559 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36535 .unused,37560 .unused,
...@@ -36564,8 +37589,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36564,8 +37589,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36564 .call_frame = .{ .alignment = .@"16" },37589 .call_frame = .{ .alignment = .@"16" },
36565 .extra_temps = .{37590 .extra_temps = .{
36566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36567 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },37592 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36568 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },37593 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36569 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },37594 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36570 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },37595 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36571 .unused,37596 .unused,
...@@ -36598,7 +37623,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36598,7 +37623,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36598 };37623 };
36599 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);37624 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
36600 },37625 },
36601 .rem, .rem_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .rem) else {37626 .rem, .rem_optimized => |air_tag| {
36602 const bin_op = air_datas[@intFromEnum(inst)].bin_op;37627 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
36603 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });37628 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
36604 var res: [1]Temp = undefined;37629 var res: [1]Temp = undefined;
...@@ -36712,12 +37737,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36712,12 +37737,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36712 .{ ._, ._, .div, .src1q, ._, ._, ._ },37737 .{ ._, ._, .div, .src1q, ._, ._, ._ },
36713 } },37738 } },
36714 }, .{37739 }, .{
36715 .required_features = .{ .@"64bit", null, null, null },37740 .required_cc_abi = .sysv64,
36716 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },37741 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
36717 .patterns = &.{37742 .patterns = &.{
36718 .{ .src = .{37743 .{ .src = .{
36719 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },37744 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
36720 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },37745 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
36721 .none,37746 .none,
36722 } },37747 } },
36723 },37748 },
...@@ -36735,18 +37760,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36735,18 +37760,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36735 .unused,37760 .unused,
36736 .unused,37761 .unused,
36737 },37762 },
36738 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },37763 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
36739 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36740 .each = .{ .once = &.{37765 .each = .{ .once = &.{
36741 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },37766 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36742 } },37767 } },
36743 }, .{37768 }, .{
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,
36745 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },37798 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
36746 .patterns = &.{37799 .patterns = &.{
36747 .{ .src = .{37800 .{ .src = .{
36748 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },37801 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
36749 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },37802 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
36750 .none,37803 .none,
36751 } },37804 } },
36752 },37805 },
...@@ -36764,11 +37817,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36764,11 +37817,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36764 .unused,37817 .unused,
36765 .unused,37818 .unused,
36766 },37819 },
36767 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },37820 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
36768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },37821 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
36769 .each = .{ .once = &.{37822 .each = .{ .once = &.{
36770 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },37823 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
36771 } },37824 } },
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 } },
36772 }, .{37853 }, .{
36773 .required_features = .{ .@"64bit", null, null, null },37854 .required_features = .{ .@"64bit", null, null, null },
36774 .src_constraints = .{37855 .src_constraints = .{
...@@ -36781,10 +37862,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36781,10 +37862,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36781 },37862 },
36782 .call_frame = .{ .alignment = .@"16" },37863 .call_frame = .{ .alignment = .@"16" },
36783 .extra_temps = .{37864 .extra_temps = .{
36784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },37865 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },37866 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36786 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },37867 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
36787 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },37868 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
36788 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },37869 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
36789 .unused,37870 .unused,
36790 .unused,37871 .unused,
...@@ -36814,10 +37895,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36814,10 +37895,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36814 },37895 },
36815 .call_frame = .{ .alignment = .@"16" },37896 .call_frame = .{ .alignment = .@"16" },
36816 .extra_temps = .{37897 .extra_temps = .{
36817 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },37898 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36818 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },37899 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36819 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },37900 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
36820 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },37901 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
36821 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },37902 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
36822 .unused,37903 .unused,
36823 .unused,37904 .unused,
...@@ -37166,7 +38247,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37166,7 +38247,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38247 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37167 } },38248 } },
37168 }, .{38249 }, .{
37169 .required_features = .{ .@"64bit", null, null, null },38250 .required_cc_abi = .sysv64,
37170 .src_constraints = .{38251 .src_constraints = .{
37171 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },38252 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
37172 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },38253 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
...@@ -37178,12 +38259,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37178,12 +38259,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37178 .call_frame = .{ .alignment = .@"16" },38259 .call_frame = .{ .alignment = .@"16" },
37179 .extra_temps = .{38260 .extra_temps = .{
37180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37181 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },38262 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37182 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },38263 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37183 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },38264 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
37184 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38265 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
37185 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },38266 .{ .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 } } },
37187 .unused,38268 .unused,
37188 .unused,38269 .unused,
37189 .unused,38270 .unused,
...@@ -37204,7 +38285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37204,7 +38285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38285 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37205 } },38286 } },
37206 }, .{38287 }, .{
37207 .required_features = .{ .@"64bit", null, null, null },38288 .required_cc_abi = .sysv64,
37208 .src_constraints = .{38289 .src_constraints = .{
37209 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },38290 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
37210 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },38291 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
...@@ -37216,12 +38297,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37216,12 +38297,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37216 .call_frame = .{ .alignment = .@"16" },38297 .call_frame = .{ .alignment = .@"16" },
37217 .extra_temps = .{38298 .extra_temps = .{
37218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37219 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },38300 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37220 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },38301 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37221 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },38302 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
37222 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38303 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
37223 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },38304 .{ .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 } } },
37225 .unused,38306 .unused,
37226 .unused,38307 .unused,
37227 .unused,38308 .unused,
...@@ -37254,10 +38335,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37254,10 +38335,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37254 .call_frame = .{ .alignment = .@"16" },38335 .call_frame = .{ .alignment = .@"16" },
37255 .extra_temps = .{38336 .extra_temps = .{
37256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38337 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37257 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },38338 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37258 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },38339 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37259 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },38340 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
37260 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38341 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
37261 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },38342 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
37262 .unused,38343 .unused,
37263 .unused,38344 .unused,
...@@ -37290,10 +38371,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37290,10 +38371,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37290 .call_frame = .{ .alignment = .@"16" },38371 .call_frame = .{ .alignment = .@"16" },
37291 .extra_temps = .{38372 .extra_temps = .{
37292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },38374 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37294 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },38375 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37295 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },38376 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
37296 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38377 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
37297 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },38378 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
37298 .unused,38379 .unused,
37299 .unused,38380 .unused,
...@@ -37321,7 +38402,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37321,7 +38402,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37321 .any,38402 .any,
37322 },38403 },
37323 .patterns = &.{38404 .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 } },
37325 },38410 },
37326 .call_frame = .{ .alignment = .@"16" },38411 .call_frame = .{ .alignment = .@"16" },
37327 .extra_temps = .{38412 .extra_temps = .{
...@@ -37355,8 +38440,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37355,8 +38440,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37355 .call_frame = .{ .alignment = .@"16" },38440 .call_frame = .{ .alignment = .@"16" },
37356 .extra_temps = .{38441 .extra_temps = .{
37357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37358 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38443 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37359 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },38444 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37360 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },38445 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37361 .unused,38446 .unused,
37362 .unused,38447 .unused,
...@@ -37391,8 +38476,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37391,8 +38476,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37391 .call_frame = .{ .alignment = .@"16" },38476 .call_frame = .{ .alignment = .@"16" },
37392 .extra_temps = .{38477 .extra_temps = .{
37393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37394 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38479 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37395 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },38480 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37396 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },38481 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37397 .unused,38482 .unused,
37398 .unused,38483 .unused,
...@@ -37428,8 +38513,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37428,8 +38513,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37428 .call_frame = .{ .alignment = .@"16" },38513 .call_frame = .{ .alignment = .@"16" },
37429 .extra_temps = .{38514 .extra_temps = .{
37430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38516 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37432 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },38517 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37433 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },38518 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37434 .{ .type = .f16, .kind = .{ .reg = .ax } },38519 .{ .type = .f16, .kind = .{ .reg = .ax } },
37435 .unused,38520 .unused,
...@@ -37468,8 +38553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37468,8 +38553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37468 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37469 .{ .type = .f16, .kind = .{ .reg = .ax } },38554 .{ .type = .f16, .kind = .{ .reg = .ax } },
37470 .{ .type = .f32, .kind = .mem },38555 .{ .type = .f32, .kind = .mem },
37471 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38556 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37472 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },38557 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37473 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },38558 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37474 .unused,38559 .unused,
37475 .unused,38560 .unused,
...@@ -37502,7 +38587,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37502,7 +38587,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37502 .any,38587 .any,
37503 },38588 },
37504 .patterns = &.{38589 .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 } },
37506 },38595 },
37507 .call_frame = .{ .alignment = .@"16" },38596 .call_frame = .{ .alignment = .@"16" },
37508 .extra_temps = .{38597 .extra_temps = .{
...@@ -37536,8 +38625,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37536,8 +38625,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37536 .call_frame = .{ .alignment = .@"16" },38625 .call_frame = .{ .alignment = .@"16" },
37537 .extra_temps = .{38626 .extra_temps = .{
37538 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37539 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },38628 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37540 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },38629 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37541 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },38630 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
37542 .unused,38631 .unused,
37543 .unused,38632 .unused,
...@@ -37571,8 +38660,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37571,8 +38660,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37571 .call_frame = .{ .alignment = .@"16" },38660 .call_frame = .{ .alignment = .@"16" },
37572 .extra_temps = .{38661 .extra_temps = .{
37573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37574 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },38663 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37575 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },38664 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37576 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },38665 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
37577 .unused,38666 .unused,
37578 .unused,38667 .unused,
...@@ -37601,7 +38690,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37601,7 +38690,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37601 .any,38690 .any,
37602 },38691 },
37603 .patterns = &.{38692 .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 } },
37605 },38698 },
37606 .call_frame = .{ .alignment = .@"16" },38699 .call_frame = .{ .alignment = .@"16" },
37607 .extra_temps = .{38700 .extra_temps = .{
...@@ -37635,8 +38728,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37635,8 +38728,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37635 .call_frame = .{ .alignment = .@"16" },38728 .call_frame = .{ .alignment = .@"16" },
37636 .extra_temps = .{38729 .extra_temps = .{
37637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37638 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },38731 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37639 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },38732 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37640 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },38733 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37641 .unused,38734 .unused,
37642 .unused,38735 .unused,
...@@ -37670,8 +38763,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37670,8 +38763,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37670 .call_frame = .{ .alignment = .@"16" },38763 .call_frame = .{ .alignment = .@"16" },
37671 .extra_temps = .{38764 .extra_temps = .{
37672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37673 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },38766 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37674 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },38767 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37675 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },38768 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37676 .unused,38769 .unused,
37677 .unused,38770 .unused,
...@@ -37705,8 +38798,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37705,8 +38798,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37705 .call_frame = .{ .alignment = .@"16" },38798 .call_frame = .{ .alignment = .@"16" },
37706 .extra_temps = .{38799 .extra_temps = .{
37707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37708 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },38801 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37709 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },38802 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37710 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },38803 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37711 .unused,38804 .unused,
37712 .unused,38805 .unused,
...@@ -37730,6 +38823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37730,6 +38823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37730 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37731 } },38824 } },
37732 }, .{38825 }, .{
38826 .required_cc_abi = .sysv64,
37733 .required_features = .{ .avx, .x87, null, null },38827 .required_features = .{ .avx, .x87, null, null },
37734 .src_constraints = .{38828 .src_constraints = .{
37735 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },38829 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -37741,7 +38835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37741,7 +38835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37741 },38835 },
37742 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },38836 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
37743 .extra_temps = .{38837 .extra_temps = .{
37744 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },38838 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37745 .{ .type = .f80, .kind = .{ .frame = .call_frame } },38839 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37746 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },38840 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37747 .unused,38841 .unused,
...@@ -37763,6 +38857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37763,6 +38857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37763 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },38857 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37764 } },38858 } },
37765 }, .{38859 }, .{
38860 .required_cc_abi = .sysv64,
37766 .required_features = .{ .sse2, .x87, null, null },38861 .required_features = .{ .sse2, .x87, null, null },
37767 .src_constraints = .{38862 .src_constraints = .{
37768 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },38863 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -37774,7 +38869,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37774,7 +38869,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37774 },38869 },
37775 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },38870 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
37776 .extra_temps = .{38871 .extra_temps = .{
37777 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },38872 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37778 .{ .type = .f80, .kind = .{ .frame = .call_frame } },38873 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37779 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },38874 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37780 .unused,38875 .unused,
...@@ -37796,6 +38891,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37796,6 +38891,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37796 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },38891 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37797 } },38892 } },
37798 }, .{38893 }, .{
38894 .required_cc_abi = .sysv64,
37799 .required_features = .{ .sse, .x87, null, null },38895 .required_features = .{ .sse, .x87, null, null },
37800 .src_constraints = .{38896 .src_constraints = .{
37801 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },38897 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -37807,7 +38903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37807,7 +38903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37807 },38903 },
37808 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },38904 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
37809 .extra_temps = .{38905 .extra_temps = .{
37810 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },38906 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37811 .{ .type = .f80, .kind = .{ .frame = .call_frame } },38907 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37812 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },38908 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37813 .unused,38909 .unused,
...@@ -37829,6 +38925,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37829,6 +38925,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37829 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },38925 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37830 } },38926 } },
37831 }, .{38927 }, .{
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,
37832 .required_features = .{ .avx, .x87, null, null },38961 .required_features = .{ .avx, .x87, null, null },
37833 .src_constraints = .{38962 .src_constraints = .{
37834 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },38963 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -37841,7 +38970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37841,7 +38970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37841 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },38970 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
37842 .extra_temps = .{38971 .extra_temps = .{
37843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38972 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37844 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },38973 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37845 .{ .type = .f80, .kind = .{ .frame = .call_frame } },38974 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37846 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },38975 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37847 .unused,38976 .unused,
...@@ -37867,6 +38996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37867,6 +38996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37867 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },38996 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37868 } },38997 } },
37869 }, .{38998 }, .{
38999 .required_cc_abi = .sysv64,
37870 .required_features = .{ .sse2, .x87, null, null },39000 .required_features = .{ .sse2, .x87, null, null },
37871 .src_constraints = .{39001 .src_constraints = .{
37872 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },39002 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -37879,7 +39009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37879,7 +39009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37879 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },39009 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
37880 .extra_temps = .{39010 .extra_temps = .{
37881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37882 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },39012 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37883 .{ .type = .f80, .kind = .{ .frame = .call_frame } },39013 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37884 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },39014 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37885 .unused,39015 .unused,
...@@ -37905,6 +39035,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37905,6 +39035,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39035 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37906 } },39036 } },
37907 }, .{39037 }, .{
39038 .required_cc_abi = .sysv64,
37908 .required_features = .{ .sse, .x87, null, null },39039 .required_features = .{ .sse, .x87, null, null },
37909 .src_constraints = .{39040 .src_constraints = .{
37910 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },39041 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -37917,7 +39048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37917,7 +39048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37917 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },39048 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
37918 .extra_temps = .{39049 .extra_temps = .{
37919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37920 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },39051 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37921 .{ .type = .f80, .kind = .{ .frame = .call_frame } },39052 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37922 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },39053 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37923 .unused,39054 .unused,
...@@ -37942,6 +39073,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37942,6 +39073,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37942 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },39073 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37943 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },39074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37944 } },39075 } },
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 } },
37945 }, .{39111 }, .{
37946 .required_features = .{ .sse, null, null, null },39112 .required_features = .{ .sse, null, null, null },
37947 .src_constraints = .{39113 .src_constraints = .{
...@@ -37950,7 +39116,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37950,7 +39116,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37950 .any,39116 .any,
37951 },39117 },
37952 .patterns = &.{39118 .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 } },
37954 },39124 },
37955 .call_frame = .{ .alignment = .@"16" },39125 .call_frame = .{ .alignment = .@"16" },
37956 .extra_temps = .{39126 .extra_temps = .{
...@@ -37984,8 +39154,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37984,8 +39154,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37984 .call_frame = .{ .alignment = .@"16" },39154 .call_frame = .{ .alignment = .@"16" },
37985 .extra_temps = .{39155 .extra_temps = .{
37986 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37987 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },39157 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37988 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },39158 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37989 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },39159 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
37990 .unused,39160 .unused,
37991 .unused,39161 .unused,
...@@ -38019,8 +39189,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38019,8 +39189,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38019 .call_frame = .{ .alignment = .@"16" },39189 .call_frame = .{ .alignment = .@"16" },
38020 .extra_temps = .{39190 .extra_temps = .{
38021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38022 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },39192 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38023 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },39193 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38024 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },39194 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
38025 .unused,39195 .unused,
38026 .unused,39196 .unused,
...@@ -38054,8 +39224,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38054,8 +39224,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38054 .call_frame = .{ .alignment = .@"16" },39224 .call_frame = .{ .alignment = .@"16" },
38055 .extra_temps = .{39225 .extra_temps = .{
38056 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38057 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },39227 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38058 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },39228 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38059 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },39229 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
38060 .unused,39230 .unused,
38061 .unused,39231 .unused,
...@@ -38087,7 +39257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38087,7 +39257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38087 };39257 };
38088 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);39258 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
38089 },39259 },
38090 .mod, .mod_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mod) else {39260 .mod, .mod_optimized => |air_tag| {
38091 const bin_op = air_datas[@intFromEnum(inst)].bin_op;39261 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
38092 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });39262 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
38093 var res: [1]Temp = undefined;39263 var res: [1]Temp = undefined;
...@@ -38383,14 +39553,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38383,14 +39553,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38383 .{ ._, ._, .div, .src1q, ._, ._, ._ },39553 .{ ._, ._, .div, .src1q, ._, ._, ._ },
38384 } },39554 } },
38385 }, .{39555 }, .{
38386 .required_features = .{ .@"64bit", .cmov, null, null },39556 .required_cc_abi = .sysv64,
39557 .required_features = .{ .cmov, null, null, null },
38387 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },39558 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
38388 .patterns = &.{39559 .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 } },
38390 },39561 },
38391 .call_frame = .{ .alignment = .@"16" },39562 .call_frame = .{ .alignment = .@"16" },
38392 .extra_temps = .{39563 .extra_temps = .{
38393 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },39564 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
38394 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },39565 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
38395 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },39566 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
38396 .unused,39567 .unused,
...@@ -38402,7 +39573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38402,7 +39573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38402 .unused,39573 .unused,
38403 .unused,39574 .unused,
38404 },39575 },
38405 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },39576 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
38406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },39577 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38407 .each = .{ .once = &.{39578 .each = .{ .once = &.{
38408 .{ ._, ._, .mov, .dst0q1, .mem(.src1q), ._, ._ },39579 .{ ._, ._, .mov, .dst0q1, .mem(.src1q), ._, ._ },
...@@ -38422,14 +39593,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38422,14 +39593,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38422 .{ ._, ._, .adc, .dst0q1, .src0q0, ._, ._ },39593 .{ ._, ._, .adc, .dst0q1, .src0q0, ._, ._ },
38423 } },39594 } },
38424 }, .{39595 }, .{
38425 .required_features = .{ .@"64bit", null, null, null },39596 .required_cc_abi = .sysv64,
38426 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },39597 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
38427 .patterns = &.{39598 .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 } },
38429 },39600 },
38430 .call_frame = .{ .alignment = .@"16" },39601 .call_frame = .{ .alignment = .@"16" },
38431 .extra_temps = .{39602 .extra_temps = .{
38432 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },39603 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
38433 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },39604 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
38434 .unused,39605 .unused,
38435 .unused,39606 .unused,
...@@ -38441,7 +39612,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38441,7 +39612,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38441 .unused,39612 .unused,
38442 .unused,39613 .unused,
38443 },39614 },
38444 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },39615 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
38445 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },39616 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38446 .each = .{ .once = &.{39617 .each = .{ .once = &.{
38447 .{ ._, ._, .mov, .dst0q1, .mem(.src1q), ._, ._ },39618 .{ ._, ._, .mov, .dst0q1, .mem(.src1q), ._, ._ },
...@@ -38459,12 +39630,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38459,12 +39630,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38459 .{ ._, ._, .adc, .dst0q1, .src0q0, ._, ._ },39630 .{ ._, ._, .adc, .dst0q1, .src0q0, ._, ._ },
38460 } },39631 } },
38461 }, .{39632 }, .{
38462 .required_features = .{ .@"64bit", null, null, null },39633 .required_cc_abi = .sysv64,
38463 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },39634 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
38464 .patterns = &.{39635 .patterns = &.{
38465 .{ .src = .{39636 .{ .src = .{
38466 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },39637 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
38467 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },39638 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
38468 .none,39639 .none,
38469 } },39640 } },
38470 },39641 },
...@@ -38482,7 +39653,65 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38482,7 +39653,65 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38482 .unused,39653 .unused,
38483 .unused,39654 .unused,
38484 },39655 },
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 },
38486 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },39715 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38487 .each = .{ .once = &.{39716 .each = .{ .once = &.{
38488 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },39717 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -38499,10 +39728,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38499,10 +39728,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38499 },39728 },
38500 .call_frame = .{ .alignment = .@"16" },39729 .call_frame = .{ .alignment = .@"16" },
38501 .extra_temps = .{39730 .extra_temps = .{
38502 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },39731 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38503 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },39732 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38504 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },39733 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38505 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },39734 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
38506 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },39735 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
38507 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },39736 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
38508 .unused,39737 .unused,
...@@ -38557,10 +39786,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38557,10 +39786,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38557 },39786 },
38558 .call_frame = .{ .alignment = .@"16" },39787 .call_frame = .{ .alignment = .@"16" },
38559 .extra_temps = .{39788 .extra_temps = .{
38560 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },39789 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },39790 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38562 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },39791 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38563 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },39792 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
38564 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },39793 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
38565 .unused,39794 .unused,
38566 .unused,39795 .unused,
...@@ -38586,7 +39815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38586,7 +39815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38586 .any,39815 .any,
38587 },39816 },
38588 .patterns = &.{39817 .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 } },
38590 },39823 },
38591 .call_frame = .{ .alignment = .@"16" },39824 .call_frame = .{ .alignment = .@"16" },
38592 .extra_temps = .{39825 .extra_temps = .{
...@@ -38627,7 +39860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38627,7 +39860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38627 .any,39860 .any,
38628 },39861 },
38629 .patterns = &.{39862 .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 } },
38631 },39868 },
38632 .call_frame = .{ .alignment = .@"16" },39869 .call_frame = .{ .alignment = .@"16" },
38633 .extra_temps = .{39870 .extra_temps = .{
...@@ -38668,7 +39905,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38668,7 +39905,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38668 .any,39905 .any,
38669 },39906 },
38670 .patterns = &.{39907 .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 } },
38672 },39913 },
38673 .call_frame = .{ .alignment = .@"16" },39914 .call_frame = .{ .alignment = .@"16" },
38674 .extra_temps = .{39915 .extra_temps = .{
...@@ -38706,7 +39947,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38706,7 +39947,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38706 .any,39947 .any,
38707 },39948 },
38708 .patterns = &.{39949 .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 } },
38710 },39955 },
38711 .call_frame = .{ .alignment = .@"16" },39956 .call_frame = .{ .alignment = .@"16" },
38712 .extra_temps = .{39957 .extra_temps = .{
...@@ -38744,7 +39989,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38744,7 +39989,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38744 .any,39989 .any,
38745 },39990 },
38746 .patterns = &.{39991 .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 } },
38748 },39997 },
38749 .call_frame = .{ .alignment = .@"16" },39998 .call_frame = .{ .alignment = .@"16" },
38750 .extra_temps = .{39999 .extra_temps = .{
...@@ -38782,7 +40031,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38782,7 +40031,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38782 .any,40031 .any,
38783 },40032 },
38784 .patterns = &.{40033 .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 } },
38786 },40039 },
38787 .call_frame = .{ .alignment = .@"16" },40040 .call_frame = .{ .alignment = .@"16" },
38788 .extra_temps = .{40041 .extra_temps = .{
...@@ -38820,7 +40073,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38820,7 +40073,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38820 .any,40073 .any,
38821 },40074 },
38822 .patterns = &.{40075 .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 } },
38824 },40081 },
38825 .call_frame = .{ .alignment = .@"16" },40082 .call_frame = .{ .alignment = .@"16" },
38826 .extra_temps = .{40083 .extra_temps = .{
...@@ -38858,7 +40115,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38858,7 +40115,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38858 .any,40115 .any,
38859 },40116 },
38860 .patterns = &.{40117 .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 } },
38862 },40123 },
38863 .call_frame = .{ .alignment = .@"16" },40124 .call_frame = .{ .alignment = .@"16" },
38864 .extra_temps = .{40125 .extra_temps = .{
...@@ -38901,9 +40162,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38901,9 +40162,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38901 .call_frame = .{ .alignment = .@"16" },40162 .call_frame = .{ .alignment = .@"16" },
38902 .extra_temps = .{40163 .extra_temps = .{
38903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38904 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40165 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38905 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40166 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38906 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40167 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38907 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40168 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38908 .{ .type = .f16, .kind = .{ .reg = .dx } },40169 .{ .type = .f16, .kind = .{ .reg = .dx } },
38909 .{ .type = .f16, .kind = .{ .reg = .ax } },40170 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -38949,9 +40210,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38949,9 +40210,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38949 .call_frame = .{ .alignment = .@"16" },40210 .call_frame = .{ .alignment = .@"16" },
38950 .extra_temps = .{40211 .extra_temps = .{
38951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38952 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40213 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38953 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40214 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38954 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40215 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38955 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40216 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38956 .{ .type = .f16, .kind = .{ .reg = .dx } },40217 .{ .type = .f16, .kind = .{ .reg = .dx } },
38957 .{ .type = .f16, .kind = .{ .reg = .ax } },40218 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -38997,9 +40258,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38997,9 +40258,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38997 .call_frame = .{ .alignment = .@"16" },40258 .call_frame = .{ .alignment = .@"16" },
38998 .extra_temps = .{40259 .extra_temps = .{
38999 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39000 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40261 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39001 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40262 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39002 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40263 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39003 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40264 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39004 .{ .type = .f16, .kind = .{ .reg = .dx } },40265 .{ .type = .f16, .kind = .{ .reg = .dx } },
39005 .{ .type = .f16, .kind = .{ .reg = .ax } },40266 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -39042,9 +40303,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39042,9 +40303,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39042 .call_frame = .{ .alignment = .@"16" },40303 .call_frame = .{ .alignment = .@"16" },
39043 .extra_temps = .{40304 .extra_temps = .{
39044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39045 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40306 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39046 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40307 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39047 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40308 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39048 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40309 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39049 .{ .type = .f16, .kind = .{ .reg = .dx } },40310 .{ .type = .f16, .kind = .{ .reg = .dx } },
39050 .{ .type = .f16, .kind = .{ .reg = .ax } },40311 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -39087,9 +40348,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39087,9 +40348,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39087 .call_frame = .{ .alignment = .@"16" },40348 .call_frame = .{ .alignment = .@"16" },
39088 .extra_temps = .{40349 .extra_temps = .{
39089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39090 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40351 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39091 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40352 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39092 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40353 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39093 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40354 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39094 .{ .type = .f16, .kind = .{ .reg = .dx } },40355 .{ .type = .f16, .kind = .{ .reg = .dx } },
39095 .{ .type = .f16, .kind = .{ .reg = .ax } },40356 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -39132,9 +40393,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39132,9 +40393,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39132 .call_frame = .{ .alignment = .@"16" },40393 .call_frame = .{ .alignment = .@"16" },
39133 .extra_temps = .{40394 .extra_temps = .{
39134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39135 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40396 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39136 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40397 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39137 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40398 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39138 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40399 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39139 .{ .type = .f16, .kind = .{ .reg = .dx } },40400 .{ .type = .f16, .kind = .{ .reg = .dx } },
39140 .{ .type = .f16, .kind = .{ .reg = .ax } },40401 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -39177,9 +40438,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39177,9 +40438,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39177 .call_frame = .{ .alignment = .@"16" },40438 .call_frame = .{ .alignment = .@"16" },
39178 .extra_temps = .{40439 .extra_temps = .{
39179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40440 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39180 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40441 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39181 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40442 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39182 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40443 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39183 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40444 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39184 .{ .type = .f16, .kind = .{ .reg = .dx } },40445 .{ .type = .f16, .kind = .{ .reg = .dx } },
39185 .{ .type = .f16, .kind = .{ .reg = .ax } },40446 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -39223,9 +40484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39223,9 +40484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39223 .call_frame = .{ .alignment = .@"16" },40484 .call_frame = .{ .alignment = .@"16" },
39224 .extra_temps = .{40485 .extra_temps = .{
39225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39226 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40487 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39227 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },40488 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39228 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40489 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39229 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40490 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39230 .{ .type = .f16, .kind = .{ .reg = .dx } },40491 .{ .type = .f16, .kind = .{ .reg = .dx } },
39231 .{ .type = .f16, .kind = .{ .reg = .ax } },40492 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -39271,8 +40532,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39271,8 +40532,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40532 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39272 .{ .type = .f16, .kind = .{ .reg = .ax } },40533 .{ .type = .f16, .kind = .{ .reg = .ax } },
39273 .{ .type = .f32, .kind = .mem },40534 .{ .type = .f32, .kind = .mem },
39274 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40535 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39275 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40536 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39276 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40537 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39277 .{ .type = .f32, .kind = .mem },40538 .{ .type = .f32, .kind = .mem },
39278 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },40539 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
...@@ -39320,8 +40581,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39320,8 +40581,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39321 .{ .type = .f16, .kind = .{ .reg = .ax } },40582 .{ .type = .f16, .kind = .{ .reg = .ax } },
39322 .{ .type = .f32, .kind = .mem },40583 .{ .type = .f32, .kind = .mem },
39323 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },40584 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39324 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },40585 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39325 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },40586 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39326 .{ .type = .f32, .kind = .mem },40587 .{ .type = .f32, .kind = .mem },
39327 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },40588 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
...@@ -39362,7 +40623,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39362,7 +40623,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39362 .any,40623 .any,
39363 },40624 },
39364 .patterns = &.{40625 .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 } },
39366 },40631 },
39367 .call_frame = .{ .alignment = .@"16" },40632 .call_frame = .{ .alignment = .@"16" },
39368 .extra_temps = .{40633 .extra_temps = .{
...@@ -39400,7 +40665,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39400,7 +40665,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39400 .any,40665 .any,
39401 },40666 },
39402 .patterns = &.{40667 .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 } },
39404 },40673 },
39405 .call_frame = .{ .alignment = .@"16" },40674 .call_frame = .{ .alignment = .@"16" },
39406 .extra_temps = .{40675 .extra_temps = .{
...@@ -39438,7 +40707,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39438,7 +40707,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39438 .any,40707 .any,
39439 },40708 },
39440 .patterns = &.{40709 .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 } },
39442 },40715 },
39443 .call_frame = .{ .alignment = .@"16" },40716 .call_frame = .{ .alignment = .@"16" },
39444 .extra_temps = .{40717 .extra_temps = .{
...@@ -39480,8 +40753,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39480,8 +40753,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39480 .call_frame = .{ .alignment = .@"16" },40753 .call_frame = .{ .alignment = .@"16" },
39481 .extra_temps = .{40754 .extra_temps = .{
39482 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39483 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },40756 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39484 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },40757 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39485 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },40758 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39486 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },40759 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39487 .{ .type = .f32, .kind = .{ .reg = .edx } },40760 .{ .type = .f32, .kind = .{ .reg = .edx } },
...@@ -39524,8 +40797,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39524,8 +40797,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39524 .call_frame = .{ .alignment = .@"16" },40797 .call_frame = .{ .alignment = .@"16" },
39525 .extra_temps = .{40798 .extra_temps = .{
39526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39527 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },40800 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39528 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },40801 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39529 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },40802 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39530 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },40803 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39531 .{ .type = .f32, .kind = .{ .reg = .edx } },40804 .{ .type = .f32, .kind = .{ .reg = .edx } },
...@@ -39568,8 +40841,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39568,8 +40841,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39568 .call_frame = .{ .alignment = .@"16" },40841 .call_frame = .{ .alignment = .@"16" },
39569 .extra_temps = .{40842 .extra_temps = .{
39570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39571 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },40844 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39572 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },40845 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39573 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },40846 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39574 .{ .type = .f32, .kind = .mem },40847 .{ .type = .f32, .kind = .mem },
39575 .{ .type = .f32, .kind = .{ .reg = .eax } },40848 .{ .type = .f32, .kind = .{ .reg = .eax } },
...@@ -39605,7 +40878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39605,7 +40878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39605 .any,40878 .any,
39606 },40879 },
39607 .patterns = &.{40880 .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 } },
39609 },40886 },
39610 .call_frame = .{ .alignment = .@"16" },40887 .call_frame = .{ .alignment = .@"16" },
39611 .extra_temps = .{40888 .extra_temps = .{
...@@ -39644,7 +40921,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39644,7 +40921,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39644 .any,40921 .any,
39645 },40922 },
39646 .patterns = &.{40923 .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 } },
39648 },40929 },
39649 .call_frame = .{ .alignment = .@"16" },40930 .call_frame = .{ .alignment = .@"16" },
39650 .extra_temps = .{40931 .extra_temps = .{
...@@ -39683,7 +40964,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39683,7 +40964,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39683 .any,40964 .any,
39684 },40965 },
39685 .patterns = &.{40966 .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 } },
39687 },40972 },
39688 .call_frame = .{ .alignment = .@"16" },40973 .call_frame = .{ .alignment = .@"16" },
39689 .extra_temps = .{40974 .extra_temps = .{
...@@ -39730,8 +41015,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39730,8 +41015,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39730 .call_frame = .{ .alignment = .@"16" },41015 .call_frame = .{ .alignment = .@"16" },
39731 .extra_temps = .{41016 .extra_temps = .{
39732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41017 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39733 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },41018 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39734 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },41019 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39735 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },41020 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39736 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },41021 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39737 .{ .type = .f64, .kind = .{ .reg = .rcx } },41022 .{ .type = .f64, .kind = .{ .reg = .rcx } },
...@@ -39775,8 +41060,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39775,8 +41060,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39775 .call_frame = .{ .alignment = .@"16" },41060 .call_frame = .{ .alignment = .@"16" },
39776 .extra_temps = .{41061 .extra_temps = .{
39777 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39778 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },41063 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39779 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },41064 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39780 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },41065 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39781 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },41066 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39782 .{ .type = .f64, .kind = .{ .reg = .rcx } },41067 .{ .type = .f64, .kind = .{ .reg = .rcx } },
...@@ -39820,8 +41105,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39820,8 +41105,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39820 .call_frame = .{ .alignment = .@"16" },41105 .call_frame = .{ .alignment = .@"16" },
39821 .extra_temps = .{41106 .extra_temps = .{
39822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39823 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },41108 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39824 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },41109 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39825 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },41110 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39826 .{ .type = .f64, .kind = .{ .reg = .rdx } },41111 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39827 .{ .type = .f64, .kind = .mem },41112 .{ .type = .f64, .kind = .mem },
...@@ -39857,6 +41142,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39857,6 +41142,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39858 } },41143 } },
39859 }, .{41144 }, .{
41145 .required_abi = .gnu,
41146 .required_cc_abi = .sysv64,
39860 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },41147 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },
39861 .src_constraints = .{41148 .src_constraints = .{
39862 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },41149 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -39868,7 +41155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39868,7 +41155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39868 },41155 },
39869 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41156 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
39870 .extra_temps = .{41157 .extra_temps = .{
39871 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41158 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39872 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41159 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39873 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41160 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
39874 .{ .type = .f80, .kind = .{ .reg = .st7 } },41161 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -39900,6 +41187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39900,6 +41187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39900 .{ ._, .f_p, .add, ._, ._, ._, ._ },41187 .{ ._, .f_p, .add, ._, ._, ._, ._ },
39901 } },41188 } },
39902 }, .{41189 }, .{
41190 .required_abi = .gnu,
41191 .required_cc_abi = .sysv64,
39903 .required_features = .{ .@"64bit", .avx, .x87, null },41192 .required_features = .{ .@"64bit", .avx, .x87, null },
39904 .src_constraints = .{41193 .src_constraints = .{
39905 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },41194 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -39911,7 +41200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39911,7 +41200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39911 },41200 },
39912 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41201 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
39913 .extra_temps = .{41202 .extra_temps = .{
39914 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41203 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39915 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41204 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39916 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41205 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
39917 .{ .type = .f80, .kind = .{ .reg = .st7 } },41206 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -39943,6 +41232,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39943,6 +41232,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39943 .{ ._, .f_p, .add, ._, ._, ._, ._ },41232 .{ ._, .f_p, .add, ._, ._, ._, ._ },
39944 } },41233 } },
39945 }, .{41234 }, .{
41235 .required_abi = .gnu,
41236 .required_cc_abi = .sysv64,
39946 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },41237 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },
39947 .src_constraints = .{41238 .src_constraints = .{
39948 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },41239 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -39954,7 +41245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39954,7 +41245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39954 },41245 },
39955 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41246 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
39956 .extra_temps = .{41247 .extra_temps = .{
39957 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41248 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39958 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41249 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39959 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41250 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
39960 .{ .type = .f80, .kind = .{ .reg = .st7 } },41251 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -39986,6 +41277,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39986,6 +41277,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39986 .{ ._, .f_p, .add, ._, ._, ._, ._ },41277 .{ ._, .f_p, .add, ._, ._, ._, ._ },
39987 } },41278 } },
39988 }, .{41279 }, .{
41280 .required_abi = .gnu,
41281 .required_cc_abi = .sysv64,
39989 .required_features = .{ .@"64bit", .sse2, .x87, null },41282 .required_features = .{ .@"64bit", .sse2, .x87, null },
39990 .src_constraints = .{41283 .src_constraints = .{
39991 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },41284 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -39997,7 +41290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39997,7 +41290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39997 },41290 },
39998 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41291 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
39999 .extra_temps = .{41292 .extra_temps = .{
40000 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41293 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40001 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41294 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40002 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41295 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40003 .{ .type = .f80, .kind = .{ .reg = .st7 } },41296 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40029,6 +41322,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40029,6 +41322,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40029 .{ ._, .f_p, .add, ._, ._, ._, ._ },41322 .{ ._, .f_p, .add, ._, ._, ._, ._ },
40030 } },41323 } },
40031 }, .{41324 }, .{
41325 .required_abi = .gnu,
41326 .required_cc_abi = .sysv64,
40032 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },41327 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },
40033 .src_constraints = .{41328 .src_constraints = .{
40034 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },41329 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40040,7 +41335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40040,7 +41335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40040 },41335 },
40041 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41336 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40042 .extra_temps = .{41337 .extra_temps = .{
40043 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41338 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40044 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41339 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40045 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41340 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40046 .{ .type = .f80, .kind = .{ .reg = .st7 } },41341 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40072,6 +41367,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40072,6 +41367,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40072 .{ ._, .f_p, .add, ._, ._, ._, ._ },41367 .{ ._, .f_p, .add, ._, ._, ._, ._ },
40073 } },41368 } },
40074 }, .{41369 }, .{
41370 .required_abi = .gnu,
41371 .required_cc_abi = .sysv64,
40075 .required_features = .{ .@"64bit", .sse, .x87, null },41372 .required_features = .{ .@"64bit", .sse, .x87, null },
40076 .src_constraints = .{41373 .src_constraints = .{
40077 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },41374 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40083,7 +41380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40083,7 +41380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40083 },41380 },
40084 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41381 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40085 .extra_temps = .{41382 .extra_temps = .{
40086 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41383 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40087 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41384 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40088 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41385 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40089 .{ .type = .f80, .kind = .{ .reg = .st7 } },41386 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40115,6 +41412,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40115,6 +41412,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40115 .{ ._, .f_p, .add, ._, ._, ._, ._ },41412 .{ ._, .f_p, .add, ._, ._, ._, ._ },
40116 } },41413 } },
40117 }, .{41414 }, .{
41415 .required_abi = .gnu,
41416 .required_cc_abi = .sysv64,
40118 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },41417 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },
40119 .src_constraints = .{41418 .src_constraints = .{
40120 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },41419 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40127,7 +41426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40127,7 +41426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40127 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41426 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40128 .extra_temps = .{41427 .extra_temps = .{
40129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40130 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41429 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40131 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41430 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40132 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41431 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40133 .{ .type = .f80, .kind = .{ .reg = .st7 } },41432 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40163,6 +41462,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40163,6 +41462,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41462 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40164 } },41463 } },
40165 }, .{41464 }, .{
41465 .required_abi = .gnu,
41466 .required_cc_abi = .sysv64,
40166 .required_features = .{ .@"64bit", .avx, .x87, null },41467 .required_features = .{ .@"64bit", .avx, .x87, null },
40167 .src_constraints = .{41468 .src_constraints = .{
40168 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },41469 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40175,7 +41476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40175,7 +41476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40175 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41476 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40176 .extra_temps = .{41477 .extra_temps = .{
40177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40178 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41479 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40179 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40180 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41481 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40181 .{ .type = .f80, .kind = .{ .reg = .st7 } },41482 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40211,6 +41512,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40211,6 +41512,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40211 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41512 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40212 } },41513 } },
40213 }, .{41514 }, .{
41515 .required_abi = .gnu,
41516 .required_cc_abi = .sysv64,
40214 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },41517 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },
40215 .src_constraints = .{41518 .src_constraints = .{
40216 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },41519 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40223,7 +41526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40223,7 +41526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40223 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41526 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40224 .extra_temps = .{41527 .extra_temps = .{
40225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40226 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41529 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40227 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41530 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40228 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41531 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40229 .{ .type = .f80, .kind = .{ .reg = .st7 } },41532 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40259,6 +41562,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40259,6 +41562,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40259 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41562 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40260 } },41563 } },
40261 }, .{41564 }, .{
41565 .required_abi = .gnu,
41566 .required_cc_abi = .sysv64,
40262 .required_features = .{ .@"64bit", .sse2, .x87, null },41567 .required_features = .{ .@"64bit", .sse2, .x87, null },
40263 .src_constraints = .{41568 .src_constraints = .{
40264 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },41569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40271,7 +41576,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40271,7 +41576,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40271 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41576 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40272 .extra_temps = .{41577 .extra_temps = .{
40273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40274 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41579 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40275 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41580 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40276 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41581 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40277 .{ .type = .f80, .kind = .{ .reg = .st7 } },41582 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40307,6 +41612,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40307,6 +41612,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40307 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40308 } },41613 } },
40309 }, .{41614 }, .{
41615 .required_abi = .gnu,
41616 .required_cc_abi = .sysv64,
40310 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },41617 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },
40311 .src_constraints = .{41618 .src_constraints = .{
40312 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },41619 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40319,7 +41626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40319,7 +41626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40319 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41626 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40320 .extra_temps = .{41627 .extra_temps = .{
40321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40322 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41629 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40323 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41630 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40324 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41631 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40325 .{ .type = .f80, .kind = .{ .reg = .st7 } },41632 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40355,6 +41662,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40355,6 +41662,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },41662 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40356 } },41663 } },
40357 }, .{41664 }, .{
41665 .required_abi = .gnu,
41666 .required_cc_abi = .sysv64,
40358 .required_features = .{ .@"64bit", .sse, .x87, null },41667 .required_features = .{ .@"64bit", .sse, .x87, null },
40359 .src_constraints = .{41668 .src_constraints = .{
40360 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },41669 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -40367,7 +41676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40367,7 +41676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40367 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },41676 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
40368 .extra_temps = .{41677 .extra_temps = .{
40369 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40370 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },41679 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40371 .{ .type = .f80, .kind = .{ .frame = .call_frame } },41680 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40372 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },41681 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40373 .{ .type = .f80, .kind = .{ .reg = .st7 } },41682 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -40410,7 +41719,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40410,7 +41719,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40410 .any,41719 .any,
40411 },41720 },
40412 .patterns = &.{41721 .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 } },
40414 },41727 },
40415 .call_frame = .{ .alignment = .@"16" },41728 .call_frame = .{ .alignment = .@"16" },
40416 .extra_temps = .{41729 .extra_temps = .{
...@@ -40451,7 +41764,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40451,7 +41764,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40451 .any,41764 .any,
40452 },41765 },
40453 .patterns = &.{41766 .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 } },
40455 },41772 },
40456 .call_frame = .{ .alignment = .@"16" },41773 .call_frame = .{ .alignment = .@"16" },
40457 .extra_temps = .{41774 .extra_temps = .{
...@@ -40492,7 +41809,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40492,7 +41809,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40492 .any,41809 .any,
40493 },41810 },
40494 .patterns = &.{41811 .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 } },
40496 },41817 },
40497 .call_frame = .{ .alignment = .@"16" },41818 .call_frame = .{ .alignment = .@"16" },
40498 .extra_temps = .{41819 .extra_temps = .{
...@@ -40534,7 +41855,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40534,7 +41855,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40534 .any,41855 .any,
40535 },41856 },
40536 .patterns = &.{41857 .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 } },
40538 },41863 },
40539 .call_frame = .{ .alignment = .@"16" },41864 .call_frame = .{ .alignment = .@"16" },
40540 .extra_temps = .{41865 .extra_temps = .{
...@@ -40579,8 +41904,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40579,8 +41904,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40579 .call_frame = .{ .alignment = .@"16" },41904 .call_frame = .{ .alignment = .@"16" },
40580 .extra_temps = .{41905 .extra_temps = .{
40581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40582 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },41907 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40583 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },41908 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
40584 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },41909 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40585 .{ .type = .f128, .kind = .{ .reg = .rcx } },41910 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40586 .{ .type = .f128, .kind = .{ .reg = .rdx } },41911 .{ .type = .f128, .kind = .{ .reg = .rdx } },
...@@ -40625,8 +41950,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40625,8 +41950,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40625 .call_frame = .{ .alignment = .@"16" },41950 .call_frame = .{ .alignment = .@"16" },
40626 .extra_temps = .{41951 .extra_temps = .{
40627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40628 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },41953 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40629 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },41954 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
40630 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },41955 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40631 .{ .type = .f128, .kind = .{ .reg = .rcx } },41956 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40632 .{ .type = .f128, .kind = .{ .reg = .rdx } },41957 .{ .type = .f128, .kind = .{ .reg = .rdx } },
...@@ -40671,8 +41996,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40671,8 +41996,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40671 .call_frame = .{ .alignment = .@"16" },41996 .call_frame = .{ .alignment = .@"16" },
40672 .extra_temps = .{41997 .extra_temps = .{
40673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },41998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40674 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },41999 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40675 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },42000 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
40676 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },42001 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40677 .{ .type = .f128, .kind = .{ .reg = .rcx } },42002 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40678 .{ .type = .f128, .kind = .{ .reg = .rdx } },42003 .{ .type = .f128, .kind = .{ .reg = .rdx } },
...@@ -40718,8 +42043,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40718,8 +42043,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40718 .call_frame = .{ .alignment = .@"16" },42043 .call_frame = .{ .alignment = .@"16" },
40719 .extra_temps = .{42044 .extra_temps = .{
40720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },42045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40721 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },42046 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40722 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },42047 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
40723 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },42048 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40724 .{ .type = .f128, .kind = .{ .reg = .rdx } },42049 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40725 .{ .type = .f128, .kind = .mem },42050 .{ .type = .f128, .kind = .mem },
...@@ -40761,7 +42086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40761,7 +42086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40761 };42086 };
40762 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);42087 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
40763 },42088 },
40764 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {42089 .ptr_add => |air_tag| {
40765 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;42090 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
40766 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;42091 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
40767 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });42092 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 {...@@ -40817,7 +42142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40817 .patterns = &.{42142 .patterns = &.{
40818 .{ .src = .{ .to_gpr, .to_gpr, .none } },42143 .{ .src = .{ .to_gpr, .to_gpr, .none } },
40819 },42144 },
40820 .dst_temps = .{ .{ .ref = .src1 }, .unused },42145 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .unused },
40821 .each = .{ .once = &.{42146 .each = .{ .once = &.{
40822 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },42147 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
40823 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },42148 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
...@@ -40838,7 +42163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40838,7 +42163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40838 .patterns = &.{42163 .patterns = &.{
40839 .{ .src = .{ .to_gpr, .to_gpr, .none } },42164 .{ .src = .{ .to_gpr, .to_gpr, .none } },
40840 },42165 },
40841 .dst_temps = .{ .{ .ref = .src1 }, .unused },42166 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .unused },
40842 .each = .{ .once = &.{42167 .each = .{ .once = &.{
40843 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },42168 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
40844 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },42169 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
...@@ -40875,7 +42200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40875,7 +42200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40875 } else res[0] = ops[0];42200 } else res[0] = ops[0];
40876 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);42201 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
40877 },42202 },
40878 .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {42203 .ptr_sub => |air_tag| {
40879 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;42204 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
40880 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;42205 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
40881 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });42206 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 {...@@ -41004,7 +42329,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41004 } else res[0] = ops[0];42329 } else res[0] = ops[0];
41005 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);42330 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
41006 },42331 },
41007 .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {42332 .max => |air_tag| {
41008 const bin_op = air_datas[@intFromEnum(inst)].bin_op;42333 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
41009 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });42334 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
41010 var res: [1]Temp = undefined;42335 var res: [1]Temp = undefined;
...@@ -43810,7 +45135,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -43810,7 +45135,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43810 .any,45135 .any,
43811 },45136 },
43812 .patterns = &.{45137 .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 } },
43814 },45143 },
43815 .call_frame = .{ .alignment = .@"16" },45144 .call_frame = .{ .alignment = .@"16" },
43816 .extra_temps = .{45145 .extra_temps = .{
...@@ -43950,8 +45279,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -43950,8 +45279,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43950 .call_frame = .{ .alignment = .@"16" },45279 .call_frame = .{ .alignment = .@"16" },
43951 .extra_temps = .{45280 .extra_temps = .{
43952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43953 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },45282 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
43954 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },45283 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
43955 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },45284 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
43956 .unused,45285 .unused,
43957 .unused,45286 .unused,
...@@ -43986,8 +45315,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -43986,8 +45315,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43986 .call_frame = .{ .alignment = .@"16" },45315 .call_frame = .{ .alignment = .@"16" },
43987 .extra_temps = .{45316 .extra_temps = .{
43988 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43989 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },45318 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
43990 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },45319 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
43991 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },45320 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
43992 .unused,45321 .unused,
43993 .unused,45322 .unused,
...@@ -44023,8 +45352,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44023,8 +45352,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44023 .call_frame = .{ .alignment = .@"16" },45352 .call_frame = .{ .alignment = .@"16" },
44024 .extra_temps = .{45353 .extra_temps = .{
44025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44026 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },45355 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
44027 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },45356 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
44028 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },45357 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
44029 .{ .type = .f16, .kind = .{ .reg = .ax } },45358 .{ .type = .f16, .kind = .{ .reg = .ax } },
44030 .unused,45359 .unused,
...@@ -44063,8 +45392,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44063,8 +45392,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44064 .{ .type = .f16, .kind = .{ .reg = .ax } },45393 .{ .type = .f16, .kind = .{ .reg = .ax } },
44065 .{ .type = .f32, .kind = .mem },45394 .{ .type = .f32, .kind = .mem },
44066 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },45395 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
44067 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },45396 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
44068 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },45397 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
44069 .unused,45398 .unused,
44070 .unused,45399 .unused,
...@@ -44476,7 +45805,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44476,7 +45805,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44476 .any,45805 .any,
44477 },45806 },
44478 .patterns = &.{45807 .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 } },
44480 },45813 },
44481 .call_frame = .{ .alignment = .@"16" },45814 .call_frame = .{ .alignment = .@"16" },
44482 .extra_temps = .{45815 .extra_temps = .{
...@@ -44733,8 +46066,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44733,8 +46066,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44733 .call_frame = .{ .alignment = .@"16" },46066 .call_frame = .{ .alignment = .@"16" },
44734 .extra_temps = .{46067 .extra_temps = .{
44735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44736 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },46069 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
44737 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },46070 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
44738 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },46071 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
44739 .unused,46072 .unused,
44740 .unused,46073 .unused,
...@@ -45020,7 +46353,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45020,7 +46353,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45020 .any,46353 .any,
45021 },46354 },
45022 .patterns = &.{46355 .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 } },
45024 },46361 },
45025 .call_frame = .{ .alignment = .@"16" },46362 .call_frame = .{ .alignment = .@"16" },
45026 .extra_temps = .{46363 .extra_temps = .{
...@@ -45054,8 +46391,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45054,8 +46391,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45054 .call_frame = .{ .alignment = .@"16" },46391 .call_frame = .{ .alignment = .@"16" },
45055 .extra_temps = .{46392 .extra_temps = .{
45056 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45057 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },46394 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45058 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },46395 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
45059 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },46396 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45060 .unused,46397 .unused,
45061 .unused,46398 .unused,
...@@ -45089,8 +46426,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45089,8 +46426,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45089 .call_frame = .{ .alignment = .@"16" },46426 .call_frame = .{ .alignment = .@"16" },
45090 .extra_temps = .{46427 .extra_temps = .{
45091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45092 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },46429 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45093 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },46430 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
45094 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },46431 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45095 .unused,46432 .unused,
45096 .unused,46433 .unused,
...@@ -45124,8 +46461,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45124,8 +46461,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45124 .call_frame = .{ .alignment = .@"16" },46461 .call_frame = .{ .alignment = .@"16" },
45125 .extra_temps = .{46462 .extra_temps = .{
45126 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },46463 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45127 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },46464 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45128 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },46465 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
45129 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },46466 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45130 .unused,46467 .unused,
45131 .unused,46468 .unused,
...@@ -45157,7 +46494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45157,7 +46494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45157 };46494 };
45158 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);46495 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
45159 },46496 },
45160 .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {46497 .min => |air_tag| {
45161 const bin_op = air_datas[@intFromEnum(inst)].bin_op;46498 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
45162 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });46499 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
45163 var res: [1]Temp = undefined;46500 var res: [1]Temp = undefined;
...@@ -47969,7 +49306,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -47969,7 +49306,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47969 .any,49306 .any,
47970 },49307 },
47971 .patterns = &.{49308 .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 } },
47973 },49314 },
47974 .call_frame = .{ .alignment = .@"16" },49315 .call_frame = .{ .alignment = .@"16" },
47975 .extra_temps = .{49316 .extra_temps = .{
...@@ -48109,8 +49450,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48109,8 +49450,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48109 .call_frame = .{ .alignment = .@"16" },49450 .call_frame = .{ .alignment = .@"16" },
48110 .extra_temps = .{49451 .extra_temps = .{
48111 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48112 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },49453 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
48113 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },49454 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
48114 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },49455 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48115 .unused,49456 .unused,
48116 .unused,49457 .unused,
...@@ -48145,8 +49486,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48145,8 +49486,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48145 .call_frame = .{ .alignment = .@"16" },49486 .call_frame = .{ .alignment = .@"16" },
48146 .extra_temps = .{49487 .extra_temps = .{
48147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48148 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },49489 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
48149 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },49490 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
48150 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },49491 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48151 .unused,49492 .unused,
48152 .unused,49493 .unused,
...@@ -48182,8 +49523,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48182,8 +49523,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48182 .call_frame = .{ .alignment = .@"16" },49523 .call_frame = .{ .alignment = .@"16" },
48183 .extra_temps = .{49524 .extra_temps = .{
48184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48185 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },49526 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
48186 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },49527 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
48187 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },49528 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48188 .{ .type = .f16, .kind = .{ .reg = .ax } },49529 .{ .type = .f16, .kind = .{ .reg = .ax } },
48189 .unused,49530 .unused,
...@@ -48222,8 +49563,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48222,8 +49563,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48222 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48223 .{ .type = .f16, .kind = .{ .reg = .ax } },49564 .{ .type = .f16, .kind = .{ .reg = .ax } },
48224 .{ .type = .f32, .kind = .mem },49565 .{ .type = .f32, .kind = .mem },
48225 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },49566 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
48226 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },49567 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
48227 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },49568 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48228 .unused,49569 .unused,
48229 .unused,49570 .unused,
...@@ -48635,7 +49976,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48635,7 +49976,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48635 .any,49976 .any,
48636 },49977 },
48637 .patterns = &.{49978 .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 } },
48639 },49984 },
48640 .call_frame = .{ .alignment = .@"16" },49985 .call_frame = .{ .alignment = .@"16" },
48641 .extra_temps = .{49986 .extra_temps = .{
...@@ -48892,8 +50237,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48892,8 +50237,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48892 .call_frame = .{ .alignment = .@"16" },50237 .call_frame = .{ .alignment = .@"16" },
48893 .extra_temps = .{50238 .extra_temps = .{
48894 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },50239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48895 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },50240 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
48896 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },50241 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
48897 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },50242 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
48898 .unused,50243 .unused,
48899 .unused,50244 .unused,
...@@ -49167,7 +50512,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49167,7 +50512,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49167 .any,50512 .any,
49168 },50513 },
49169 .patterns = &.{50514 .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 } },
49171 },50520 },
49172 .call_frame = .{ .alignment = .@"16" },50521 .call_frame = .{ .alignment = .@"16" },
49173 .extra_temps = .{50522 .extra_temps = .{
...@@ -49201,8 +50550,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49201,8 +50550,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49201 .call_frame = .{ .alignment = .@"16" },50550 .call_frame = .{ .alignment = .@"16" },
49202 .extra_temps = .{50551 .extra_temps = .{
49203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },50552 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49204 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },50553 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49205 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },50554 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
49206 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },50555 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49207 .unused,50556 .unused,
49208 .unused,50557 .unused,
...@@ -49236,8 +50585,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49236,8 +50585,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49236 .call_frame = .{ .alignment = .@"16" },50585 .call_frame = .{ .alignment = .@"16" },
49237 .extra_temps = .{50586 .extra_temps = .{
49238 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },50587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49239 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },50588 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49240 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },50589 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
49241 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },50590 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49242 .unused,50591 .unused,
49243 .unused,50592 .unused,
...@@ -49271,8 +50620,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49271,8 +50620,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49271 .call_frame = .{ .alignment = .@"16" },50620 .call_frame = .{ .alignment = .@"16" },
49272 .extra_temps = .{50621 .extra_temps = .{
49273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },50622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49274 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },50623 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49275 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },50624 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
49276 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },50625 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49277 .unused,50626 .unused,
49278 .unused,50627 .unused,
...@@ -49304,10 +50653,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49304,10 +50653,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49304 };50653 };
49305 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);50654 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
49306 },50655 },
49307 .add_with_overflow => |air_tag| if (use_old) try cg.airAddSubWithOverflow(inst) else fallback: {50656 .add_with_overflow => |air_tag| {
49308 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;50657 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
49309 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;50658 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);
49311 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });50659 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
49312 var res: [2]Temp = undefined;50660 var res: [2]Temp = undefined;
49313 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{50661 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 {...@@ -50155,10 +51503,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50155 try res[0].withOverflow(&res[1], cg);51503 try res[0].withOverflow(&res[1], cg);
50156 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);51504 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
50157 },51505 },
50158 .sub_with_overflow => |air_tag| if (use_old) try cg.airAddSubWithOverflow(inst) else fallback: {51506 .sub_with_overflow => |air_tag| {
50159 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;51507 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
50160 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;51508 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);
50162 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });51509 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
50163 var res: [2]Temp = undefined;51510 var res: [2]Temp = undefined;
50164 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{51511 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 {...@@ -51061,10 +52408,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51061 try res[0].withOverflow(&res[1], cg);52408 try res[0].withOverflow(&res[1], cg);
51062 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);52409 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
51063 },52410 },
51064 .mul_with_overflow => |air_tag| if (use_old) try cg.airMulWithOverflow(inst) else fallback: {52411 .mul_with_overflow => |air_tag| {
51065 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;52412 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
51066 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;52413 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);
51068 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });52414 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
51069 var res: [2]Temp = undefined;52415 var res: [2]Temp = undefined;
51070 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{52416 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 {...@@ -54659,10 +56005,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
54659 try res[0].withOverflow(&res[1], cg);56005 try res[0].withOverflow(&res[1], cg);
54660 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);56006 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
54661 },56007 },
54662 .shl_with_overflow => |air_tag| if (use_old) try cg.airShlWithOverflow(inst) else fallback: {56008 .shl_with_overflow => |air_tag| {
54663 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;56009 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
54664 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;56010 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);
54666 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });56011 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
54667 var res: [2]Temp = undefined;56012 var res: [2]Temp = undefined;
54668 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{56013 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 {...@@ -55515,7 +56860,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55515 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },56860 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55516 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },56861 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55517 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },56862 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55518 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },56863 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55519 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },56864 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
55520 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },56865 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
55521 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },56866 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -55579,7 +56924,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55579,7 +56924,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55579 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },56924 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55580 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },56925 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55581 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },56926 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55582 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },56927 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55583 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },56928 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
55584 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },56929 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
55585 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },56930 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -55643,7 +56988,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55643,7 +56988,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55643 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },56988 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55644 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },56989 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55645 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },56990 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55646 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },56991 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55647 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },56992 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
55648 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },56993 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
55649 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },56994 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -55707,7 +57052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55707,7 +57052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55707 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },57052 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55708 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57053 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55709 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57054 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55710 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57055 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55711 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57056 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
55712 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57057 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
55713 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },57058 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -55771,7 +57116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55771,7 +57116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55771 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },57116 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55772 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57117 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55773 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57118 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55774 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57119 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55775 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57120 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
55776 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57121 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
55777 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },57122 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -55827,7 +57172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55827,7 +57172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55827 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },57172 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55828 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57173 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55829 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57174 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55830 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57175 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55831 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57176 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
55832 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57177 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
55833 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },57178 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -55883,7 +57228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55883,7 +57228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55883 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },57228 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55884 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57229 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55885 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57230 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55886 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57231 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55887 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57232 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
55888 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57233 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
55889 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },57234 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -55939,7 +57284,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55939,7 +57284,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55939 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },57284 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
55940 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57285 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55941 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57286 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55942 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57287 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55943 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57288 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
55944 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57289 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
55945 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },57290 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -55995,7 +57340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -55995,7 +57340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55995 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57340 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
55996 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57341 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
55997 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57342 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55998 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57343 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
55999 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57344 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56000 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57345 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56001 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57346 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56059,7 +57404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56059,7 +57404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56059 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57404 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56060 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57405 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56061 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57406 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56062 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57407 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56063 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57408 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56064 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57409 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56065 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57410 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56123,7 +57468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56123,7 +57468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56123 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57468 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56124 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57469 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56125 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57470 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56126 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57471 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56127 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57472 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56128 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57473 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56129 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57474 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56187,7 +57532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56187,7 +57532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56187 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57532 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56188 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57533 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56189 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57534 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56190 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57535 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56191 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57536 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56192 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57537 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56193 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57538 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56251,7 +57596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56251,7 +57596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56251 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57596 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56252 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57597 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56253 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57598 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56254 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57599 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56255 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57600 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56256 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57601 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56257 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },57602 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56308,7 +57653,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56308,7 +57653,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56308 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57653 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56309 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57654 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56310 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57655 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56311 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57656 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56312 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57657 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56313 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57658 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56314 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },57659 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56365,7 +57710,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56365,7 +57710,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56365 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57710 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56366 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57711 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56367 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57712 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56368 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57713 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56369 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57714 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56370 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57715 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56371 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },57716 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56422,7 +57767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56422,7 +57767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56422 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57767 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56423 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57768 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56424 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57769 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56425 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57770 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56426 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },57771 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56427 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },57772 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56428 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },57773 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56479,7 +57824,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56479,7 +57824,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56479 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57824 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56480 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57825 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56481 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57826 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56482 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57827 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56483 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57828 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56484 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57829 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56485 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57830 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56549,7 +57894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56549,7 +57894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56549 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57894 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56550 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57895 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56551 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57896 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56552 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57897 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56553 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57898 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56554 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57899 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56555 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57900 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56619,7 +57964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56619,7 +57964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56619 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },57964 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56620 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },57965 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56621 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },57966 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56622 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },57967 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56623 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },57968 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56624 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },57969 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56625 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },57970 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56689,7 +58034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56689,7 +58034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56689 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58034 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56690 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58035 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56691 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58036 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56692 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58037 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56693 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },58038 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
56694 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },58039 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
56695 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },58040 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -56759,7 +58104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56759,7 +58104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56759 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58104 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56760 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58105 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56761 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58106 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56762 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58107 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56763 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58108 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56764 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58109 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56765 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58110 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56821,7 +58166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56821,7 +58166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56821 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58166 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56822 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58167 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56823 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58168 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56824 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58169 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56825 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58170 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56826 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58171 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56827 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58172 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56883,7 +58228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56883,7 +58228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56883 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58228 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56884 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58229 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56885 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58230 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56886 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58231 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56887 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58232 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56888 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58233 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56889 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58234 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -56945,7 +58290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -56945,7 +58290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56945 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58290 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
56946 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58291 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
56947 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58292 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56948 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58293 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
56949 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58294 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
56950 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58295 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
56951 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58296 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -57007,7 +58352,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57007,7 +58352,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57007 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58352 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
57008 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58353 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57009 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58354 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57010 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58355 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57011 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58356 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57012 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58357 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57013 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58358 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -57069,7 +58414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57069,7 +58414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57069 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58414 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
57070 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58415 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57071 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58416 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57072 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58417 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57073 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58418 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57074 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58419 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57075 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58420 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -57131,7 +58476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57131,7 +58476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57131 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58476 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
57132 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58477 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57133 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58478 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57134 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58479 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57135 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58480 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57136 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58481 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57137 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58482 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -57193,7 +58538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57193,7 +58538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57193 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },58538 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
57194 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58539 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57195 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58540 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57196 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58541 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57197 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58542 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57198 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58543 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57199 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },58544 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
...@@ -57255,7 +58600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57255,7 +58600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57255 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },58600 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57256 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58601 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57257 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58602 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57258 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58603 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57259 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },58604 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
57260 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },58605 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
57261 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },58606 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -57325,7 +58670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57325,7 +58670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57325 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },58670 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57326 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58671 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57327 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58672 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57328 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58673 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57329 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },58674 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
57330 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },58675 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
57331 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },58676 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -57395,7 +58740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57395,7 +58740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57395 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },58740 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57396 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58741 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57397 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58742 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57398 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58743 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57399 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },58744 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
57400 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },58745 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
57401 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },58746 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -57465,7 +58810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57465,7 +58810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57465 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },58810 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57466 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58811 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57467 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58812 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57468 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58813 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57469 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },58814 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
57470 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },58815 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
57471 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },58816 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -57535,7 +58880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57535,7 +58880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57535 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },58880 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57536 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58881 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57537 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58882 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57538 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58883 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57539 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58884 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57540 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58885 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57541 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },58886 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57596,7 +58941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57596,7 +58941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57596 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },58941 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57597 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },58942 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57598 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },58943 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57599 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },58944 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57600 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },58945 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57601 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },58946 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57602 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },58947 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57657,7 +59002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57657,7 +59002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57657 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },59002 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57658 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },59003 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57659 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },59004 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57660 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },59005 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57661 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },59006 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57662 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },59007 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57663 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },59008 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57718,7 +59063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57718,7 +59063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57718 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },59063 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57719 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },59064 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57720 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },59065 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57721 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },59066 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57722 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },59067 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57723 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },59068 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57724 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },59069 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57779,7 +59124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57779,7 +59124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57779 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },59124 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57780 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },59125 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57781 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },59126 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57782 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },59127 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57783 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },59128 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57784 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },59129 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57785 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },59130 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57840,7 +59185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57840,7 +59185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57840 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },59185 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57841 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },59186 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57842 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },59187 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57843 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },59188 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57844 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },59189 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57845 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },59190 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57846 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },59191 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57901,7 +59246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57901,7 +59246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57901 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },59246 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57902 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },59247 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57903 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },59248 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57904 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },59249 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57905 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },59250 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57906 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },59251 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57907 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },59252 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -57962,7 +59307,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -57962,7 +59307,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57962 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },59307 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
57963 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },59308 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
57964 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },59309 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57965 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },59310 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
57966 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },59311 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
57967 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },59312 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
57968 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },59313 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -58005,7 +59350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -58005,7 +59350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58005 try res[0].withOverflow(&res[1], cg);59350 try res[0].withOverflow(&res[1], cg);
58006 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);59351 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
58007 },59352 },
58008 .alloc => if (use_old) try cg.airAlloc(inst) else {59353 .alloc => {
58009 const ty = air_datas[@intFromEnum(inst)].ty;59354 const ty = air_datas[@intFromEnum(inst)].ty;
58010 const slot = try cg.tempInit(ty, .{ .lea_frame = .{59355 const slot = try cg.tempInit(ty, .{ .lea_frame = .{
58011 .index = try cg.allocMemPtr(inst),59356 .index = try cg.allocMemPtr(inst),
...@@ -58013,7 +59358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -58013,7 +59358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58013 try slot.finish(inst, &.{}, &.{}, cg);59358 try slot.finish(inst, &.{}, &.{}, cg);
58014 },59359 },
58015 .inferred_alloc, .inferred_alloc_comptime => unreachable,59360 .inferred_alloc, .inferred_alloc_comptime => unreachable,
58016 .ret_ptr => if (use_old) try cg.airRetPtr(inst) else {59361 .ret_ptr => {
58017 const ty = air_datas[@intFromEnum(inst)].ty;59362 const ty = air_datas[@intFromEnum(inst)].ty;
58018 var slot = switch (cg.ret_mcv.long) {59363 var slot = switch (cg.ret_mcv.long) {
58019 else => unreachable,59364 else => unreachable,
...@@ -58029,7 +59374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -58029,7 +59374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58029 try slot.finish(inst, &.{}, &.{}, cg);59374 try slot.finish(inst, &.{}, &.{}, cg);
58030 },59375 },
58031 .assembly => try cg.airAsm(inst),59376 .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| {
58033 const bin_op = air_datas[@intFromEnum(inst)].bin_op;59378 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
58034 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });59379 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
58035 var res: [1]Temp = undefined;59380 var res: [1]Temp = undefined;
...@@ -58399,9 +59744,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -58399,9 +59744,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58399 };59744 };
58400 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);59745 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
58401 },59746 },
58402 .shr, .shr_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: {59747 .shr, .shr_exact => |air_tag| {
58403 const bin_op = air_datas[@intFromEnum(inst)].bin_op;59748 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
58404 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst);
58405 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });59749 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
58406 var res: [1]Temp = undefined;59750 var res: [1]Temp = undefined;
58407 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{59751 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 {...@@ -58964,9 +60308,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58964 };60308 };
58965 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);60309 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
58966 },60310 },
58967 .shl, .shl_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: {60311 .shl, .shl_exact => |air_tag| {
58968 const bin_op = air_datas[@intFromEnum(inst)].bin_op;60312 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
58969 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst);
58970 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });60313 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
58971 var res: [1]Temp = undefined;60314 var res: [1]Temp = undefined;
58972 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{60315 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 {...@@ -59339,10 +60682,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59339 }60682 }
59340 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);60683 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
59341 },60684 },
59342 .shl_sat => |air_tag| if (use_old) try cg.airShlSat(inst) else fallback: {60685 .shl_sat => |air_tag| {
59343 const bin_op = air_datas[@intFromEnum(inst)].bin_op;60686 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
59344 const lhs_ty = cg.typeOf(bin_op.lhs);60687 const lhs_ty = cg.typeOf(bin_op.lhs);
59345 if (lhs_ty.isVector(zcu)) break :fallback try cg.airShlSat(inst);
59346 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });60688 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
59347 var res: [1]Temp = undefined;60689 var res: [1]Temp = undefined;
59348 switch (ops[1].tracking(cg).short) {60690 switch (ops[1].tracking(cg).short) {
...@@ -61190,7 +62532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61190,7 +62532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61190 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },62532 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
61191 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },62533 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61192 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },62534 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61193 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },62535 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61194 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },62536 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
61195 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },62537 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
61196 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },62538 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -61274,7 +62616,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61274,7 +62616,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61274 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },62616 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
61275 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },62617 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61276 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },62618 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61277 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },62619 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61278 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },62620 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
61279 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },62621 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
61280 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },62622 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -61357,7 +62699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61357,7 +62699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61357 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },62699 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
61358 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },62700 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61359 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },62701 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61360 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },62702 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61361 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },62703 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
61362 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },62704 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
61363 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },62705 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -61427,7 +62769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61427,7 +62769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61427 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },62769 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
61428 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },62770 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61429 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },62771 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61430 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },62772 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61431 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },62773 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
61432 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },62774 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
61433 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },62775 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -61498,7 +62840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61498,7 +62840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61498 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },62840 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61499 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },62841 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61500 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },62842 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61501 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },62843 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61502 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },62844 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
61503 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },62845 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
61504 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },62846 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -61583,7 +62925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61583,7 +62925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61583 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },62925 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61584 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },62926 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61585 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },62927 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61586 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },62928 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61587 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },62929 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
61588 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },62930 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
61589 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },62931 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -61667,7 +63009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61667,7 +63009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61667 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63009 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61668 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63010 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61669 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63011 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61670 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63012 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61671 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63013 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
61672 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63014 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
61673 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63015 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -61738,7 +63080,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61738,7 +63080,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61738 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63080 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61739 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63081 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61740 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63082 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61741 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63083 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61742 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63084 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
61743 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63085 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
61744 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63086 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -61810,7 +63152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61810,7 +63152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61810 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63152 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61811 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63153 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61812 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63154 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61813 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63155 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61814 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },63156 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
61815 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },63157 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
61816 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },63158 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -61901,7 +63243,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61901,7 +63243,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61901 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63243 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61902 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63244 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61903 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63245 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61904 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63246 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61905 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },63247 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
61906 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },63248 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
61907 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },63249 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
...@@ -61992,7 +63334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -61992,7 +63334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61992 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63334 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
61993 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63335 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
61994 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63336 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61995 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63337 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
61996 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63338 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
61997 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63339 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
61998 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63340 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62070,7 +63412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62070,7 +63412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62070 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63412 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
62071 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63413 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62072 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63414 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62073 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63415 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62074 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63416 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62075 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63417 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62076 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63418 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62148,7 +63490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62148,7 +63490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62148 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63490 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
62149 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63491 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62150 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63492 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62151 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63493 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62152 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63494 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62153 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63495 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62154 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63496 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62226,7 +63568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62226,7 +63568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62226 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },63568 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
62227 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63569 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62228 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63570 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62229 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63571 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62230 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63572 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62231 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63573 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62232 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63574 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62304,7 +63646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62304,7 +63646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62304 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },63646 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
62305 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63647 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62306 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63648 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62307 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63649 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62308 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },63650 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
62309 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },63651 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
62310 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },63652 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -62394,7 +63736,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62394,7 +63736,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62394 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },63736 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
62395 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63737 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62396 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63738 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62397 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63739 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62398 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },63740 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
62399 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },63741 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
62400 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },63742 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
...@@ -62484,7 +63826,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62484,7 +63826,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62484 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },63826 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
62485 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63827 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62486 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63828 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62487 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63829 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62488 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63830 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62489 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63831 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62490 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63832 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62561,7 +63903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62561,7 +63903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62561 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },63903 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
62562 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63904 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62563 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63905 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62564 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63906 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62565 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63907 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62566 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63908 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62567 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63909 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62638,7 +63980,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62638,7 +63980,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62638 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },63980 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
62639 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },63981 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62640 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },63982 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62641 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },63983 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62642 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },63984 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62643 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },63985 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62644 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },63986 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62715,7 +64057,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62715,7 +64057,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62715 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },64057 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
62716 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },64058 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
62717 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },64059 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62718 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },64060 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
62719 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },64061 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
62720 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },64062 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
62721 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },64063 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
...@@ -62763,7 +64105,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -62763,7 +64105,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62763 };64105 };
62764 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);64106 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
62765 },64107 },
62766 .not => |air_tag| if (use_old) try cg.airUnOp(inst, air_tag) else {64108 .not => |air_tag| {
62767 const ty_op = air_datas[@intFromEnum(inst)].ty_op;64109 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
62768 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});64110 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
62769 var res: [1]Temp = undefined;64111 var res: [1]Temp = undefined;
...@@ -64003,7 +65345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -64003,7 +65345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
64003 try cg.lowerBlock(inst, @ptrCast(cg.air.extra.items[block.end..][0..block.data.body_len]));65345 try cg.lowerBlock(inst, @ptrCast(cg.air.extra.items[block.end..][0..block.data.body_len]));
64004 if (!cg.mod.strip) try cg.asmPseudo(.pseudo_dbg_leave_block_none);65346 if (!cg.mod.strip) try cg.asmPseudo(.pseudo_dbg_leave_block_none);
64005 },65347 },
64006 .loop => if (use_old) try cg.airLoop(inst) else {65348 .loop => {
64007 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;65349 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
64008 const block = cg.air.extraData(Air.Block, ty_pl.payload);65350 const block = cg.air.extraData(Air.Block, ty_pl.payload);
64009 try cg.loops.putNoClobber(cg.gpa, inst, .{65351 try cg.loops.putNoClobber(cg.gpa, inst, .{
...@@ -64027,14 +65369,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -64027,14 +65369,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
64027 .br => try cg.airBr(inst),65369 .br => try cg.airBr(inst),
64028 .trap => try cg.asmOpOnly(.{ ._2, .ud }),65370 .trap => try cg.asmOpOnly(.{ ._2, .ud }),
64029 .breakpoint => try cg.asmOpOnly(.{ ._3, .int }),65371 .breakpoint => try cg.asmOpOnly(.{ ._3, .int }),
64030 .ret_addr => if (use_old) try cg.airRetAddr(inst) else {65372 .ret_addr => {
64031 var slot = try cg.tempInit(.usize, .{ .load_frame = .{65373 var slot = try cg.tempInit(.usize, .{ .load_frame = .{
64032 .index = .ret_addr,65374 .index = .ret_addr,
64033 } });65375 } });
64034 while (try slot.toRegClass(true, .general_purpose, cg)) {}65376 while (try slot.toRegClass(true, .general_purpose, cg)) {}
64035 try slot.finish(inst, &.{}, &.{}, cg);65377 try slot.finish(inst, &.{}, &.{}, cg);
64036 },65378 },
64037 .frame_addr => if (use_old) try cg.airFrameAddress(inst) else {65379 .frame_addr => {
64038 const slot = try cg.tempInit(.usize, .{ .lea_frame = .{65380 const slot = try cg.tempInit(.usize, .{ .lea_frame = .{
64039 .index = .base_ptr,65381 .index = .base_ptr,
64040 } });65382 } });
...@@ -64044,7 +65386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -64044,7 +65386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
64044 .call_always_tail => try cg.airCall(inst, .always_tail, .{ .safety = true }),65386 .call_always_tail => try cg.airCall(inst, .always_tail, .{ .safety = true }),
64045 .call_never_tail => try cg.airCall(inst, .never_tail, .{ .safety = true }),65387 .call_never_tail => try cg.airCall(inst, .never_tail, .{ .safety = true }),
64046 .call_never_inline => try cg.airCall(inst, .never_inline, .{ .safety = true }),65388 .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| {
64048 const ty_op = air_datas[@intFromEnum(inst)].ty_op;65390 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
64049 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});65391 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
64050 var res: [1]Temp = undefined;65392 var res: [1]Temp = undefined;
...@@ -67149,9 +68491,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67149,9 +68491,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67149 };68491 };
67150 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);68492 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
67151 },68493 },
67152 .ctz => |air_tag| if (use_old) try cg.airCtz(inst) else fallback: {68494 .ctz => |air_tag| {
67153 const ty_op = air_datas[@intFromEnum(inst)].ty_op;68495 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
67154 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airCtz(inst);
67155 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});68496 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
67156 var res: [1]Temp = undefined;68497 var res: [1]Temp = undefined;
67157 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{68498 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
...@@ -67547,9 +68888,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67547,9 +68888,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67547 };68888 };
67548 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);68889 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
67549 },68890 },
67550 .popcount => |air_tag| if (use_old) try cg.airPopCount(inst) else fallback: {68891 .popcount => |air_tag| {
67551 const ty_op = air_datas[@intFromEnum(inst)].ty_op;68892 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
67552 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airPopCount(inst);
67553 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});68893 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
67554 var res: [1]Temp = undefined;68894 var res: [1]Temp = undefined;
67555 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{68895 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
...@@ -68436,9 +69776,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68436,9 +69776,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68436 };69776 };
68437 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);69777 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
68438 },69778 },
68439 .byte_swap => |air_tag| if (use_old) try cg.airByteSwap(inst) else fallback: {69779 .byte_swap => |air_tag| {
68440 const ty_op = air_datas[@intFromEnum(inst)].ty_op;69780 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
68441 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airByteSwap(inst);
68442 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});69781 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
68443 var res: [1]Temp = undefined;69782 var res: [1]Temp = undefined;
68444 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{69783 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
...@@ -69086,9 +70425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -69086,9 +70425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
69086 };70425 };
69087 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);70426 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
69088 },70427 },
69089 .bit_reverse => |air_tag| if (use_old) try cg.airBitReverse(inst) else fallback: {70428 .bit_reverse => |air_tag| {
69090 const ty_op = air_datas[@intFromEnum(inst)].ty_op;70429 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
69091 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airByteSwap(inst);
69092 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});70430 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
69093 var res: [1]Temp = undefined;70431 var res: [1]Temp = undefined;
69094 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{70432 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
...@@ -72189,7 +73527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72189,7 +73527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72189 };73527 };
72190 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);73528 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
72191 },73529 },
72192 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {73530 .sqrt => |air_tag| {
72193 const un_op = air_datas[@intFromEnum(inst)].un_op;73531 const un_op = air_datas[@intFromEnum(inst)].un_op;
72194 var ops = try cg.tempsFromOperands(inst, .{un_op});73532 var ops = try cg.tempsFromOperands(inst, .{un_op});
72195 var res: [1]Temp = undefined;73533 var res: [1]Temp = undefined;
...@@ -72209,7 +73547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72209,7 +73547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72209 .required_features = .{ .sse, null, null, null },73547 .required_features = .{ .sse, null, null, null },
72210 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },73548 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
72211 .patterns = &.{73549 .patterns = &.{
72212 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },73550 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
72213 },73551 },
72214 .call_frame = .{ .alignment = .@"16" },73552 .call_frame = .{ .alignment = .@"16" },
72215 .extra_temps = .{73553 .extra_temps = .{
...@@ -72294,7 +73632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72294,7 +73632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72294 .call_frame = .{ .alignment = .@"16" },73632 .call_frame = .{ .alignment = .@"16" },
72295 .extra_temps = .{73633 .extra_temps = .{
72296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73635 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72298 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },73636 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72299 .unused,73637 .unused,
72300 .unused,73638 .unused,
...@@ -72325,7 +73663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72325,7 +73663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72325 .call_frame = .{ .alignment = .@"16" },73663 .call_frame = .{ .alignment = .@"16" },
72326 .extra_temps = .{73664 .extra_temps = .{
72327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73666 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72329 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },73667 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72330 .unused,73668 .unused,
72331 .unused,73669 .unused,
...@@ -72356,7 +73694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72356,7 +73694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72356 .call_frame = .{ .alignment = .@"16" },73694 .call_frame = .{ .alignment = .@"16" },
72357 .extra_temps = .{73695 .extra_temps = .{
72358 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73696 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72359 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73697 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72360 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },73698 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72361 .{ .type = .f16, .kind = .{ .reg = .ax } },73699 .{ .type = .f16, .kind = .{ .reg = .ax } },
72362 .unused,73700 .unused,
...@@ -72390,7 +73728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72390,7 +73728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72391 .{ .type = .f16, .kind = .{ .reg = .ax } },73729 .{ .type = .f16, .kind = .{ .reg = .ax } },
72392 .{ .type = .f32, .kind = .mem },73730 .{ .type = .f32, .kind = .mem },
72393 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73731 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72394 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },73732 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72395 .unused,73733 .unused,
72396 .unused,73734 .unused,
...@@ -72459,7 +73797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72459,7 +73797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72459 .required_features = .{ .sse, null, null, null },73797 .required_features = .{ .sse, null, null, null },
72460 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },73798 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
72461 .patterns = &.{73799 .patterns = &.{
72462 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },73800 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
72463 },73801 },
72464 .call_frame = .{ .alignment = .@"16" },73802 .call_frame = .{ .alignment = .@"16" },
72465 .extra_temps = .{73803 .extra_temps = .{
...@@ -72578,7 +73916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72578,7 +73916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72578 .call_frame = .{ .alignment = .@"16" },73916 .call_frame = .{ .alignment = .@"16" },
72579 .extra_temps = .{73917 .extra_temps = .{
72580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72581 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },73919 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72582 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },73920 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
72583 .unused,73921 .unused,
72584 .unused,73922 .unused,
...@@ -72608,7 +73946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72608,7 +73946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72608 .call_frame = .{ .alignment = .@"16" },73946 .call_frame = .{ .alignment = .@"16" },
72609 .extra_temps = .{73947 .extra_temps = .{
72610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72611 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },73949 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72612 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },73950 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
72613 .unused,73951 .unused,
72614 .unused,73952 .unused,
...@@ -72675,7 +74013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72675,7 +74013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72675 .required_features = .{ .sse, null, null, null },74013 .required_features = .{ .sse, null, null, null },
72676 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },74014 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
72677 .patterns = &.{74015 .patterns = &.{
72678 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },74016 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
72679 },74017 },
72680 .call_frame = .{ .alignment = .@"16" },74018 .call_frame = .{ .alignment = .@"16" },
72681 .extra_temps = .{74019 .extra_temps = .{
...@@ -72794,7 +74132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72794,7 +74132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72794 .call_frame = .{ .alignment = .@"16" },74132 .call_frame = .{ .alignment = .@"16" },
72795 .extra_temps = .{74133 .extra_temps = .{
72796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72797 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },74135 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72798 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },74136 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72799 .unused,74137 .unused,
72800 .unused,74138 .unused,
...@@ -72824,7 +74162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72824,7 +74162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72824 .call_frame = .{ .alignment = .@"16" },74162 .call_frame = .{ .alignment = .@"16" },
72825 .extra_temps = .{74163 .extra_temps = .{
72826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72827 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },74165 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72828 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },74166 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72829 .unused,74167 .unused,
72830 .unused,74168 .unused,
...@@ -72854,7 +74192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72854,7 +74192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72854 .call_frame = .{ .alignment = .@"16" },74192 .call_frame = .{ .alignment = .@"16" },
72855 .extra_temps = .{74193 .extra_temps = .{
72856 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72857 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },74195 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72858 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },74196 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72859 .unused,74197 .unused,
72860 .unused,74198 .unused,
...@@ -72877,6 +74215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72877,6 +74215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72877 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72878 } },74216 } },
72879 }, .{74217 }, .{
74218 .required_abi = .gnu,
72880 .required_features = .{ .x87, null, null, null },74219 .required_features = .{ .x87, null, null, null },
72881 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74220 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
72882 .patterns = &.{74221 .patterns = &.{
...@@ -72903,6 +74242,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72903,6 +74242,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72903 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },74242 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
72904 } },74243 } },
72905 }, .{74244 }, .{
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,
72906 .required_features = .{ .x87, null, null, null },74279 .required_features = .{ .x87, null, null, null },
72907 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74280 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
72908 .patterns = &.{74281 .patterns = &.{
...@@ -72931,11 +74304,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72931,11 +74304,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72931 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },74304 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
72932 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
72933 } },74306 } },
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 } },
72934 }, .{74343 }, .{
72935 .required_features = .{ .sse, null, null, null },74344 .required_features = .{ .sse, null, null, null },
72936 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },74345 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
72937 .patterns = &.{74346 .patterns = &.{
72938 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },74347 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
72939 },74348 },
72940 .call_frame = .{ .alignment = .@"16" },74349 .call_frame = .{ .alignment = .@"16" },
72941 .extra_temps = .{74350 .extra_temps = .{
...@@ -72965,7 +74374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72965,7 +74374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72965 .call_frame = .{ .alignment = .@"16" },74374 .call_frame = .{ .alignment = .@"16" },
72966 .extra_temps = .{74375 .extra_temps = .{
72967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72968 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },74377 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72969 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },74378 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
72970 .unused,74379 .unused,
72971 .unused,74380 .unused,
...@@ -72995,7 +74404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72995,7 +74404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72995 .call_frame = .{ .alignment = .@"16" },74404 .call_frame = .{ .alignment = .@"16" },
72996 .extra_temps = .{74405 .extra_temps = .{
72997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72998 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },74407 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
72999 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },74408 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
73000 .unused,74409 .unused,
73001 .unused,74410 .unused,
...@@ -73025,7 +74434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73025,7 +74434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73025 .call_frame = .{ .alignment = .@"16" },74434 .call_frame = .{ .alignment = .@"16" },
73026 .extra_temps = .{74435 .extra_temps = .{
73027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73028 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },74437 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73029 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },74438 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
73030 .unused,74439 .unused,
73031 .unused,74440 .unused,
...@@ -73056,7 +74465,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73056,7 +74465,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73056 };74465 };
73057 try res[0].finish(inst, &.{un_op}, &ops, cg);74466 try res[0].finish(inst, &.{un_op}, &ops, cg);
73058 },74467 },
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| {
73060 const un_op = air_datas[@intFromEnum(inst)].un_op;74469 const un_op = air_datas[@intFromEnum(inst)].un_op;
73061 var ops = try cg.tempsFromOperands(inst, .{un_op});74470 var ops = try cg.tempsFromOperands(inst, .{un_op});
73062 var res: [1]Temp = undefined;74471 var res: [1]Temp = undefined;
...@@ -73066,7 +74475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73066,7 +74475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73066 .required_features = .{ .sse, null, null, null },74475 .required_features = .{ .sse, null, null, null },
73067 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },74476 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
73068 .patterns = &.{74477 .patterns = &.{
73069 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },74478 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
73070 },74479 },
73071 .call_frame = .{ .alignment = .@"16" },74480 .call_frame = .{ .alignment = .@"16" },
73072 .extra_temps = .{74481 .extra_temps = .{
...@@ -73095,8 +74504,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73095,8 +74504,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73095 },74504 },
73096 .call_frame = .{ .alignment = .@"16" },74505 .call_frame = .{ .alignment = .@"16" },
73097 .extra_temps = .{74506 .extra_temps = .{
73098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74507 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73099 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },74508 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73100 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },74509 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73101 .unused,74510 .unused,
73102 .unused,74511 .unused,
...@@ -73110,13 +74519,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73110,13 +74519,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73110 .dst_temps = .{ .mem, .unused },74519 .dst_temps = .{ .mem, .unused },
73111 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74520 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73112 .each = .{ .once = &.{74521 .each = .{ .once = &.{
73113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74522 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
73114 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },74523 .{ .@"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) },
73116 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74525 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73117 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },74526 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
73118 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },74527 .{ ._, ._, .sub, .tmp0p, .si(2), ._, ._ },
73119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74528 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73120 } },74529 } },
73121 }, .{74530 }, .{
73122 .required_features = .{ .sse4_1, null, null, null },74531 .required_features = .{ .sse4_1, null, null, null },
...@@ -73126,8 +74535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73126,8 +74535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73126 },74535 },
73127 .call_frame = .{ .alignment = .@"16" },74536 .call_frame = .{ .alignment = .@"16" },
73128 .extra_temps = .{74537 .extra_temps = .{
73129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74538 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },74539 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73131 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },74540 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73132 .unused,74541 .unused,
73133 .unused,74542 .unused,
...@@ -73141,13 +74550,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73141,13 +74550,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73141 .dst_temps = .{ .mem, .unused },74550 .dst_temps = .{ .mem, .unused },
73142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74551 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73143 .each = .{ .once = &.{74552 .each = .{ .once = &.{
73144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74553 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
73145 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },74554 .{ .@"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), ._ },
73147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74556 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73148 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },74557 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
73149 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },74558 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
73150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74559 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73151 } },74560 } },
73152 }, .{74561 }, .{
73153 .required_features = .{ .sse2, null, null, null },74562 .required_features = .{ .sse2, null, null, null },
...@@ -73157,8 +74566,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73157,8 +74566,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73157 },74566 },
73158 .call_frame = .{ .alignment = .@"16" },74567 .call_frame = .{ .alignment = .@"16" },
73159 .extra_temps = .{74568 .extra_temps = .{
73160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74569 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73161 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },74570 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73162 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },74571 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73163 .{ .type = .f16, .kind = .{ .reg = .ax } },74572 .{ .type = .f16, .kind = .{ .reg = .ax } },
73164 .unused,74573 .unused,
...@@ -73172,14 +74581,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73172,14 +74581,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73172 .dst_temps = .{ .mem, .unused },74581 .dst_temps = .{ .mem, .unused },
73173 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73174 .each = .{ .once = &.{74583 .each = .{ .once = &.{
73175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74584 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
73176 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },74585 .{ .@"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), ._ },
73178 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74587 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73179 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },74588 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
73180 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },74589 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
73181 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },74590 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
73182 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74591 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73183 } },74592 } },
73184 }, .{74593 }, .{
73185 .required_features = .{ .sse, null, null, null },74594 .required_features = .{ .sse, null, null, null },
...@@ -73189,10 +74598,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73189,10 +74598,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73189 },74598 },
73190 .call_frame = .{ .alignment = .@"16" },74599 .call_frame = .{ .alignment = .@"16" },
73191 .extra_temps = .{74600 .extra_temps = .{
73192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74601 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73193 .{ .type = .f16, .kind = .{ .reg = .ax } },74602 .{ .type = .f16, .kind = .{ .reg = .ax } },
73194 .{ .type = .f32, .kind = .mem },74603 .{ .type = .f32, .kind = .mem },
73195 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },74604 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73196 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },74605 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73197 .unused,74606 .unused,
73198 .unused,74607 .unused,
...@@ -73204,22 +74613,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73204,22 +74613,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73204 .dst_temps = .{ .mem, .unused },74613 .dst_temps = .{ .mem, .unused },
73205 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74614 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73206 .each = .{ .once = &.{74615 .each = .{ .once = &.{
73207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74616 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
73208 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },74617 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
73209 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },74618 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
73210 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },74619 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
73211 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },74620 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
73212 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },74621 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
73213 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },74622 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
73214 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },74623 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
73215 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },74624 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
73216 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74625 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73217 } },74626 } },
73218 }, .{74627 }, .{
73219 .required_features = .{ .sse, null, null, null },74628 .required_features = .{ .sse, null, null, null },
73220 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },74629 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
73221 .patterns = &.{74630 .patterns = &.{
73222 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },74631 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
73223 },74632 },
73224 .call_frame = .{ .alignment = .@"16" },74633 .call_frame = .{ .alignment = .@"16" },
73225 .extra_temps = .{74634 .extra_temps = .{
...@@ -73248,8 +74657,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73248,8 +74657,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73248 },74657 },
73249 .call_frame = .{ .alignment = .@"16" },74658 .call_frame = .{ .alignment = .@"16" },
73250 .extra_temps = .{74659 .extra_temps = .{
73251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74660 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73252 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },74661 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73253 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },74662 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
73254 .unused,74663 .unused,
73255 .unused,74664 .unused,
...@@ -73263,12 +74672,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73263,12 +74672,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73263 .dst_temps = .{ .mem, .unused },74672 .dst_temps = .{ .mem, .unused },
73264 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73265 .each = .{ .once = &.{74674 .each = .{ .once = &.{
73266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74675 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
73267 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },74676 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
73268 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74677 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73269 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },74678 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
73270 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },74679 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
73271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74680 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73272 } },74681 } },
73273 }, .{74682 }, .{
73274 .required_features = .{ .sse, null, null, null },74683 .required_features = .{ .sse, null, null, null },
...@@ -73278,8 +74687,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73278,8 +74687,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73278 },74687 },
73279 .call_frame = .{ .alignment = .@"16" },74688 .call_frame = .{ .alignment = .@"16" },
73280 .extra_temps = .{74689 .extra_temps = .{
73281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74690 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73282 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },74691 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73283 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },74692 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
73284 .unused,74693 .unused,
73285 .unused,74694 .unused,
...@@ -73293,18 +74702,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73293,18 +74702,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73293 .dst_temps = .{ .mem, .unused },74702 .dst_temps = .{ .mem, .unused },
73294 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74703 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73295 .each = .{ .once = &.{74704 .each = .{ .once = &.{
73296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74705 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
73297 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },74706 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
73298 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74707 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73299 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },74708 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
73300 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },74709 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
73301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74710 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73302 } },74711 } },
73303 }, .{74712 }, .{
73304 .required_features = .{ .sse, null, null, null },74713 .required_features = .{ .sse, null, null, null },
73305 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },74714 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
73306 .patterns = &.{74715 .patterns = &.{
73307 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },74716 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
73308 },74717 },
73309 .call_frame = .{ .alignment = .@"16" },74718 .call_frame = .{ .alignment = .@"16" },
73310 .extra_temps = .{74719 .extra_temps = .{
...@@ -73333,8 +74742,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73333,8 +74742,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73333 },74742 },
73334 .call_frame = .{ .alignment = .@"16" },74743 .call_frame = .{ .alignment = .@"16" },
73335 .extra_temps = .{74744 .extra_temps = .{
73336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74745 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73337 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },74746 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73338 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },74747 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73339 .unused,74748 .unused,
73340 .unused,74749 .unused,
...@@ -73348,12 +74757,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73348,12 +74757,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73348 .dst_temps = .{ .mem, .unused },74757 .dst_temps = .{ .mem, .unused },
73349 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74758 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73350 .each = .{ .once = &.{74759 .each = .{ .once = &.{
73351 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74760 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
73352 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },74761 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
73353 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74762 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73354 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },74763 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
73355 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },74764 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
73356 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74765 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73357 } },74766 } },
73358 }, .{74767 }, .{
73359 .required_features = .{ .sse2, null, null, null },74768 .required_features = .{ .sse2, null, null, null },
...@@ -73363,8 +74772,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73363,8 +74772,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73363 },74772 },
73364 .call_frame = .{ .alignment = .@"16" },74773 .call_frame = .{ .alignment = .@"16" },
73365 .extra_temps = .{74774 .extra_temps = .{
73366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },74776 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73368 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },74777 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73369 .unused,74778 .unused,
73370 .unused,74779 .unused,
...@@ -73378,12 +74787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73378,12 +74787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73378 .dst_temps = .{ .mem, .unused },74787 .dst_temps = .{ .mem, .unused },
73379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74788 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73380 .each = .{ .once = &.{74789 .each = .{ .once = &.{
73381 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74790 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
73382 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },74791 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
73383 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74792 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73384 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },74793 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
73385 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },74794 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
73386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74795 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73387 } },74796 } },
73388 }, .{74797 }, .{
73389 .required_features = .{ .sse, null, null, null },74798 .required_features = .{ .sse, null, null, null },
...@@ -73393,8 +74802,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73393,8 +74802,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73393 },74802 },
73394 .call_frame = .{ .alignment = .@"16" },74803 .call_frame = .{ .alignment = .@"16" },
73395 .extra_temps = .{74804 .extra_temps = .{
73396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74805 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73397 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },74806 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73398 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },74807 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73399 .unused,74808 .unused,
73400 .unused,74809 .unused,
...@@ -73408,15 +74817,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73408,15 +74817,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73408 .dst_temps = .{ .mem, .unused },74817 .dst_temps = .{ .mem, .unused },
73409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74818 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73410 .each = .{ .once = &.{74819 .each = .{ .once = &.{
73411 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74820 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
73412 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },74821 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
73413 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },74822 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
73414 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74823 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73415 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },74824 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
73416 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },74825 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
73417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74826 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73418 } },74827 } },
73419 }, .{74828 }, .{
74829 .required_cc_abi = .sysv64,
73420 .required_features = .{ .avx, .x87, null, null },74830 .required_features = .{ .avx, .x87, null, null },
73421 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74831 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
73422 .patterns = &.{74832 .patterns = &.{
...@@ -73424,7 +74834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73424,7 +74834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73424 },74834 },
73425 .call_frame = .{ .size = 16, .alignment = .@"16" },74835 .call_frame = .{ .size = 16, .alignment = .@"16" },
73426 .extra_temps = .{74836 .extra_temps = .{
73427 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },74837 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73428 .{ .type = .f80, .kind = .{ .frame = .call_frame } },74838 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73429 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },74839 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73430 .unused,74840 .unused,
...@@ -73444,6 +74854,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73444,6 +74854,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74854 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73445 } },74855 } },
73446 }, .{74856 }, .{
74857 .required_cc_abi = .sysv64,
73447 .required_features = .{ .sse2, .x87, null, null },74858 .required_features = .{ .sse2, .x87, null, null },
73448 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74859 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
73449 .patterns = &.{74860 .patterns = &.{
...@@ -73451,7 +74862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73451,7 +74862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73451 },74862 },
73452 .call_frame = .{ .size = 16, .alignment = .@"16" },74863 .call_frame = .{ .size = 16, .alignment = .@"16" },
73453 .extra_temps = .{74864 .extra_temps = .{
73454 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },74865 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73455 .{ .type = .f80, .kind = .{ .frame = .call_frame } },74866 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73456 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },74867 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73457 .unused,74868 .unused,
...@@ -73471,6 +74882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73471,6 +74882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73471 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74882 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73472 } },74883 } },
73473 }, .{74884 }, .{
74885 .required_cc_abi = .sysv64,
73474 .required_features = .{ .sse, .x87, null, null },74886 .required_features = .{ .sse, .x87, null, null },
73475 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74887 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
73476 .patterns = &.{74888 .patterns = &.{
...@@ -73478,7 +74890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73478,7 +74890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73478 },74890 },
73479 .call_frame = .{ .size = 16, .alignment = .@"16" },74891 .call_frame = .{ .size = 16, .alignment = .@"16" },
73480 .extra_temps = .{74892 .extra_temps = .{
73481 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },74893 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73482 .{ .type = .f80, .kind = .{ .frame = .call_frame } },74894 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73483 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },74895 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73484 .unused,74896 .unused,
...@@ -73498,6 +74910,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73498,6 +74910,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73498 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },74910 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73499 } },74911 } },
73500 }, .{74912 }, .{
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,
73501 .required_features = .{ .avx, .x87, null, null },74941 .required_features = .{ .avx, .x87, null, null },
73502 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74942 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
73503 .patterns = &.{74943 .patterns = &.{
...@@ -73505,8 +74945,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73505,8 +74945,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73505 },74945 },
73506 .call_frame = .{ .size = 16, .alignment = .@"16" },74946 .call_frame = .{ .size = 16, .alignment = .@"16" },
73507 .extra_temps = .{74947 .extra_temps = .{
73508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74948 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73509 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },74949 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73510 .{ .type = .f80, .kind = .{ .frame = .call_frame } },74950 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73511 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },74951 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73512 .unused,74952 .unused,
...@@ -73520,16 +74960,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73520,16 +74960,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73520 .dst_temps = .{ .mem, .unused },74960 .dst_temps = .{ .mem, .unused },
73521 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73522 .each = .{ .once = &.{74962 .each = .{ .once = &.{
73523 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74963 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
73524 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },74964 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
73525 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },74965 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
73526 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },74966 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
73527 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },74967 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
73528 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },74968 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
73529 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },74969 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
73530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },74970 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73531 } },74971 } },
73532 }, .{74972 }, .{
74973 .required_cc_abi = .sysv64,
73533 .required_features = .{ .sse2, .x87, null, null },74974 .required_features = .{ .sse2, .x87, null, null },
73534 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },74975 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
73535 .patterns = &.{74976 .patterns = &.{
...@@ -73537,8 +74978,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73537,8 +74978,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73537 },74978 },
73538 .call_frame = .{ .size = 16, .alignment = .@"16" },74979 .call_frame = .{ .size = 16, .alignment = .@"16" },
73539 .extra_temps = .{74980 .extra_temps = .{
73540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },74981 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73541 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },74982 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73542 .{ .type = .f80, .kind = .{ .frame = .call_frame } },74983 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73543 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },74984 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73544 .unused,74985 .unused,
...@@ -73552,16 +74993,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73552,16 +74993,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73552 .dst_temps = .{ .mem, .unused },74993 .dst_temps = .{ .mem, .unused },
73553 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },74994 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73554 .each = .{ .once = &.{74995 .each = .{ .once = &.{
73555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },74996 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
73556 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },74997 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
73557 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },74998 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
73558 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },74999 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
73559 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },75000 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
73560 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },75001 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
73561 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },75002 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
73562 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },75003 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73563 } },75004 } },
73564 }, .{75005 }, .{
75006 .required_cc_abi = .sysv64,
73565 .required_features = .{ .sse, .x87, null, null },75007 .required_features = .{ .sse, .x87, null, null },
73566 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },75008 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
73567 .patterns = &.{75009 .patterns = &.{
...@@ -73569,8 +75011,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73569,8 +75011,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73569 },75011 },
73570 .call_frame = .{ .size = 16, .alignment = .@"16" },75012 .call_frame = .{ .size = 16, .alignment = .@"16" },
73571 .extra_temps = .{75013 .extra_temps = .{
73572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73573 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },75015 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73574 .{ .type = .f80, .kind = .{ .frame = .call_frame } },75016 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73575 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },75017 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73576 .unused,75018 .unused,
...@@ -73584,20 +75026,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73584,20 +75026,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73584 .dst_temps = .{ .mem, .unused },75026 .dst_temps = .{ .mem, .unused },
73585 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },75027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73586 .each = .{ .once = &.{75028 .each = .{ .once = &.{
73587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },75029 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
73588 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },75030 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
73589 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },75031 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
73590 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },75032 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
73591 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },75033 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
73592 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },75034 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
73593 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },75035 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
73594 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
73595 } },75067 } },
73596 }, .{75068 }, .{
73597 .required_features = .{ .sse, null, null, null },75069 .required_features = .{ .sse, null, null, null },
73598 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },75070 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
73599 .patterns = &.{75071 .patterns = &.{
73600 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },75072 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
73601 },75073 },
73602 .call_frame = .{ .alignment = .@"16" },75074 .call_frame = .{ .alignment = .@"16" },
73603 .extra_temps = .{75075 .extra_temps = .{
...@@ -73626,8 +75098,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73626,8 +75098,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73626 },75098 },
73627 .call_frame = .{ .alignment = .@"16" },75099 .call_frame = .{ .alignment = .@"16" },
73628 .extra_temps = .{75100 .extra_temps = .{
73629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75101 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73630 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },75102 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73631 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },75103 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73632 .unused,75104 .unused,
73633 .unused,75105 .unused,
...@@ -73641,12 +75113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73641,12 +75113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73641 .dst_temps = .{ .mem, .unused },75113 .dst_temps = .{ .mem, .unused },
73642 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },75114 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73643 .each = .{ .once = &.{75115 .each = .{ .once = &.{
73644 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },75116 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
73645 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },75117 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
73646 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },75118 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73647 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },75119 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
73648 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },75120 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
73649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },75121 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73650 } },75122 } },
73651 }, .{75123 }, .{
73652 .required_features = .{ .sse2, null, null, null },75124 .required_features = .{ .sse2, null, null, null },
...@@ -73656,8 +75128,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73656,8 +75128,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73656 },75128 },
73657 .call_frame = .{ .alignment = .@"16" },75129 .call_frame = .{ .alignment = .@"16" },
73658 .extra_temps = .{75130 .extra_temps = .{
73659 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75131 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73660 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },75132 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73661 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },75133 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73662 .unused,75134 .unused,
73663 .unused,75135 .unused,
...@@ -73671,12 +75143,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73671,12 +75143,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73671 .dst_temps = .{ .mem, .unused },75143 .dst_temps = .{ .mem, .unused },
73672 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },75144 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73673 .each = .{ .once = &.{75145 .each = .{ .once = &.{
73674 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },75146 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
73675 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },75147 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
73676 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },75148 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73677 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },75149 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
73678 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },75150 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
73679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },75151 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73680 } },75152 } },
73681 }, .{75153 }, .{
73682 .required_features = .{ .sse, null, null, null },75154 .required_features = .{ .sse, null, null, null },
...@@ -73686,8 +75158,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73686,8 +75158,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73686 },75158 },
73687 .call_frame = .{ .alignment = .@"16" },75159 .call_frame = .{ .alignment = .@"16" },
73688 .extra_temps = .{75160 .extra_temps = .{
73689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
73690 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },75162 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
73691 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },75163 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73692 .unused,75164 .unused,
73693 .unused,75165 .unused,
...@@ -73701,12 +75173,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73701,12 +75173,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73701 .dst_temps = .{ .mem, .unused },75173 .dst_temps = .{ .mem, .unused },
73702 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },75174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
73703 .each = .{ .once = &.{75175 .each = .{ .once = &.{
73704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },75176 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
73705 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },75177 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
73706 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },75178 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73707 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },75179 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
73708 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },75180 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
73709 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },75181 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
73710 } },75182 } },
73711 } },75183 } },
73712 }) catch |err| switch (err) {75184 }) catch |err| switch (err) {
...@@ -73719,7 +75191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73719,7 +75191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73719 };75191 };
73720 try res[0].finish(inst, &.{un_op}, &ops, cg);75192 try res[0].finish(inst, &.{un_op}, &ops, cg);
73721 },75193 },
73722 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {75194 .abs => |air_tag| {
73723 const ty_op = air_datas[@intFromEnum(inst)].ty_op;75195 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
73724 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});75196 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
73725 var res: [1]Temp = undefined;75197 var res: [1]Temp = undefined;
...@@ -75270,12 +76742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75270,12 +76742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75270 };76742 };
75271 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);76743 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
75272 },76744 },
75273 .floor, .ceil, .trunc_float => |air_tag| if (use_old) try cg.airRound(inst, .{ .direction = switch (air_tag) {76745 .floor, .ceil, .trunc_float => |air_tag| {
75274 else => unreachable,
75275 .floor => .down,
75276 .ceil => .up,
75277 .trunc_float => .zero,
75278 }, .precision = .inexact }) else {
75279 const un_op = air_datas[@intFromEnum(inst)].un_op;76746 const un_op = air_datas[@intFromEnum(inst)].un_op;
75280 var ops = try cg.tempsFromOperands(inst, .{un_op});76747 var ops = try cg.tempsFromOperands(inst, .{un_op});
75281 var res: [1]Temp = undefined;76748 var res: [1]Temp = undefined;
...@@ -75302,7 +76769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75302,7 +76769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75302 .required_features = .{ .sse, null, null, null },76769 .required_features = .{ .sse, null, null, null },
75303 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },76770 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
75304 .patterns = &.{76771 .patterns = &.{
75305 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },76772 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
75306 },76773 },
75307 .call_frame = .{ .alignment = .@"16" },76774 .call_frame = .{ .alignment = .@"16" },
75308 .extra_temps = .{76775 .extra_temps = .{
...@@ -75392,7 +76859,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75392,7 +76859,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75392 .call_frame = .{ .alignment = .@"16" },76859 .call_frame = .{ .alignment = .@"16" },
75393 .extra_temps = .{76860 .extra_temps = .{
75394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },76862 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75396 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {76863 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75397 else => unreachable,76864 else => unreachable,
75398 .down => "__floorh",76865 .down => "__floorh",
...@@ -75428,7 +76895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75428,7 +76895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75428 .call_frame = .{ .alignment = .@"16" },76895 .call_frame = .{ .alignment = .@"16" },
75429 .extra_temps = .{76896 .extra_temps = .{
75430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },76898 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75432 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {76899 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75433 else => unreachable,76900 else => unreachable,
75434 .down => "__floorh",76901 .down => "__floorh",
...@@ -75464,7 +76931,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75464,7 +76931,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75464 .call_frame = .{ .alignment = .@"16" },76931 .call_frame = .{ .alignment = .@"16" },
75465 .extra_temps = .{76932 .extra_temps = .{
75466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75467 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },76934 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75468 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {76935 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75469 else => unreachable,76936 else => unreachable,
75470 .down => "__floorh",76937 .down => "__floorh",
...@@ -75503,7 +76970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75503,7 +76970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75504 .{ .type = .f16, .kind = .{ .reg = .ax } },76971 .{ .type = .f16, .kind = .{ .reg = .ax } },
75505 .{ .type = .f32, .kind = .mem },76972 .{ .type = .f32, .kind = .mem },
75506 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },76973 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75507 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {76974 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75508 else => unreachable,76975 else => unreachable,
75509 .down => "__floorh",76976 .down => "__floorh",
...@@ -75577,7 +77044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75577,7 +77044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75577 .required_features = .{ .sse, null, null, null },77044 .required_features = .{ .sse, null, null, null },
75578 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },77045 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
75579 .patterns = &.{77046 .patterns = &.{
75580 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },77047 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
75581 },77048 },
75582 .call_frame = .{ .alignment = .@"16" },77049 .call_frame = .{ .alignment = .@"16" },
75583 .extra_temps = .{77050 .extra_temps = .{
...@@ -75707,7 +77174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75707,7 +77174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75707 .call_frame = .{ .alignment = .@"16" },77174 .call_frame = .{ .alignment = .@"16" },
75708 .extra_temps = .{77175 .extra_temps = .{
75709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75710 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },77177 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75711 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77178 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75712 else => unreachable,77179 else => unreachable,
75713 .down => "floorf",77180 .down => "floorf",
...@@ -75742,7 +77209,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75742,7 +77209,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75742 .call_frame = .{ .alignment = .@"16" },77209 .call_frame = .{ .alignment = .@"16" },
75743 .extra_temps = .{77210 .extra_temps = .{
75744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75745 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },77212 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75746 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77213 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75747 else => unreachable,77214 else => unreachable,
75748 .down => "floorf",77215 .down => "floorf",
...@@ -75814,7 +77281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75814,7 +77281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75814 .required_features = .{ .sse, null, null, null },77281 .required_features = .{ .sse, null, null, null },
75815 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },77282 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
75816 .patterns = &.{77283 .patterns = &.{
75817 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },77284 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
75818 },77285 },
75819 .call_frame = .{ .alignment = .@"16" },77286 .call_frame = .{ .alignment = .@"16" },
75820 .extra_temps = .{77287 .extra_temps = .{
...@@ -75944,7 +77411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75944,7 +77411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75944 .call_frame = .{ .alignment = .@"16" },77411 .call_frame = .{ .alignment = .@"16" },
75945 .extra_temps = .{77412 .extra_temps = .{
75946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75947 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },77414 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75948 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77415 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75949 else => unreachable,77416 else => unreachable,
75950 .down => "floor",77417 .down => "floor",
...@@ -75979,7 +77446,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75979,7 +77446,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75979 .call_frame = .{ .alignment = .@"16" },77446 .call_frame = .{ .alignment = .@"16" },
75980 .extra_temps = .{77447 .extra_temps = .{
75981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75982 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },77449 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75983 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77450 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75984 else => unreachable,77451 else => unreachable,
75985 .down => "floor",77452 .down => "floor",
...@@ -76014,7 +77481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76014,7 +77481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76014 .call_frame = .{ .alignment = .@"16" },77481 .call_frame = .{ .alignment = .@"16" },
76015 .extra_temps = .{77482 .extra_temps = .{
76016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76017 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },77484 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76018 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77485 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76019 else => unreachable,77486 else => unreachable,
76020 .down => "floor",77487 .down => "floor",
...@@ -76042,6 +77509,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76042,6 +77509,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },77509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76043 } },77510 } },
76044 }, .{77511 }, .{
77512 .required_cc_abi = .sysv64,
76045 .required_features = .{ .avx, .x87, null, null },77513 .required_features = .{ .avx, .x87, null, null },
76046 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },77514 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
76047 .patterns = &.{77515 .patterns = &.{
...@@ -76049,7 +77517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76049,7 +77517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76049 },77517 },
76050 .call_frame = .{ .size = 16, .alignment = .@"16" },77518 .call_frame = .{ .size = 16, .alignment = .@"16" },
76051 .extra_temps = .{77519 .extra_temps = .{
76052 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },77520 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76053 .{ .type = .f80, .kind = .{ .frame = .call_frame } },77521 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76054 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77522 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76055 else => unreachable,77523 else => unreachable,
...@@ -76074,6 +77542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76074,6 +77542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76074 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },77542 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
76075 } },77543 } },
76076 }, .{77544 }, .{
77545 .required_cc_abi = .sysv64,
76077 .required_features = .{ .sse2, .x87, null, null },77546 .required_features = .{ .sse2, .x87, null, null },
76078 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },77547 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
76079 .patterns = &.{77548 .patterns = &.{
...@@ -76081,7 +77550,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76081,7 +77550,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76081 },77550 },
76082 .call_frame = .{ .size = 16, .alignment = .@"16" },77551 .call_frame = .{ .size = 16, .alignment = .@"16" },
76083 .extra_temps = .{77552 .extra_temps = .{
76084 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },77553 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76085 .{ .type = .f80, .kind = .{ .frame = .call_frame } },77554 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76086 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77555 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76087 else => unreachable,77556 else => unreachable,
...@@ -76106,6 +77575,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76106,6 +77575,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76106 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },77575 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
76107 } },77576 } },
76108 }, .{77577 }, .{
77578 .required_cc_abi = .sysv64,
76109 .required_features = .{ .sse, .x87, null, null },77579 .required_features = .{ .sse, .x87, null, null },
76110 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },77580 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
76111 .patterns = &.{77581 .patterns = &.{
...@@ -76113,7 +77583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76113,7 +77583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76113 },77583 },
76114 .call_frame = .{ .size = 16, .alignment = .@"16" },77584 .call_frame = .{ .size = 16, .alignment = .@"16" },
76115 .extra_temps = .{77585 .extra_temps = .{
76116 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },77586 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76117 .{ .type = .f80, .kind = .{ .frame = .call_frame } },77587 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76118 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77588 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76119 else => unreachable,77589 else => unreachable,
...@@ -76138,6 +77608,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76138,6 +77608,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76138 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },77608 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
76139 } },77609 } },
76140 }, .{77610 }, .{
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,
76141 .required_features = .{ .avx, .x87, null, null },77644 .required_features = .{ .avx, .x87, null, null },
76142 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },77645 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
76143 .patterns = &.{77646 .patterns = &.{
...@@ -76146,7 +77649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76146,7 +77649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76146 .call_frame = .{ .size = 16, .alignment = .@"16" },77649 .call_frame = .{ .size = 16, .alignment = .@"16" },
76147 .extra_temps = .{77650 .extra_temps = .{
76148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76149 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },77652 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76150 .{ .type = .f80, .kind = .{ .frame = .call_frame } },77653 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76151 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77654 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76152 else => unreachable,77655 else => unreachable,
...@@ -76175,6 +77678,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76175,6 +77678,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },77678 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76176 } },77679 } },
76177 }, .{77680 }, .{
77681 .required_cc_abi = .sysv64,
76178 .required_features = .{ .sse2, .x87, null, null },77682 .required_features = .{ .sse2, .x87, null, null },
76179 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },77683 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
76180 .patterns = &.{77684 .patterns = &.{
...@@ -76183,7 +77687,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76183,7 +77687,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76183 .call_frame = .{ .size = 16, .alignment = .@"16" },77687 .call_frame = .{ .size = 16, .alignment = .@"16" },
76184 .extra_temps = .{77688 .extra_temps = .{
76185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76186 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },77690 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76187 .{ .type = .f80, .kind = .{ .frame = .call_frame } },77691 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76188 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77692 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76189 else => unreachable,77693 else => unreachable,
...@@ -76212,6 +77716,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76212,6 +77716,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },77716 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76213 } },77717 } },
76214 }, .{77718 }, .{
77719 .required_cc_abi = .sysv64,
76215 .required_features = .{ .sse, .x87, null, null },77720 .required_features = .{ .sse, .x87, null, null },
76216 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },77721 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
76217 .patterns = &.{77722 .patterns = &.{
...@@ -76220,7 +77725,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76220,7 +77725,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76220 .call_frame = .{ .size = 16, .alignment = .@"16" },77725 .call_frame = .{ .size = 16, .alignment = .@"16" },
76221 .extra_temps = .{77726 .extra_temps = .{
76222 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76223 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },77728 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76224 .{ .type = .f80, .kind = .{ .frame = .call_frame } },77729 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76225 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77730 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76226 else => unreachable,77731 else => unreachable,
...@@ -76248,11 +77753,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76248,11 +77753,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76248 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },77753 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
76249 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },77754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
76250 } },77755 } },
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 } },
76251 }, .{77791 }, .{
76252 .required_features = .{ .sse, null, null, null },77792 .required_features = .{ .sse, null, null, null },
76253 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },77793 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
76254 .patterns = &.{77794 .patterns = &.{
76255 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },77795 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
76256 },77796 },
76257 .call_frame = .{ .alignment = .@"16" },77797 .call_frame = .{ .alignment = .@"16" },
76258 .extra_temps = .{77798 .extra_temps = .{
...@@ -76287,7 +77827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76287,7 +77827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76287 .call_frame = .{ .alignment = .@"16" },77827 .call_frame = .{ .alignment = .@"16" },
76288 .extra_temps = .{77828 .extra_temps = .{
76289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76290 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },77830 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76291 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77831 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76292 else => unreachable,77832 else => unreachable,
76293 .down => "floorq",77833 .down => "floorq",
...@@ -76322,7 +77862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76322,7 +77862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76322 .call_frame = .{ .alignment = .@"16" },77862 .call_frame = .{ .alignment = .@"16" },
76323 .extra_temps = .{77863 .extra_temps = .{
76324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76325 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },77865 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76326 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77866 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76327 else => unreachable,77867 else => unreachable,
76328 .down => "floorq",77868 .down => "floorq",
...@@ -76357,7 +77897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76357,7 +77897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76357 .call_frame = .{ .alignment = .@"16" },77897 .call_frame = .{ .alignment = .@"16" },
76358 .extra_temps = .{77898 .extra_temps = .{
76359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },77899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76360 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },77900 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
76361 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {77901 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76362 else => unreachable,77902 else => unreachable,
76363 .down => "floorq",77903 .down => "floorq",
...@@ -76394,7 +77934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76394,7 +77934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76394 };77934 };
76395 try res[0].finish(inst, &.{un_op}, &ops, cg);77935 try res[0].finish(inst, &.{un_op}, &ops, cg);
76396 },77936 },
76397 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {77937 .neg, .neg_optimized => |air_tag| {
76398 const un_op = air_datas[@intFromEnum(inst)].un_op;77938 const un_op = air_datas[@intFromEnum(inst)].un_op;
76399 var ops = try cg.tempsFromOperands(inst, .{un_op});77939 var ops = try cg.tempsFromOperands(inst, .{un_op});
76400 var res: [1]Temp = undefined;77940 var res: [1]Temp = undefined;
...@@ -76942,7 +78482,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76942,7 +78482,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76942 .cmp_gte_optimized,78482 .cmp_gte_optimized,
76943 .cmp_gt,78483 .cmp_gt,
76944 .cmp_gt_optimized,78484 .cmp_gt_optimized,
76945 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {78485 => |air_tag| {
76946 const bin_op = air_datas[@intFromEnum(inst)].bin_op;78486 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
76947 const cmp_op = air_tag.toCmpOp().?;78487 const cmp_op = air_tag.toCmpOp().?;
76948 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });78488 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 {...@@ -76991,7 +78531,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76991 .required_features = .{ .sse, null, null, null },78531 .required_features = .{ .sse, null, null, null },
76992 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },78532 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
76993 .patterns = &.{78533 .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 } },
76995 },78539 },
76996 .call_frame = .{ .alignment = .@"16" },78540 .call_frame = .{ .alignment = .@"16" },
76997 .extra_temps = .{78541 .extra_temps = .{
...@@ -77334,7 +78878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77334,7 +78878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77334 .required_features = .{ .sse, null, null, null },78878 .required_features = .{ .sse, null, null, null },
77335 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },78879 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
77336 .patterns = &.{78880 .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 } },
77338 },78886 },
77339 .call_frame = .{ .alignment = .@"16" },78887 .call_frame = .{ .alignment = .@"16" },
77340 .extra_temps = .{78888 .extra_temps = .{
...@@ -77378,7 +78926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77378,7 +78926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77378 .cmp_eq_optimized,78926 .cmp_eq_optimized,
77379 .cmp_neq,78927 .cmp_neq,
77380 .cmp_neq_optimized,78928 .cmp_neq_optimized,
77381 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {78929 => |air_tag| {
77382 const bin_op = air_datas[@intFromEnum(inst)].bin_op;78930 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
77383 const cmp_op = air_tag.toCmpOp().?;78931 const cmp_op = air_tag.toCmpOp().?;
77384 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });78932 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 {...@@ -77495,7 +79043,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77495 .required_features = .{ .sse, null, null, null },79043 .required_features = .{ .sse, null, null, null },
77496 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },79044 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
77497 .patterns = &.{79045 .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 } },
77499 },79051 },
77500 .call_frame = .{ .alignment = .@"16" },79052 .call_frame = .{ .alignment = .@"16" },
77501 .extra_temps = .{79053 .extra_temps = .{
...@@ -77862,7 +79414,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77862,7 +79414,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77862 .required_features = .{ .sse, null, null, null },79414 .required_features = .{ .sse, null, null, null },
77863 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },79415 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
77864 .patterns = &.{79416 .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 } },
77866 },79422 },
77867 .call_frame = .{ .alignment = .@"16" },79423 .call_frame = .{ .alignment = .@"16" },
77868 .extra_temps = .{79424 .extra_temps = .{
...@@ -77939,7 +79495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77939,7 +79495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77939 }79495 }
77940 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);79496 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
77941 },79497 },
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: {
77943 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;79499 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
77944 const vector_cmp = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;79500 const vector_cmp = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
77945 switch (vector_cmp.compareOperator()) {79501 switch (vector_cmp.compareOperator()) {
...@@ -78533,8 +80089,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78533,8 +80089,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78533 .call_frame = .{ .alignment = .@"16" },80089 .call_frame = .{ .alignment = .@"16" },
78534 .extra_temps = .{80090 .extra_temps = .{
78535 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78536 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80092 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78537 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80093 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78538 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80094 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78539 .{ .type = .i32, .kind = .{ .reg = .eax } },80095 .{ .type = .i32, .kind = .{ .reg = .eax } },
78540 .{ .type = .u8, .kind = .{ .reg = .cl } },80096 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78577,8 +80133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78577,8 +80133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78577 .call_frame = .{ .alignment = .@"16" },80133 .call_frame = .{ .alignment = .@"16" },
78578 .extra_temps = .{80134 .extra_temps = .{
78579 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80135 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78580 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80136 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78581 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80137 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78582 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80138 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78583 .{ .type = .i32, .kind = .{ .reg = .eax } },80139 .{ .type = .i32, .kind = .{ .reg = .eax } },
78584 .{ .type = .u8, .kind = .{ .reg = .cl } },80140 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78621,8 +80177,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78621,8 +80177,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78621 .call_frame = .{ .alignment = .@"16" },80177 .call_frame = .{ .alignment = .@"16" },
78622 .extra_temps = .{80178 .extra_temps = .{
78623 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80179 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78624 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80180 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78625 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80181 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78626 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80182 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78627 .{ .type = .i32, .kind = .{ .reg = .eax } },80183 .{ .type = .i32, .kind = .{ .reg = .eax } },
78628 .{ .type = .u8, .kind = .{ .reg = .cl } },80184 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78666,8 +80222,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78666,8 +80222,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78666 .call_frame = .{ .alignment = .@"16" },80222 .call_frame = .{ .alignment = .@"16" },
78667 .extra_temps = .{80223 .extra_temps = .{
78668 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80224 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78669 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80225 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78670 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80226 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78671 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80227 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78672 .{ .type = .i32, .kind = .{ .reg = .eax } },80228 .{ .type = .i32, .kind = .{ .reg = .eax } },
78673 .{ .type = .u8, .kind = .{ .reg = .cl } },80229 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78711,8 +80267,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78711,8 +80267,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78711 .call_frame = .{ .alignment = .@"16" },80267 .call_frame = .{ .alignment = .@"16" },
78712 .extra_temps = .{80268 .extra_temps = .{
78713 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80269 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78714 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80270 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78715 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80271 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78716 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80272 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78717 .{ .type = .i32, .kind = .{ .reg = .eax } },80273 .{ .type = .i32, .kind = .{ .reg = .eax } },
78718 .{ .type = .u8, .kind = .{ .reg = .cl } },80274 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78758,8 +80314,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78758,8 +80314,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78758 .call_frame = .{ .alignment = .@"16" },80314 .call_frame = .{ .alignment = .@"16" },
78759 .extra_temps = .{80315 .extra_temps = .{
78760 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80316 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78761 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80317 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78762 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80318 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78763 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80319 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78764 .{ .type = .i32, .kind = .{ .reg = .eax } },80320 .{ .type = .i32, .kind = .{ .reg = .eax } },
78765 .{ .type = .u8, .kind = .{ .reg = .cl } },80321 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78805,8 +80361,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78805,8 +80361,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78805 .extra_temps = .{80361 .extra_temps = .{
78806 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80362 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78807 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80363 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78808 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80364 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78809 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80365 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78810 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80366 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78811 .{ .type = .i32, .kind = .{ .reg = .eax } },80367 .{ .type = .i32, .kind = .{ .reg = .eax } },
78812 .{ .type = .u8, .kind = .{ .reg = .cl } },80368 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78858,8 +80414,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78858,8 +80414,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78858 .extra_temps = .{80414 .extra_temps = .{
78859 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80415 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78860 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80416 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78861 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80417 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78862 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80418 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78863 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80419 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78864 .{ .type = .i32, .kind = .{ .reg = .eax } },80420 .{ .type = .i32, .kind = .{ .reg = .eax } },
78865 .{ .type = .u8, .kind = .{ .reg = .cl } },80421 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78911,8 +80467,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78911,8 +80467,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78911 .extra_temps = .{80467 .extra_temps = .{
78912 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78913 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80469 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78914 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80470 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78915 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80471 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78916 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80472 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78917 .{ .type = .i32, .kind = .{ .reg = .eax } },80473 .{ .type = .i32, .kind = .{ .reg = .eax } },
78918 .{ .type = .u8, .kind = .{ .reg = .cl } },80474 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -78965,8 +80521,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78965,8 +80521,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78965 .extra_temps = .{80521 .extra_temps = .{
78966 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78967 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80523 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78968 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80524 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
78969 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80525 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
78970 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80526 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78971 .{ .type = .i32, .kind = .{ .reg = .eax } },80527 .{ .type = .i32, .kind = .{ .reg = .eax } },
78972 .{ .type = .u8, .kind = .{ .reg = .cl } },80528 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -79019,8 +80575,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79019,8 +80575,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79019 .extra_temps = .{80575 .extra_temps = .{
79020 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80576 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79021 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80577 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79022 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80578 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
79023 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80579 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
79024 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80580 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
79025 .{ .type = .i32, .kind = .{ .reg = .eax } },80581 .{ .type = .i32, .kind = .{ .reg = .eax } },
79026 .{ .type = .u8, .kind = .{ .reg = .cl } },80582 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -79075,8 +80631,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79075,8 +80631,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79075 .extra_temps = .{80631 .extra_temps = .{
79076 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80632 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79077 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80633 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },80634 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
79079 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },80635 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
79080 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },80636 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
79081 .{ .type = .i32, .kind = .{ .reg = .eax } },80637 .{ .type = .i32, .kind = .{ .reg = .eax } },
79082 .{ .type = .u8, .kind = .{ .reg = .cl } },80638 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -79902,8 +81458,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79902,8 +81458,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79902 .extra_temps = .{81458 .extra_temps = .{
79903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79904 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81460 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79905 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81461 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
79906 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81462 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
79907 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81463 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
79908 .{ .type = .i32, .kind = .{ .reg = .eax } },81464 .{ .type = .i32, .kind = .{ .reg = .eax } },
79909 .{ .type = .u8, .kind = .{ .reg = .cl } },81465 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -79946,8 +81502,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79946,8 +81502,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79946 .extra_temps = .{81502 .extra_temps = .{
79947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79948 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79949 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81505 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
79950 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81506 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
79951 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81507 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
79952 .{ .type = .i32, .kind = .{ .reg = .eax } },81508 .{ .type = .i32, .kind = .{ .reg = .eax } },
79953 .{ .type = .u8, .kind = .{ .reg = .cl } },81509 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -79990,8 +81546,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79990,8 +81546,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79990 .extra_temps = .{81546 .extra_temps = .{
79991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
79992 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79993 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81549 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
79994 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81550 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
79995 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81551 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
79996 .{ .type = .i32, .kind = .{ .reg = .eax } },81552 .{ .type = .i32, .kind = .{ .reg = .eax } },
79997 .{ .type = .u8, .kind = .{ .reg = .cl } },81553 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80034,8 +81590,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80034,8 +81590,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80034 .extra_temps = .{81590 .extra_temps = .{
80035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80036 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80037 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81593 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80038 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81594 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80039 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81595 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80040 .{ .type = .i32, .kind = .{ .reg = .eax } },81596 .{ .type = .i32, .kind = .{ .reg = .eax } },
80041 .{ .type = .u8, .kind = .{ .reg = .cl } },81597 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80078,8 +81634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80078,8 +81634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80078 .extra_temps = .{81634 .extra_temps = .{
80079 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80080 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81636 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80081 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81637 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80082 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81638 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80083 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81639 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80084 .{ .type = .i32, .kind = .{ .reg = .eax } },81640 .{ .type = .i32, .kind = .{ .reg = .eax } },
80085 .{ .type = .u8, .kind = .{ .reg = .cl } },81641 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80122,8 +81678,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80122,8 +81678,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80122 .extra_temps = .{81678 .extra_temps = .{
80123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80124 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80125 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81681 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80126 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81682 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80127 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81683 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80128 .{ .type = .i32, .kind = .{ .reg = .eax } },81684 .{ .type = .i32, .kind = .{ .reg = .eax } },
80129 .{ .type = .u8, .kind = .{ .reg = .cl } },81685 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80166,8 +81722,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80166,8 +81722,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81722 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80167 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81723 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80168 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },81724 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80169 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81725 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80170 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81726 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80171 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81727 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80172 .{ .type = .i32, .kind = .{ .reg = .eax } },81728 .{ .type = .i32, .kind = .{ .reg = .eax } },
80173 .{ .type = .u8, .kind = .{ .reg = .cl } },81729 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80219,8 +81775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80219,8 +81775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80220 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81776 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80221 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },81777 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80222 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81778 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80223 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81779 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80224 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81780 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80225 .{ .type = .i32, .kind = .{ .reg = .eax } },81781 .{ .type = .i32, .kind = .{ .reg = .eax } },
80226 .{ .type = .u8, .kind = .{ .reg = .cl } },81782 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80272,8 +81828,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80272,8 +81828,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80273 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81829 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80274 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },81830 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80275 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81831 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80276 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81832 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80277 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81833 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80278 .{ .type = .i32, .kind = .{ .reg = .eax } },81834 .{ .type = .i32, .kind = .{ .reg = .eax } },
80279 .{ .type = .u8, .kind = .{ .reg = .cl } },81835 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80325,8 +81881,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80325,8 +81881,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80326 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80327 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },81883 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80328 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81884 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80329 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81885 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80330 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81886 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80331 .{ .type = .i32, .kind = .{ .reg = .eax } },81887 .{ .type = .i32, .kind = .{ .reg = .eax } },
80332 .{ .type = .u8, .kind = .{ .reg = .cl } },81888 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80378,8 +81934,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80378,8 +81934,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80379 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80380 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },81936 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80381 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81937 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80382 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81938 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80383 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81939 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80384 .{ .type = .i32, .kind = .{ .reg = .eax } },81940 .{ .type = .i32, .kind = .{ .reg = .eax } },
80385 .{ .type = .u8, .kind = .{ .reg = .cl } },81941 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -80431,8 +81987,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80431,8 +81987,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
80432 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },81988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80433 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },81989 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80434 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },81990 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80435 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },81991 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
80436 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },81992 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80437 .{ .type = .i32, .kind = .{ .reg = .eax } },81993 .{ .type = .i32, .kind = .{ .reg = .eax } },
80438 .{ .type = .u8, .kind = .{ .reg = .cl } },81994 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83041,8 +84597,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83041,8 +84597,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83041 .call_frame = .{ .alignment = .@"16" },84597 .call_frame = .{ .alignment = .@"16" },
83042 .extra_temps = .{84598 .extra_temps = .{
83043 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84599 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83044 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84600 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83045 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84601 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83046 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84602 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83047 .{ .type = .i32, .kind = .{ .reg = .eax } },84603 .{ .type = .i32, .kind = .{ .reg = .eax } },
83048 .{ .type = .u8, .kind = .{ .reg = .cl } },84604 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83085,8 +84641,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83085,8 +84641,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83085 .call_frame = .{ .alignment = .@"16" },84641 .call_frame = .{ .alignment = .@"16" },
83086 .extra_temps = .{84642 .extra_temps = .{
83087 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84643 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83088 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84644 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83089 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84645 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83090 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84646 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83091 .{ .type = .i32, .kind = .{ .reg = .eax } },84647 .{ .type = .i32, .kind = .{ .reg = .eax } },
83092 .{ .type = .u8, .kind = .{ .reg = .cl } },84648 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83129,8 +84685,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83129,8 +84685,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83129 .call_frame = .{ .alignment = .@"16" },84685 .call_frame = .{ .alignment = .@"16" },
83130 .extra_temps = .{84686 .extra_temps = .{
83131 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84687 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83132 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84688 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83133 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84689 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83134 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84690 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83135 .{ .type = .i32, .kind = .{ .reg = .eax } },84691 .{ .type = .i32, .kind = .{ .reg = .eax } },
83136 .{ .type = .u8, .kind = .{ .reg = .cl } },84692 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83174,8 +84730,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83174,8 +84730,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83174 .call_frame = .{ .alignment = .@"16" },84730 .call_frame = .{ .alignment = .@"16" },
83175 .extra_temps = .{84731 .extra_temps = .{
83176 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84732 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83177 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84733 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83178 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84734 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83179 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84735 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83180 .{ .type = .i32, .kind = .{ .reg = .eax } },84736 .{ .type = .i32, .kind = .{ .reg = .eax } },
83181 .{ .type = .u8, .kind = .{ .reg = .cl } },84737 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83219,8 +84775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83219,8 +84775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83219 .call_frame = .{ .alignment = .@"16" },84775 .call_frame = .{ .alignment = .@"16" },
83220 .extra_temps = .{84776 .extra_temps = .{
83221 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83222 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84778 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83223 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84779 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83224 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84780 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83225 .{ .type = .i32, .kind = .{ .reg = .eax } },84781 .{ .type = .i32, .kind = .{ .reg = .eax } },
83226 .{ .type = .u8, .kind = .{ .reg = .cl } },84782 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83266,8 +84822,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83266,8 +84822,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83266 .call_frame = .{ .alignment = .@"16" },84822 .call_frame = .{ .alignment = .@"16" },
83267 .extra_temps = .{84823 .extra_temps = .{
83268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84824 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83269 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84825 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83270 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84826 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83271 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84827 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83272 .{ .type = .i32, .kind = .{ .reg = .eax } },84828 .{ .type = .i32, .kind = .{ .reg = .eax } },
83273 .{ .type = .u8, .kind = .{ .reg = .cl } },84829 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83313,8 +84869,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83313,8 +84869,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83313 .extra_temps = .{84869 .extra_temps = .{
83314 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84870 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83315 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84871 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83316 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84872 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83317 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84873 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83318 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84874 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83319 .{ .type = .i32, .kind = .{ .reg = .eax } },84875 .{ .type = .i32, .kind = .{ .reg = .eax } },
83320 .{ .type = .u8, .kind = .{ .reg = .cl } },84876 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83366,8 +84922,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83366,8 +84922,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83366 .extra_temps = .{84922 .extra_temps = .{
83367 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84923 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83368 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84924 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83369 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84925 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83370 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84926 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83371 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84927 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83372 .{ .type = .i32, .kind = .{ .reg = .eax } },84928 .{ .type = .i32, .kind = .{ .reg = .eax } },
83373 .{ .type = .u8, .kind = .{ .reg = .cl } },84929 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83419,8 +84975,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83419,8 +84975,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83419 .extra_temps = .{84975 .extra_temps = .{
83420 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83421 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84977 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83422 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },84978 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83423 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },84979 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83424 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },84980 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83425 .{ .type = .i32, .kind = .{ .reg = .eax } },84981 .{ .type = .i32, .kind = .{ .reg = .eax } },
83426 .{ .type = .u8, .kind = .{ .reg = .cl } },84982 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83473,8 +85029,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83473,8 +85029,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83473 .extra_temps = .{85029 .extra_temps = .{
83474 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },85030 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83475 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },85031 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83476 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },85032 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83477 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },85033 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83478 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },85034 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83479 .{ .type = .i32, .kind = .{ .reg = .eax } },85035 .{ .type = .i32, .kind = .{ .reg = .eax } },
83480 .{ .type = .u8, .kind = .{ .reg = .cl } },85036 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83527,8 +85083,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83527,8 +85083,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83527 .extra_temps = .{85083 .extra_temps = .{
83528 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },85084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83529 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },85085 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83530 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },85086 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83531 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },85087 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83532 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },85088 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83533 .{ .type = .i32, .kind = .{ .reg = .eax } },85089 .{ .type = .i32, .kind = .{ .reg = .eax } },
83534 .{ .type = .u8, .kind = .{ .reg = .cl } },85090 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -83583,8 +85139,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83583,8 +85139,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83583 .extra_temps = .{85139 .extra_temps = .{
83584 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },85140 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83585 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },85141 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },85142 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
83587 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },85143 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
83588 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },85144 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83589 .{ .type = .i32, .kind = .{ .reg = .eax } },85145 .{ .type = .i32, .kind = .{ .reg = .eax } },
83590 .{ .type = .u8, .kind = .{ .reg = .cl } },85146 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84424,8 +85980,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84424,8 +85980,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84424 .extra_temps = .{85980 .extra_temps = .{
84425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84426 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },85982 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84427 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },85983 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84428 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },85984 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84429 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },85985 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84430 .{ .type = .i32, .kind = .{ .reg = .eax } },85986 .{ .type = .i32, .kind = .{ .reg = .eax } },
84431 .{ .type = .u8, .kind = .{ .reg = .cl } },85987 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84468,8 +86024,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84468,8 +86024,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84468 .extra_temps = .{86024 .extra_temps = .{
84469 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84470 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86026 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84471 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86027 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84472 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86028 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84473 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86029 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84474 .{ .type = .i32, .kind = .{ .reg = .eax } },86030 .{ .type = .i32, .kind = .{ .reg = .eax } },
84475 .{ .type = .u8, .kind = .{ .reg = .cl } },86031 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84512,8 +86068,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84512,8 +86068,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84512 .extra_temps = .{86068 .extra_temps = .{
84513 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86069 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84514 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86070 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84515 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86071 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84516 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86072 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84517 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86073 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84518 .{ .type = .i32, .kind = .{ .reg = .eax } },86074 .{ .type = .i32, .kind = .{ .reg = .eax } },
84519 .{ .type = .u8, .kind = .{ .reg = .cl } },86075 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84556,8 +86112,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84556,8 +86112,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84556 .extra_temps = .{86112 .extra_temps = .{
84557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86113 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84558 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86114 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84559 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86115 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84560 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86116 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84561 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86117 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84562 .{ .type = .i32, .kind = .{ .reg = .eax } },86118 .{ .type = .i32, .kind = .{ .reg = .eax } },
84563 .{ .type = .u8, .kind = .{ .reg = .cl } },86119 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84600,8 +86156,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84600,8 +86156,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84600 .extra_temps = .{86156 .extra_temps = .{
84601 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84602 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84603 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86159 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84604 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86160 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84605 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86161 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84606 .{ .type = .i32, .kind = .{ .reg = .eax } },86162 .{ .type = .i32, .kind = .{ .reg = .eax } },
84607 .{ .type = .u8, .kind = .{ .reg = .cl } },86163 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84644,8 +86200,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84644,8 +86200,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84644 .extra_temps = .{86200 .extra_temps = .{
84645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84646 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86202 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84647 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86203 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84648 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86204 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84649 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86205 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84650 .{ .type = .i32, .kind = .{ .reg = .eax } },86206 .{ .type = .i32, .kind = .{ .reg = .eax } },
84651 .{ .type = .u8, .kind = .{ .reg = .cl } },86207 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84688,8 +86244,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84688,8 +86244,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86244 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84689 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84690 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },86246 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84691 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86247 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84692 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86248 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84693 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86249 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84694 .{ .type = .i32, .kind = .{ .reg = .eax } },86250 .{ .type = .i32, .kind = .{ .reg = .eax } },
84695 .{ .type = .u8, .kind = .{ .reg = .cl } },86251 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84741,8 +86297,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84741,8 +86297,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84742 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86298 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84743 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },86299 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84744 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86300 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84745 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86301 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84746 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86302 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84747 .{ .type = .i32, .kind = .{ .reg = .eax } },86303 .{ .type = .i32, .kind = .{ .reg = .eax } },
84748 .{ .type = .u8, .kind = .{ .reg = .cl } },86304 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84794,8 +86350,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84794,8 +86350,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84795 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86351 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84796 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },86352 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84797 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86353 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84798 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86354 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84799 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86355 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84800 .{ .type = .i32, .kind = .{ .reg = .eax } },86356 .{ .type = .i32, .kind = .{ .reg = .eax } },
84801 .{ .type = .u8, .kind = .{ .reg = .cl } },86357 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84847,8 +86403,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84847,8 +86403,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84848 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86404 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84849 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },86405 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84850 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86406 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84851 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86407 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84852 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86408 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84853 .{ .type = .i32, .kind = .{ .reg = .eax } },86409 .{ .type = .i32, .kind = .{ .reg = .eax } },
84854 .{ .type = .u8, .kind = .{ .reg = .cl } },86410 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84900,8 +86456,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84900,8 +86456,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84901 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86457 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84902 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },86458 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84903 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86459 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84904 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86460 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84905 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86461 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84906 .{ .type = .i32, .kind = .{ .reg = .eax } },86462 .{ .type = .i32, .kind = .{ .reg = .eax } },
84907 .{ .type = .u8, .kind = .{ .reg = .cl } },86463 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -84953,8 +86509,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84953,8 +86509,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
84954 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },86510 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84955 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },86511 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84956 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86512 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84957 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },86513 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
84958 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },86514 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84959 .{ .type = .i32, .kind = .{ .reg = .eax } },86515 .{ .type = .i32, .kind = .{ .reg = .eax } },
84960 .{ .type = .u8, .kind = .{ .reg = .cl } },86516 .{ .type = .u8, .kind = .{ .reg = .cl } },
...@@ -85048,7 +86604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85048,7 +86604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85048 .data = .{ .ip_index = old_inline_func },86604 .data = .{ .ip_index = old_inline_func },
85049 });86605 });
85050 },86606 },
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) {
85052 const pl_op = air_datas[@intFromEnum(inst)].pl_op;86608 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
85053 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);86609 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
85054 const op_ty = cg.typeOf(pl_op.operand);86610 const op_ty = cg.typeOf(pl_op.operand);
...@@ -85086,7 +86642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85086,7 +86642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85086 try cg.genLocalDebugInfo(air_tag, local_ty, ops[0].tracking(cg).short);86642 try cg.genLocalDebugInfo(air_tag, local_ty, ops[0].tracking(cg).short);
85087 try ops[0].die(cg);86643 try ops[0].die(cg);
85088 },86644 },
85089 .is_null => if (use_old) try cg.airIsNull(inst) else {86645 .is_null => {
85090 const un_op = air_datas[@intFromEnum(inst)].un_op;86646 const un_op = air_datas[@intFromEnum(inst)].un_op;
85091 const opt_ty = cg.typeOf(un_op);86647 const opt_ty = cg.typeOf(un_op);
85092 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);86648 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
...@@ -85111,7 +86667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85111,7 +86667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85111 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });86667 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
85112 try is_null.finish(inst, &.{un_op}, &ops, cg);86668 try is_null.finish(inst, &.{un_op}, &ops, cg);
85113 },86669 },
85114 .is_non_null => if (use_old) try cg.airIsNonNull(inst) else {86670 .is_non_null => {
85115 const un_op = air_datas[@intFromEnum(inst)].un_op;86671 const un_op = air_datas[@intFromEnum(inst)].un_op;
85116 const opt_ty = cg.typeOf(un_op);86672 const opt_ty = cg.typeOf(un_op);
85117 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);86673 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
...@@ -85136,7 +86692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85136,7 +86692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85136 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });86692 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
85137 try is_non_null.finish(inst, &.{un_op}, &ops, cg);86693 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
85138 },86694 },
85139 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {86695 .is_null_ptr => {
85140 const un_op = air_datas[@intFromEnum(inst)].un_op;86696 const un_op = air_datas[@intFromEnum(inst)].un_op;
85141 const opt_ty = cg.typeOf(un_op).childType(zcu);86697 const opt_ty = cg.typeOf(un_op).childType(zcu);
85142 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);86698 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
...@@ -85159,7 +86715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85159,7 +86715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85159 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });86715 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
85160 try is_null.finish(inst, &.{un_op}, &ops, cg);86716 try is_null.finish(inst, &.{un_op}, &ops, cg);
85161 },86717 },
85162 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {86718 .is_non_null_ptr => {
85163 const un_op = air_datas[@intFromEnum(inst)].un_op;86719 const un_op = air_datas[@intFromEnum(inst)].un_op;
85164 const opt_ty = cg.typeOf(un_op).childType(zcu);86720 const opt_ty = cg.typeOf(un_op).childType(zcu);
85165 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);86721 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
...@@ -85182,7 +86738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85182,7 +86738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85182 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });86738 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
85183 try is_non_null.finish(inst, &.{un_op}, &ops, cg);86739 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
85184 },86740 },
85185 .is_err => if (use_old) try cg.airIsErr(inst) else {86741 .is_err => {
85186 const un_op = air_datas[@intFromEnum(inst)].un_op;86742 const un_op = air_datas[@intFromEnum(inst)].un_op;
85187 const eu_ty = cg.typeOf(un_op);86743 const eu_ty = cg.typeOf(un_op);
85188 const eu_err_ty = eu_ty.errorUnionSet(zcu);86744 const eu_err_ty = eu_ty.errorUnionSet(zcu);
...@@ -85198,7 +86754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85198,7 +86754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85198 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });86754 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
85199 try is_err.finish(inst, &.{un_op}, &ops, cg);86755 try is_err.finish(inst, &.{un_op}, &ops, cg);
85200 },86756 },
85201 .is_non_err => if (use_old) try cg.airIsNonErr(inst) else {86757 .is_non_err => {
85202 const un_op = air_datas[@intFromEnum(inst)].un_op;86758 const un_op = air_datas[@intFromEnum(inst)].un_op;
85203 const eu_ty = cg.typeOf(un_op);86759 const eu_ty = cg.typeOf(un_op);
85204 const eu_err_ty = eu_ty.errorUnionSet(zcu);86760 const eu_err_ty = eu_ty.errorUnionSet(zcu);
...@@ -85214,7 +86770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85214,7 +86770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85214 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });86770 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
85215 try is_non_err.finish(inst, &.{un_op}, &ops, cg);86771 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
85216 },86772 },
85217 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {86773 .is_err_ptr => {
85218 const un_op = air_datas[@intFromEnum(inst)].un_op;86774 const un_op = air_datas[@intFromEnum(inst)].un_op;
85219 const eu_ty = cg.typeOf(un_op).childType(zcu);86775 const eu_ty = cg.typeOf(un_op).childType(zcu);
85220 const eu_err_ty = eu_ty.errorUnionSet(zcu);86776 const eu_err_ty = eu_ty.errorUnionSet(zcu);
...@@ -85232,7 +86788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85232,7 +86788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85232 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });86788 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
85233 try is_err.finish(inst, &.{un_op}, &ops, cg);86789 try is_err.finish(inst, &.{un_op}, &ops, cg);
85234 },86790 },
85235 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {86791 .is_non_err_ptr => {
85236 const un_op = air_datas[@intFromEnum(inst)].un_op;86792 const un_op = air_datas[@intFromEnum(inst)].un_op;
85237 const eu_ty = cg.typeOf(un_op).childType(zcu);86793 const eu_ty = cg.typeOf(un_op).childType(zcu);
85238 const eu_err_ty = eu_ty.errorUnionSet(zcu);86794 const eu_err_ty = eu_ty.errorUnionSet(zcu);
...@@ -85250,7 +86806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85250,7 +86806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85250 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });86806 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
85251 try is_non_err.finish(inst, &.{un_op}, &ops, cg);86807 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
85252 },86808 },
85253 .load => if (use_old) try cg.airLoad(inst) else fallback: {86809 .load => fallback: {
85254 const ty_op = air_datas[@intFromEnum(inst)].ty_op;86810 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
85255 const val_ty = ty_op.ty.toType();86811 const val_ty = ty_op.ty.toType();
85256 const ptr_ty = cg.typeOf(ty_op.operand);86812 const ptr_ty = cg.typeOf(ty_op.operand);
...@@ -85299,7 +86855,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85299,7 +86855,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85299 for (ops) |op| try op.die(cg);86855 for (ops) |op| try op.die(cg);
85300 },86856 },
85301 .unreach => {},86857 .unreach => {},
85302 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {86858 .fptrunc => |air_tag| {
85303 const ty_op = air_datas[@intFromEnum(inst)].ty_op;86859 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
85304 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});86860 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
85305 var res: [1]Temp = undefined;86861 var res: [1]Temp = undefined;
...@@ -85341,7 +86897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85341,7 +86897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85341 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },86897 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
85342 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },86898 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
85343 .patterns = &.{86899 .patterns = &.{
85344 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },86900 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
85345 },86901 },
85346 .call_frame = .{ .alignment = .@"16" },86902 .call_frame = .{ .alignment = .@"16" },
85347 .extra_temps = .{86903 .extra_temps = .{
...@@ -85370,7 +86926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85370,7 +86926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85370 .{ .src = .{ .to_mem, .none, .none } },86926 .{ .src = .{ .to_mem, .none, .none } },
85371 },86927 },
85372 .extra_temps = .{86928 .extra_temps = .{
85373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86929 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85374 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },86930 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
85375 .unused,86931 .unused,
85376 .unused,86932 .unused,
...@@ -85385,11 +86941,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85385,11 +86941,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85385 .dst_temps = .{ .mem, .unused },86941 .dst_temps = .{ .mem, .unused },
85386 .clobbers = .{ .eflags = true },86942 .clobbers = .{ .eflags = true },
85387 .each = .{ .once = &.{86943 .each = .{ .once = &.{
85388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },86944 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
85389 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },86945 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
85390 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },86946 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
85391 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },86947 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
85392 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },86948 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85393 } },86949 } },
85394 }, .{86950 }, .{
85395 .required_features = .{ .avx, null, null, null },86951 .required_features = .{ .avx, null, null, null },
...@@ -85400,8 +86956,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85400,8 +86956,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85400 },86956 },
85401 .call_frame = .{ .alignment = .@"16" },86957 .call_frame = .{ .alignment = .@"16" },
85402 .extra_temps = .{86958 .extra_temps = .{
85403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85404 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },86960 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85405 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },86961 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85406 .unused,86962 .unused,
85407 .unused,86963 .unused,
...@@ -85415,12 +86971,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85415,12 +86971,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85415 .dst_temps = .{ .mem, .unused },86971 .dst_temps = .{ .mem, .unused },
85416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },86972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85417 .each = .{ .once = &.{86973 .each = .{ .once = &.{
85418 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },86974 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85419 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },86975 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
85420 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },86976 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85421 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },86977 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
85422 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },86978 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },86979 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85424 } },86980 } },
85425 }, .{86981 }, .{
85426 .required_features = .{ .sse4_1, null, null, null },86982 .required_features = .{ .sse4_1, null, null, null },
...@@ -85431,8 +86987,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85431,8 +86987,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85431 },86987 },
85432 .call_frame = .{ .alignment = .@"16" },86988 .call_frame = .{ .alignment = .@"16" },
85433 .extra_temps = .{86989 .extra_temps = .{
85434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85435 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },86991 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85436 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },86992 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85437 .unused,86993 .unused,
85438 .unused,86994 .unused,
...@@ -85446,12 +87002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85446,12 +87002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85446 .dst_temps = .{ .mem, .unused },87002 .dst_temps = .{ .mem, .unused },
85447 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85448 .each = .{ .once = &.{87004 .each = .{ .once = &.{
85449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87005 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85450 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },87006 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
85451 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85452 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87008 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
85453 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87009 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87010 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85455 } },87011 } },
85456 }, .{87012 }, .{
85457 .required_features = .{ .sse2, null, null, null },87013 .required_features = .{ .sse2, null, null, null },
...@@ -85462,8 +87018,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85462,8 +87018,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85462 },87018 },
85463 .call_frame = .{ .alignment = .@"16" },87019 .call_frame = .{ .alignment = .@"16" },
85464 .extra_temps = .{87020 .extra_temps = .{
85465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87021 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85466 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },87022 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85467 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },87023 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85468 .{ .type = .f16, .kind = .{ .reg = .ax } },87024 .{ .type = .f16, .kind = .{ .reg = .ax } },
85469 .unused,87025 .unused,
...@@ -85477,13 +87033,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85477,13 +87033,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85477 .dst_temps = .{ .mem, .unused },87033 .dst_temps = .{ .mem, .unused },
85478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85479 .each = .{ .once = &.{87035 .each = .{ .once = &.{
85480 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87036 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85481 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },87037 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
85482 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87038 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85483 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },87039 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
85484 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },87040 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
85485 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87041 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87042 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85487 } },87043 } },
85488 }, .{87044 }, .{
85489 .required_features = .{ .sse, null, null, null },87045 .required_features = .{ .sse, null, null, null },
...@@ -85494,8 +87050,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85494,8 +87050,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85494 },87050 },
85495 .call_frame = .{ .alignment = .@"16" },87051 .call_frame = .{ .alignment = .@"16" },
85496 .extra_temps = .{87052 .extra_temps = .{
85497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85498 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87054 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85499 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },87055 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85500 .{ .type = .f32, .kind = .mem },87056 .{ .type = .f32, .kind = .mem },
85501 .{ .type = .f16, .kind = .{ .reg = .ax } },87057 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -85509,21 +87065,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85509,21 +87065,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85509 .dst_temps = .{ .mem, .unused },87065 .dst_temps = .{ .mem, .unused },
85510 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85511 .each = .{ .once = &.{87067 .each = .{ .once = &.{
85512 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87068 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85513 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },87069 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
85514 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87070 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85515 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },87071 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
85516 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },87072 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
85517 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },87073 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
85518 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87074 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85519 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87075 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85520 } },87076 } },
85521 }, .{87077 }, .{
85522 .required_features = .{ .sse, null, null, null },87078 .required_features = .{ .sse, null, null, null },
85523 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },87079 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
85524 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },87080 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
85525 .patterns = &.{87081 .patterns = &.{
85526 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },87082 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
85527 },87083 },
85528 .call_frame = .{ .alignment = .@"16" },87084 .call_frame = .{ .alignment = .@"16" },
85529 .extra_temps = .{87085 .extra_temps = .{
...@@ -85553,8 +87109,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85553,8 +87109,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85553 },87109 },
85554 .call_frame = .{ .alignment = .@"16" },87110 .call_frame = .{ .alignment = .@"16" },
85555 .extra_temps = .{87111 .extra_temps = .{
85556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87112 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85557 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87113 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85558 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },87114 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85559 .unused,87115 .unused,
85560 .unused,87116 .unused,
...@@ -85568,12 +87124,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85568,12 +87124,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85568 .dst_temps = .{ .mem, .unused },87124 .dst_temps = .{ .mem, .unused },
85569 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87125 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85570 .each = .{ .once = &.{87126 .each = .{ .once = &.{
85571 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87127 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85572 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },87128 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
85573 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87129 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85574 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87130 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
85575 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87131 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87132 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85577 } },87133 } },
85578 }, .{87134 }, .{
85579 .required_features = .{ .sse4_1, null, null, null },87135 .required_features = .{ .sse4_1, null, null, null },
...@@ -85584,8 +87140,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85584,8 +87140,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85584 },87140 },
85585 .call_frame = .{ .alignment = .@"16" },87141 .call_frame = .{ .alignment = .@"16" },
85586 .extra_temps = .{87142 .extra_temps = .{
85587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87143 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85588 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87144 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85589 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },87145 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85590 .unused,87146 .unused,
85591 .unused,87147 .unused,
...@@ -85599,12 +87155,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85599,12 +87155,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85599 .dst_temps = .{ .mem, .unused },87155 .dst_temps = .{ .mem, .unused },
85600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87156 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85601 .each = .{ .once = &.{87157 .each = .{ .once = &.{
85602 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87158 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85603 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },87159 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
85604 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87160 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85605 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87161 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
85606 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87162 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85607 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87163 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85608 } },87164 } },
85609 }, .{87165 }, .{
85610 .required_features = .{ .sse2, null, null, null },87166 .required_features = .{ .sse2, null, null, null },
...@@ -85615,8 +87171,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85615,8 +87171,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85615 },87171 },
85616 .call_frame = .{ .alignment = .@"16" },87172 .call_frame = .{ .alignment = .@"16" },
85617 .extra_temps = .{87173 .extra_temps = .{
85618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87174 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85619 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87175 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85620 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },87176 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85621 .{ .type = .f16, .kind = .{ .reg = .ax } },87177 .{ .type = .f16, .kind = .{ .reg = .ax } },
85622 .unused,87178 .unused,
...@@ -85630,13 +87186,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85630,13 +87186,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85630 .dst_temps = .{ .mem, .unused },87186 .dst_temps = .{ .mem, .unused },
85631 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87187 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85632 .each = .{ .once = &.{87188 .each = .{ .once = &.{
85633 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87189 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85634 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },87190 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
85635 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87191 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85636 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },87192 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
85637 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },87193 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
85638 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87194 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85639 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87195 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85640 } },87196 } },
85641 }, .{87197 }, .{
85642 .required_features = .{ .sse, null, null, null },87198 .required_features = .{ .sse, null, null, null },
...@@ -85647,8 +87203,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85647,8 +87203,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85647 },87203 },
85648 .call_frame = .{ .alignment = .@"16" },87204 .call_frame = .{ .alignment = .@"16" },
85649 .extra_temps = .{87205 .extra_temps = .{
85650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87206 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85651 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87207 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85652 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },87208 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85653 .{ .type = .f32, .kind = .mem },87209 .{ .type = .f32, .kind = .mem },
85654 .{ .type = .f16, .kind = .{ .reg = .ax } },87210 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -85662,15 +87218,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85662,15 +87218,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85662 .dst_temps = .{ .mem, .unused },87218 .dst_temps = .{ .mem, .unused },
85663 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87219 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85664 .each = .{ .once = &.{87220 .each = .{ .once = &.{
85665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87221 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85666 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },87222 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
85667 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },87223 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
85668 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87224 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85669 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },87225 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
85670 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },87226 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
85671 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },87227 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
85672 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87228 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87229 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85674 } },87230 } },
85675 }, .{87231 }, .{
85676 .required_features = .{ .avx, null, null, null },87232 .required_features = .{ .avx, null, null, null },
...@@ -85777,7 +87333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85777,7 +87333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85777 .{ .src = .{ .to_mem, .none, .none } },87333 .{ .src = .{ .to_mem, .none, .none } },
85778 },87334 },
85779 .extra_temps = .{87335 .extra_temps = .{
85780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85781 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },87337 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
85782 .unused,87338 .unused,
85783 .unused,87339 .unused,
...@@ -85792,11 +87348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85792,11 +87348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85792 .dst_temps = .{ .mem, .unused },87348 .dst_temps = .{ .mem, .unused },
85793 .clobbers = .{ .eflags = true },87349 .clobbers = .{ .eflags = true },
85794 .each = .{ .once = &.{87350 .each = .{ .once = &.{
85795 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87351 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
85796 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },87352 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
85797 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },87353 .{ ._, .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
85798 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },87354 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
85799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87355 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85800 } },87356 } },
85801 }, .{87357 }, .{
85802 .required_features = .{ .sse2, null, null, null },87358 .required_features = .{ .sse2, null, null, null },
...@@ -85806,7 +87362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85806,7 +87362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85806 .{ .src = .{ .to_mem, .none, .none } },87362 .{ .src = .{ .to_mem, .none, .none } },
85807 },87363 },
85808 .extra_temps = .{87364 .extra_temps = .{
85809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87365 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85810 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },87366 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
85811 .unused,87367 .unused,
85812 .unused,87368 .unused,
...@@ -85821,11 +87377,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85821,11 +87377,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85821 .dst_temps = .{ .mem, .unused },87377 .dst_temps = .{ .mem, .unused },
85822 .clobbers = .{ .eflags = true },87378 .clobbers = .{ .eflags = true },
85823 .each = .{ .once = &.{87379 .each = .{ .once = &.{
85824 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87380 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
85825 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },87381 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
85826 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },87382 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
85827 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },87383 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
85828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87384 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85829 } },87385 } },
85830 }, .{87386 }, .{
85831 .required_features = .{ .x87, null, null, null },87387 .required_features = .{ .x87, null, null, null },
...@@ -85835,7 +87391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85835,7 +87391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85835 .{ .src = .{ .to_mem, .none, .none } },87391 .{ .src = .{ .to_mem, .none, .none } },
85836 },87392 },
85837 .extra_temps = .{87393 .extra_temps = .{
85838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87394 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85839 .{ .type = .f64, .kind = .{ .reg = .st7 } },87395 .{ .type = .f64, .kind = .{ .reg = .st7 } },
85840 .unused,87396 .unused,
85841 .unused,87397 .unused,
...@@ -85850,13 +87406,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85850,13 +87406,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85850 .dst_temps = .{ .mem, .unused },87406 .dst_temps = .{ .mem, .unused },
85851 .clobbers = .{ .eflags = true },87407 .clobbers = .{ .eflags = true },
85852 .each = .{ .once = &.{87408 .each = .{ .once = &.{
85853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87409 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
85854 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },87410 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"2", .tmp0), ._, ._, ._ },
85855 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },87411 .{ ._, .f_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
85856 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },87412 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
85857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87413 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
85858 } },87414 } },
85859 }, .{87415 }, .{
87416 .required_cc_abi = .sysv64,
85860 .required_features = .{ .avx, null, null, null },87417 .required_features = .{ .avx, null, null, null },
85861 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87418 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
85862 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },87419 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
...@@ -85877,7 +87434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85877,7 +87434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85877 .unused,87434 .unused,
85878 .unused,87435 .unused,
85879 },87436 },
85880 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },87437 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
85881 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87438 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85882 .each = .{ .once = &.{87439 .each = .{ .once = &.{
85883 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },87440 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
...@@ -85885,6 +87442,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85885,6 +87442,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85885 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },87442 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
85886 } },87443 } },
85887 }, .{87444 }, .{
87445 .required_cc_abi = .sysv64,
85888 .required_features = .{ .sse2, null, null, null },87446 .required_features = .{ .sse2, null, null, null },
85889 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87447 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
85890 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },87448 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
...@@ -85905,7 +87463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85905,7 +87463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85905 .unused,87463 .unused,
85906 .unused,87464 .unused,
85907 },87465 },
85908 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },87466 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
85909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85910 .each = .{ .once = &.{87468 .each = .{ .once = &.{
85911 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },87469 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
...@@ -85913,6 +87471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85913,6 +87471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85913 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },87471 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
85914 } },87472 } },
85915 }, .{87473 }, .{
87474 .required_cc_abi = .sysv64,
85916 .required_features = .{ .sse, null, null, null },87475 .required_features = .{ .sse, null, null, null },
85917 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87476 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
85918 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },87477 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
...@@ -85933,7 +87492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85933,7 +87492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85933 .unused,87492 .unused,
85934 .unused,87493 .unused,
85935 },87494 },
85936 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },87495 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
85937 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87496 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85938 .each = .{ .once = &.{87497 .each = .{ .once = &.{
85939 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },87498 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
...@@ -85941,6 +87500,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85941,6 +87500,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85941 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },87500 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
85942 } },87501 } },
85943 }, .{87502 }, .{
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,
85944 .required_features = .{ .avx, null, null, null },87532 .required_features = .{ .avx, null, null, null },
85945 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87533 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
85946 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },87534 .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 {...@@ -85949,8 +87537,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85949 },87537 },
85950 .call_frame = .{ .size = 16, .alignment = .@"16" },87538 .call_frame = .{ .size = 16, .alignment = .@"16" },
85951 .extra_temps = .{87539 .extra_temps = .{
85952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87540 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85953 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },87541 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85954 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87542 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85955 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },87543 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
85956 .unused,87544 .unused,
...@@ -85964,15 +87552,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85964,15 +87552,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85964 .dst_temps = .{ .mem, .unused },87552 .dst_temps = .{ .mem, .unused },
85965 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87553 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85966 .each = .{ .once = &.{87554 .each = .{ .once = &.{
85967 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87555 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
85968 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },87556 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
85969 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },87557 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
85970 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },87558 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
85971 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87559 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
85972 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87560 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
85973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
85974 } },87594 } },
85975 }, .{87595 }, .{
87596 .required_cc_abi = .sysv64,
85976 .required_features = .{ .sse4_1, null, null, null },87597 .required_features = .{ .sse4_1, null, null, null },
85977 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87598 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
85978 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },87599 .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 {...@@ -85981,8 +87602,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85981 },87602 },
85982 .call_frame = .{ .size = 16, .alignment = .@"16" },87603 .call_frame = .{ .size = 16, .alignment = .@"16" },
85983 .extra_temps = .{87604 .extra_temps = .{
85984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87605 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
85985 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },87606 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85986 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87607 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85987 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },87608 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
85988 .unused,87609 .unused,
...@@ -85996,15 +87617,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85996,15 +87617,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85996 .dst_temps = .{ .mem, .unused },87617 .dst_temps = .{ .mem, .unused },
85997 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
85998 .each = .{ .once = &.{87619 .each = .{ .once = &.{
85999 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87620 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86000 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },87621 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86001 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },87622 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
86002 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },87623 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
86003 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87624 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
86004 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87625 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86005 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
86006 } },87659 } },
86007 }, .{87660 }, .{
87661 .required_cc_abi = .sysv64,
86008 .required_features = .{ .sse2, null, null, null },87662 .required_features = .{ .sse2, null, null, null },
86009 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87663 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
86010 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },87664 .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 {...@@ -86013,8 +87667,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86013 },87667 },
86014 .call_frame = .{ .size = 16, .alignment = .@"16" },87668 .call_frame = .{ .size = 16, .alignment = .@"16" },
86015 .extra_temps = .{87669 .extra_temps = .{
86016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87670 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86017 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },87671 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86018 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87672 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86019 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },87673 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
86020 .{ .type = .f16, .kind = .{ .reg = .ax } },87674 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -86028,16 +87682,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86028,16 +87682,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86028 .dst_temps = .{ .mem, .unused },87682 .dst_temps = .{ .mem, .unused },
86029 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87683 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86030 .each = .{ .once = &.{87684 .each = .{ .once = &.{
86031 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87685 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86032 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },87686 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86033 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },87687 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
86034 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },87688 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
86035 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },87689 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
86036 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },87690 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
86037 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87691 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86038 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
86039 } },87726 } },
86040 }, .{87727 }, .{
87728 .required_cc_abi = .sysv64,
86041 .required_features = .{ .sse, null, null, null },87729 .required_features = .{ .sse, null, null, null },
86042 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },87730 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
86043 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },87731 .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 {...@@ -86046,8 +87734,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86046 },87734 },
86047 .call_frame = .{ .size = 16, .alignment = .@"16" },87735 .call_frame = .{ .size = 16, .alignment = .@"16" },
86048 .extra_temps = .{87736 .extra_temps = .{
86049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86050 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },87738 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86051 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87739 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86052 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },87740 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
86053 .{ .type = .f16, .kind = .{ .reg = .ax } },87741 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -86061,15 +87749,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86061,15 +87749,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86061 .dst_temps = .{ .mem, .unused },87749 .dst_temps = .{ .mem, .unused },
86062 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87750 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86063 .each = .{ .once = &.{87751 .each = .{ .once = &.{
86064 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87752 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86065 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },87753 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86066 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },87754 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
86067 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },87755 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
86068 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },87756 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
86069 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },87757 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
86070 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },87758 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
86071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87759 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
86073 } },87795 } },
86074 }, .{87796 }, .{
86075 .required_features = .{ .x87, null, null, null },87797 .required_features = .{ .x87, null, null, null },
...@@ -86105,7 +87827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86105,7 +87827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86105 .{ .src = .{ .to_mem, .none, .none } },87827 .{ .src = .{ .to_mem, .none, .none } },
86106 },87828 },
86107 .extra_temps = .{87829 .extra_temps = .{
86108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87830 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86109 .{ .type = .f80, .kind = .{ .reg = .st7 } },87831 .{ .type = .f80, .kind = .{ .reg = .st7 } },
86110 .unused,87832 .unused,
86111 .unused,87833 .unused,
...@@ -86120,11 +87842,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86120,11 +87842,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86120 .dst_temps = .{ .mem, .unused },87842 .dst_temps = .{ .mem, .unused },
86121 .clobbers = .{ .eflags = true },87843 .clobbers = .{ .eflags = true },
86122 .each = .{ .once = &.{87844 .each = .{ .once = &.{
86123 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87845 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
86124 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },87846 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
86125 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },87847 .{ ._, .f_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
86126 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },87848 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
86127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87849 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86128 } },87850 } },
86129 }, .{87851 }, .{
86130 .required_features = .{ .x87, null, null, null },87852 .required_features = .{ .x87, null, null, null },
...@@ -86160,7 +87882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86160,7 +87882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86160 .{ .src = .{ .to_mem, .none, .none } },87882 .{ .src = .{ .to_mem, .none, .none } },
86161 },87883 },
86162 .extra_temps = .{87884 .extra_temps = .{
86163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86164 .{ .type = .f80, .kind = .{ .reg = .st7 } },87886 .{ .type = .f80, .kind = .{ .reg = .st7 } },
86165 .unused,87887 .unused,
86166 .unused,87888 .unused,
...@@ -86175,18 +87897,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86175,18 +87897,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86175 .dst_temps = .{ .mem, .unused },87897 .dst_temps = .{ .mem, .unused },
86176 .clobbers = .{ .eflags = true },87898 .clobbers = .{ .eflags = true },
86177 .each = .{ .once = &.{87899 .each = .{ .once = &.{
86178 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87900 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
86179 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },87901 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"2", .tmp0), ._, ._, ._ },
86180 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },87902 .{ ._, .f_p, .st, .memi(.dst0q, .tmp0), ._, ._, ._ },
86181 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },87903 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
86182 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87904 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86183 } },87905 } },
86184 }, .{87906 }, .{
86185 .required_features = .{ .sse, null, null, null },87907 .required_features = .{ .sse, null, null, null },
86186 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },87908 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86187 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },87909 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
86188 .patterns = &.{87910 .patterns = &.{
86189 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },87911 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
86190 },87912 },
86191 .call_frame = .{ .alignment = .@"16" },87913 .call_frame = .{ .alignment = .@"16" },
86192 .extra_temps = .{87914 .extra_temps = .{
...@@ -86216,8 +87938,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86216,8 +87938,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86216 },87938 },
86217 .call_frame = .{ .alignment = .@"16" },87939 .call_frame = .{ .alignment = .@"16" },
86218 .extra_temps = .{87940 .extra_temps = .{
86219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87941 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86220 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },87942 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86221 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },87943 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86222 .unused,87944 .unused,
86223 .unused,87945 .unused,
...@@ -86231,12 +87953,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86231,12 +87953,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86231 .dst_temps = .{ .mem, .unused },87953 .dst_temps = .{ .mem, .unused },
86232 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86233 .each = .{ .once = &.{87955 .each = .{ .once = &.{
86234 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87956 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86235 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },87957 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86236 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87958 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86237 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87959 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
86238 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87960 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86239 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87961 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86240 } },87962 } },
86241 }, .{87963 }, .{
86242 .required_features = .{ .sse4_1, null, null, null },87964 .required_features = .{ .sse4_1, null, null, null },
...@@ -86247,8 +87969,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86247,8 +87969,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86247 },87969 },
86248 .call_frame = .{ .alignment = .@"16" },87970 .call_frame = .{ .alignment = .@"16" },
86249 .extra_temps = .{87971 .extra_temps = .{
86250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87972 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86251 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },87973 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86252 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },87974 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86253 .unused,87975 .unused,
86254 .unused,87976 .unused,
...@@ -86262,12 +87984,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86262,12 +87984,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86262 .dst_temps = .{ .mem, .unused },87984 .dst_temps = .{ .mem, .unused },
86263 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },87985 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86264 .each = .{ .once = &.{87986 .each = .{ .once = &.{
86265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },87987 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86266 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },87988 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86267 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },87989 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86268 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },87990 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
86269 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },87991 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },87992 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86271 } },87993 } },
86272 }, .{87994 }, .{
86273 .required_features = .{ .sse2, null, null, null },87995 .required_features = .{ .sse2, null, null, null },
...@@ -86278,8 +88000,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86278,8 +88000,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86278 },88000 },
86279 .call_frame = .{ .alignment = .@"16" },88001 .call_frame = .{ .alignment = .@"16" },
86280 .extra_temps = .{88002 .extra_temps = .{
86281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88003 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86282 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88004 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86283 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },88005 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86284 .{ .type = .f16, .kind = .{ .reg = .ax } },88006 .{ .type = .f16, .kind = .{ .reg = .ax } },
86285 .unused,88007 .unused,
...@@ -86293,13 +88015,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86293,13 +88015,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86293 .dst_temps = .{ .mem, .unused },88015 .dst_temps = .{ .mem, .unused },
86294 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88016 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86295 .each = .{ .once = &.{88017 .each = .{ .once = &.{
86296 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88018 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86297 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },88019 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86298 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88020 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86299 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },88021 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
86300 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },88022 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
86301 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88023 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86302 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88024 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86303 } },88025 } },
86304 }, .{88026 }, .{
86305 .required_features = .{ .sse, null, null, null },88027 .required_features = .{ .sse, null, null, null },
...@@ -86310,8 +88032,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86310,8 +88032,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86310 },88032 },
86311 .call_frame = .{ .alignment = .@"16" },88033 .call_frame = .{ .alignment = .@"16" },
86312 .extra_temps = .{88034 .extra_temps = .{
86313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88035 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86314 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },88036 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86315 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },88037 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86316 .{ .type = .f32, .kind = .mem },88038 .{ .type = .f32, .kind = .mem },
86317 .{ .type = .f16, .kind = .{ .reg = .ax } },88039 .{ .type = .f16, .kind = .{ .reg = .ax } },
...@@ -86325,21 +88047,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86325,21 +88047,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86325 .dst_temps = .{ .mem, .unused },88047 .dst_temps = .{ .mem, .unused },
86326 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86327 .each = .{ .once = &.{88049 .each = .{ .once = &.{
86328 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88050 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86329 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },88051 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
86330 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86331 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },88053 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
86332 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },88054 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
86333 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },88055 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
86334 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88056 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88057 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86336 } },88058 } },
86337 }, .{88059 }, .{
86338 .required_features = .{ .sse, null, null, null },88060 .required_features = .{ .sse, null, null, null },
86339 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },88061 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86340 .dst_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },88062 .dst_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
86341 .patterns = &.{88063 .patterns = &.{
86342 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },88064 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
86343 },88065 },
86344 .call_frame = .{ .alignment = .@"16" },88066 .call_frame = .{ .alignment = .@"16" },
86345 .extra_temps = .{88067 .extra_temps = .{
...@@ -86369,8 +88091,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86369,8 +88091,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86369 },88091 },
86370 .call_frame = .{ .alignment = .@"16" },88092 .call_frame = .{ .alignment = .@"16" },
86371 .extra_temps = .{88093 .extra_temps = .{
86372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88094 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86373 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88095 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86374 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },88096 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86375 .unused,88097 .unused,
86376 .unused,88098 .unused,
...@@ -86384,12 +88106,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86384,12 +88106,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86384 .dst_temps = .{ .mem, .unused },88106 .dst_temps = .{ .mem, .unused },
86385 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86386 .each = .{ .once = &.{88108 .each = .{ .once = &.{
86387 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88109 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
86388 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },88110 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
86389 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88111 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86390 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88112 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
86391 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },88113 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
86392 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88114 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86393 } },88115 } },
86394 }, .{88116 }, .{
86395 .required_features = .{ .sse2, null, null, null },88117 .required_features = .{ .sse2, null, null, null },
...@@ -86400,8 +88122,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86400,8 +88122,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86400 },88122 },
86401 .call_frame = .{ .alignment = .@"16" },88123 .call_frame = .{ .alignment = .@"16" },
86402 .extra_temps = .{88124 .extra_temps = .{
86403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88125 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86404 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88126 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86405 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },88127 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86406 .unused,88128 .unused,
86407 .unused,88129 .unused,
...@@ -86415,12 +88137,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86415,12 +88137,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86415 .dst_temps = .{ .mem, .unused },88137 .dst_temps = .{ .mem, .unused },
86416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86417 .each = .{ .once = &.{88139 .each = .{ .once = &.{
86418 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88140 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
86419 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },88141 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
86420 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88142 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86421 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88143 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
86422 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },88144 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
86423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88145 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86424 } },88146 } },
86425 }, .{88147 }, .{
86426 .required_features = .{ .sse, null, null, null },88148 .required_features = .{ .sse, null, null, null },
...@@ -86431,8 +88153,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86431,8 +88153,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86431 },88153 },
86432 .call_frame = .{ .alignment = .@"16" },88154 .call_frame = .{ .alignment = .@"16" },
86433 .extra_temps = .{88155 .extra_temps = .{
86434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88156 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86435 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88157 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86436 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },88158 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86437 .unused,88159 .unused,
86438 .unused,88160 .unused,
...@@ -86446,19 +88168,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86446,19 +88168,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86446 .dst_temps = .{ .mem, .unused },88168 .dst_temps = .{ .mem, .unused },
86447 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88169 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86448 .each = .{ .once = &.{88170 .each = .{ .once = &.{
86449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88171 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
86450 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },88172 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
86451 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88173 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86452 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88174 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
86453 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },88175 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
86454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88176 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86455 } },88177 } },
86456 }, .{88178 }, .{
86457 .required_features = .{ .sse, null, null, null },88179 .required_features = .{ .sse, null, null, null },
86458 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },88180 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86459 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },88181 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
86460 .patterns = &.{88182 .patterns = &.{
86461 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },88183 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
86462 },88184 },
86463 .call_frame = .{ .alignment = .@"16" },88185 .call_frame = .{ .alignment = .@"16" },
86464 .extra_temps = .{88186 .extra_temps = .{
...@@ -86488,8 +88210,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86488,8 +88210,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86488 },88210 },
86489 .call_frame = .{ .alignment = .@"16" },88211 .call_frame = .{ .alignment = .@"16" },
86490 .extra_temps = .{88212 .extra_temps = .{
86491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88213 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86492 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88214 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86493 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },88215 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86494 .unused,88216 .unused,
86495 .unused,88217 .unused,
...@@ -86503,12 +88225,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86503,12 +88225,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86503 .dst_temps = .{ .mem, .unused },88225 .dst_temps = .{ .mem, .unused },
86504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88226 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86505 .each = .{ .once = &.{88227 .each = .{ .once = &.{
86506 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88228 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
86507 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },88229 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
86508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88230 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86509 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88231 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
86510 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },88232 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
86511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88233 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86512 } },88234 } },
86513 }, .{88235 }, .{
86514 .required_features = .{ .sse2, null, null, null },88236 .required_features = .{ .sse2, null, null, null },
...@@ -86519,8 +88241,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86519,8 +88241,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86519 },88241 },
86520 .call_frame = .{ .alignment = .@"16" },88242 .call_frame = .{ .alignment = .@"16" },
86521 .extra_temps = .{88243 .extra_temps = .{
86522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88245 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86524 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },88246 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86525 .unused,88247 .unused,
86526 .unused,88248 .unused,
...@@ -86534,12 +88256,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86534,12 +88256,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86534 .dst_temps = .{ .mem, .unused },88256 .dst_temps = .{ .mem, .unused },
86535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88257 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86536 .each = .{ .once = &.{88258 .each = .{ .once = &.{
86537 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88259 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
86538 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },88260 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
86539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88261 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86540 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88262 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
86541 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },88263 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
86542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88264 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86543 } },88265 } },
86544 }, .{88266 }, .{
86545 .required_features = .{ .sse, null, null, null },88267 .required_features = .{ .sse, null, null, null },
...@@ -86550,8 +88272,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86550,8 +88272,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86550 },88272 },
86551 .call_frame = .{ .alignment = .@"16" },88273 .call_frame = .{ .alignment = .@"16" },
86552 .extra_temps = .{88274 .extra_temps = .{
86553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88275 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86554 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88276 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86555 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },88277 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86556 .unused,88278 .unused,
86557 .unused,88279 .unused,
...@@ -86565,19 +88287,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86565,19 +88287,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86565 .dst_temps = .{ .mem, .unused },88287 .dst_temps = .{ .mem, .unused },
86566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88288 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86567 .each = .{ .once = &.{88289 .each = .{ .once = &.{
86568 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88290 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
86569 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },88291 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
86570 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88292 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86571 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88293 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
86572 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },88294 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
86573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88295 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86574 } },88296 } },
86575 }, .{88297 }, .{
88298 .required_cc_abi = .sysv64,
86576 .required_features = .{ .sse, .x87, null, null },88299 .required_features = .{ .sse, .x87, null, null },
86577 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },88300 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86578 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },88301 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
86579 .patterns = &.{88302 .patterns = &.{
86580 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },88303 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
86581 },88304 },
86582 .call_frame = .{ .alignment = .@"16" },88305 .call_frame = .{ .alignment = .@"16" },
86583 .extra_temps = .{88306 .extra_temps = .{
...@@ -86599,6 +88322,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86599,6 +88322,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86599 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },88322 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
86600 } },88323 } },
86601 }, .{88324 }, .{
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,
86602 .required_features = .{ .avx, null, null, null },88354 .required_features = .{ .avx, null, null, null },
86603 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },88355 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86604 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },88356 .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 {...@@ -86607,8 +88359,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86607 },88359 },
86608 .call_frame = .{ .alignment = .@"16" },88360 .call_frame = .{ .alignment = .@"16" },
86609 .extra_temps = .{88361 .extra_temps = .{
86610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88362 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86611 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88363 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86612 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },88364 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86613 .unused,88365 .unused,
86614 .unused,88366 .unused,
...@@ -86622,15 +88374,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86622,15 +88374,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86622 .dst_temps = .{ .mem, .unused },88374 .dst_temps = .{ .mem, .unused },
86623 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86624 .each = .{ .once = &.{88376 .each = .{ .once = &.{
86625 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88377 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
86626 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },88378 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
86627 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88379 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86628 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },88380 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
86629 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },88381 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
86630 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },88382 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
86631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88383 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86632 } },88384 } },
86633 }, .{88385 }, .{
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,
86634 .required_features = .{ .sse2, null, null, null },88419 .required_features = .{ .sse2, null, null, null },
86635 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },88420 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86636 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },88421 .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 {...@@ -86639,8 +88424,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86639 },88424 },
86640 .call_frame = .{ .alignment = .@"16" },88425 .call_frame = .{ .alignment = .@"16" },
86641 .extra_temps = .{88426 .extra_temps = .{
86642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86643 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88428 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86644 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },88429 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86645 .unused,88430 .unused,
86646 .unused,88431 .unused,
...@@ -86654,15 +88439,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86654,15 +88439,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86654 .dst_temps = .{ .mem, .unused },88439 .dst_temps = .{ .mem, .unused },
86655 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86656 .each = .{ .once = &.{88441 .each = .{ .once = &.{
86657 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88442 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
86658 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },88443 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
86659 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86660 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },88445 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
86661 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },88446 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
86662 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },88447 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
86663 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
86664 } },88481 } },
86665 }, .{88482 }, .{
88483 .required_cc_abi = .sysv64,
86666 .required_features = .{ .sse, null, null, null },88484 .required_features = .{ .sse, null, null, null },
86667 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },88485 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
86668 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },88486 .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 {...@@ -86671,8 +88489,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86671 },88489 },
86672 .call_frame = .{ .alignment = .@"16" },88490 .call_frame = .{ .alignment = .@"16" },
86673 .extra_temps = .{88491 .extra_temps = .{
86674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88492 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86675 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },88493 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86676 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },88494 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86677 .unused,88495 .unused,
86678 .unused,88496 .unused,
...@@ -86686,13 +88504,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86686,13 +88504,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86686 .dst_temps = .{ .mem, .unused },88504 .dst_temps = .{ .mem, .unused },
86687 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86688 .each = .{ .once = &.{88506 .each = .{ .once = &.{
86689 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },88507 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_unaligned_size), ._, ._ },
86690 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },88508 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
86691 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88509 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86692 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },88510 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
86693 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },88511 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
86694 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },88512 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
86695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
86696 } },88546 } },
86697 } }) catch |err| switch (err) {88547 } }) catch |err| switch (err) {
86698 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{88548 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
...@@ -86705,7 +88555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86705,7 +88555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86705 };88555 };
86706 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);88556 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
86707 },88557 },
86708 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {88558 .fpext => |air_tag| {
86709 const ty_op = air_datas[@intFromEnum(inst)].ty_op;88559 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
86710 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});88560 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
86711 var res: [1]Temp = undefined;88561 var res: [1]Temp = undefined;
...@@ -86749,7 +88599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86749,7 +88599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86749 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },88599 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
86750 .dst_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },88600 .dst_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
86751 .patterns = &.{88601 .patterns = &.{
86752 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },88602 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
86753 },88603 },
86754 .call_frame = .{ .alignment = .@"16" },88604 .call_frame = .{ .alignment = .@"16" },
86755 .extra_temps = .{88605 .extra_temps = .{
...@@ -86778,7 +88628,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86778,7 +88628,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86778 .{ .src = .{ .to_mem, .none, .none } },88628 .{ .src = .{ .to_mem, .none, .none } },
86779 },88629 },
86780 .extra_temps = .{88630 .extra_temps = .{
86781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88631 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86782 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },88632 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
86783 .unused,88633 .unused,
86784 .unused,88634 .unused,
...@@ -86793,11 +88643,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86793,11 +88643,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86793 .dst_temps = .{ .mem, .unused },88643 .dst_temps = .{ .mem, .unused },
86794 .clobbers = .{ .eflags = true },88644 .clobbers = .{ .eflags = true },
86795 .each = .{ .once = &.{88645 .each = .{ .once = &.{
86796 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88646 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
86797 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },88647 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
86798 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },88648 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
86799 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },88649 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
86800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88650 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86801 } },88651 } },
86802 }, .{88652 }, .{
86803 .required_features = .{ .avx, null, null, null },88653 .required_features = .{ .avx, null, null, null },
...@@ -86808,8 +88658,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86808,8 +88658,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86808 },88658 },
86809 .call_frame = .{ .alignment = .@"16" },88659 .call_frame = .{ .alignment = .@"16" },
86810 .extra_temps = .{88660 .extra_temps = .{
86811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88661 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },88662 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86813 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },88663 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86814 .unused,88664 .unused,
86815 .unused,88665 .unused,
...@@ -86823,13 +88673,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86823,13 +88673,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86823 .dst_temps = .{ .mem, .unused },88673 .dst_temps = .{ .mem, .unused },
86824 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86825 .each = .{ .once = &.{88675 .each = .{ .once = &.{
86826 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88676 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
86827 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },88677 .{ .@"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) },
86829 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88679 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86830 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88680 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1x, ._, ._ },
86831 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88681 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88682 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86833 } },88683 } },
86834 }, .{88684 }, .{
86835 .required_features = .{ .sse2, null, null, null },88685 .required_features = .{ .sse2, null, null, null },
...@@ -86840,8 +88690,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86840,8 +88690,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86840 },88690 },
86841 .call_frame = .{ .alignment = .@"16" },88691 .call_frame = .{ .alignment = .@"16" },
86842 .extra_temps = .{88692 .extra_temps = .{
86843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88693 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },88694 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86845 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },88695 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86846 .unused,88696 .unused,
86847 .unused,88697 .unused,
...@@ -86855,13 +88705,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86855,13 +88705,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86855 .dst_temps = .{ .mem, .unused },88705 .dst_temps = .{ .mem, .unused },
86856 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86857 .each = .{ .once = &.{88707 .each = .{ .once = &.{
86858 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88708 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
86859 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },88709 .{ .@"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), ._ },
86861 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88711 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86862 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88712 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1x, ._, ._ },
86863 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88713 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88714 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86865 } },88715 } },
86866 }, .{88716 }, .{
86867 .required_features = .{ .sse, null, null, null },88717 .required_features = .{ .sse, null, null, null },
...@@ -86872,10 +88722,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86872,10 +88722,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86872 },88722 },
86873 .call_frame = .{ .alignment = .@"16" },88723 .call_frame = .{ .alignment = .@"16" },
86874 .extra_temps = .{88724 .extra_temps = .{
86875 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88725 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86876 .{ .type = .f16, .kind = .{ .reg = .ax } },88726 .{ .type = .f16, .kind = .{ .reg = .ax } },
86877 .{ .type = .f32, .kind = .mem },88727 .{ .type = .f32, .kind = .mem },
86878 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },88728 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86879 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },88729 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86880 .unused,88730 .unused,
86881 .unused,88731 .unused,
...@@ -86887,14 +88737,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86887,14 +88737,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86887 .dst_temps = .{ .mem, .unused },88737 .dst_temps = .{ .mem, .unused },
86888 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
86889 .each = .{ .once = &.{88739 .each = .{ .once = &.{
86890 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88740 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
86891 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },88741 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
86892 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },88742 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
86893 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },88743 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
86894 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },88744 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
86895 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },88745 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
86896 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88746 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88747 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
86898 } },88748 } },
86899 }, .{88749 }, .{
86900 .required_features = .{ .f16c, null, null, null },88750 .required_features = .{ .f16c, null, null, null },
...@@ -86969,7 +88819,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86969,7 +88819,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86969 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },88819 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
86970 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },88820 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
86971 .patterns = &.{88821 .patterns = &.{
86972 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },88822 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
86973 },88823 },
86974 .call_frame = .{ .alignment = .@"16" },88824 .call_frame = .{ .alignment = .@"16" },
86975 .extra_temps = .{88825 .extra_temps = .{
...@@ -86998,7 +88848,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86998,7 +88848,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86998 .{ .src = .{ .to_mem, .none, .none } },88848 .{ .src = .{ .to_mem, .none, .none } },
86999 },88849 },
87000 .extra_temps = .{88850 .extra_temps = .{
87001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88851 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87002 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },88852 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
87003 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },88853 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
87004 .unused,88854 .unused,
...@@ -87013,15 +88863,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87013,15 +88863,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87013 .dst_temps = .{ .mem, .unused },88863 .dst_temps = .{ .mem, .unused },
87014 .clobbers = .{ .eflags = true },88864 .clobbers = .{ .eflags = true },
87015 .each = .{ .once = &.{88865 .each = .{ .once = &.{
87016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88866 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
87017 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },88867 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
87018 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },88868 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
87019 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },88869 .{ ._, .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, ._, ._ },
87021 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },88871 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
87022 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ },88872 .{ ._, .v_pd, .mova, .memsid(.dst0y, .@"4", .tmp0, 32), .tmp2y, ._, ._ },
87023 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },88873 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
87024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87025 } },88875 } },
87026 }, .{88876 }, .{
87027 .required_features = .{ .avx, null, null, null },88877 .required_features = .{ .avx, null, null, null },
...@@ -87032,8 +88882,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87032,8 +88882,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87032 },88882 },
87033 .call_frame = .{ .alignment = .@"16" },88883 .call_frame = .{ .alignment = .@"16" },
87034 .extra_temps = .{88884 .extra_temps = .{
87035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87036 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },88886 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87037 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },88887 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87038 .unused,88888 .unused,
87039 .unused,88889 .unused,
...@@ -87047,13 +88897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87047,13 +88897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87047 .dst_temps = .{ .mem, .unused },88897 .dst_temps = .{ .mem, .unused },
87048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87049 .each = .{ .once = &.{88899 .each = .{ .once = &.{
87050 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88900 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87051 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },88901 .{ .@"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) },
87053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88903 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87054 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88904 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1x, ._, ._ },
87055 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88905 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88906 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87057 } },88907 } },
87058 }, .{88908 }, .{
87059 .required_features = .{ .sse2, null, null, null },88909 .required_features = .{ .sse2, null, null, null },
...@@ -87064,8 +88914,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87064,8 +88914,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87064 },88914 },
87065 .call_frame = .{ .alignment = .@"16" },88915 .call_frame = .{ .alignment = .@"16" },
87066 .extra_temps = .{88916 .extra_temps = .{
87067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88917 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87068 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },88918 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87069 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },88919 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87070 .unused,88920 .unused,
87071 .unused,88921 .unused,
...@@ -87079,13 +88929,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87079,13 +88929,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87079 .dst_temps = .{ .mem, .unused },88929 .dst_temps = .{ .mem, .unused },
87080 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87081 .each = .{ .once = &.{88931 .each = .{ .once = &.{
87082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88932 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87083 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },88933 .{ .@"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), ._ },
87085 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },88935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87086 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },88936 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1x, ._, ._ },
87087 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88937 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88938 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87089 } },88939 } },
87090 }, .{88940 }, .{
87091 .required_features = .{ .sse, null, null, null },88941 .required_features = .{ .sse, null, null, null },
...@@ -87096,10 +88946,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87096,10 +88946,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87096 },88946 },
87097 .call_frame = .{ .alignment = .@"16" },88947 .call_frame = .{ .alignment = .@"16" },
87098 .extra_temps = .{88948 .extra_temps = .{
87099 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88949 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87100 .{ .type = .f16, .kind = .{ .reg = .ax } },88950 .{ .type = .f16, .kind = .{ .reg = .ax } },
87101 .{ .type = .f32, .kind = .mem },88951 .{ .type = .f32, .kind = .mem },
87102 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },88952 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87103 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },88953 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87104 .unused,88954 .unused,
87105 .unused,88955 .unused,
...@@ -87111,14 +88961,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87111,14 +88961,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87111 .dst_temps = .{ .mem, .unused },88961 .dst_temps = .{ .mem, .unused },
87112 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },88962 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87113 .each = .{ .once = &.{88963 .each = .{ .once = &.{
87114 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },88964 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87115 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },88965 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
87116 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },88966 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
87117 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },88967 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
87118 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },88968 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
87119 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },88969 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
87120 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },88970 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },88971 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87122 } },88972 } },
87123 }, .{88973 }, .{
87124 .required_features = .{ .f16c, .x87, null, null },88974 .required_features = .{ .f16c, .x87, null, null },
...@@ -87148,11 +88998,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87148,11 +88998,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87148 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },88998 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
87149 } },88999 } },
87150 }, .{89000 }, .{
89001 .required_cc_abi = .sysv64,
87151 .required_features = .{ .sse, .x87, null, null },89002 .required_features = .{ .sse, .x87, null, null },
87152 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },89003 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
87153 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },89004 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
87154 .patterns = &.{89005 .patterns = &.{
87155 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },89006 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
87156 },89007 },
87157 .call_frame = .{ .alignment = .@"16" },89008 .call_frame = .{ .alignment = .@"16" },
87158 .extra_temps = .{89009 .extra_temps = .{
...@@ -87174,6 +89025,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87174,6 +89025,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87174 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },89025 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
87175 } },89026 } },
87176 }, .{89027 }, .{
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,
87177 .required_features = .{ .avx, null, null, null },89057 .required_features = .{ .avx, null, null, null },
87178 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },89058 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
87179 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },89059 .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 {...@@ -87182,8 +89062,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87182 },89062 },
87183 .call_frame = .{ .alignment = .@"16" },89063 .call_frame = .{ .alignment = .@"16" },
87184 .extra_temps = .{89064 .extra_temps = .{
87185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89065 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87186 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },89066 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87187 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },89067 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87188 .unused,89068 .unused,
87189 .unused,89069 .unused,
...@@ -87197,16 +89077,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87197,16 +89077,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87197 .dst_temps = .{ .mem, .unused },89077 .dst_temps = .{ .mem, .unused },
87198 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87199 .each = .{ .once = &.{89079 .each = .{ .once = &.{
87200 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89080 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87201 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },89081 .{ .@"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) },
87203 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89083 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87204 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },89084 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
87205 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },89085 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
87206 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },89086 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89087 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87208 } },89088 } },
87209 }, .{89089 }, .{
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,
87210 .required_features = .{ .sse2, null, null, null },89124 .required_features = .{ .sse2, null, null, null },
87211 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },89125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
87212 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },89126 .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 {...@@ -87215,8 +89129,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87215 },89129 },
87216 .call_frame = .{ .alignment = .@"16" },89130 .call_frame = .{ .alignment = .@"16" },
87217 .extra_temps = .{89131 .extra_temps = .{
87218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89132 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87219 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },89133 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87220 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },89134 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87221 .unused,89135 .unused,
87222 .unused,89136 .unused,
...@@ -87230,16 +89144,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87230,16 +89144,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87230 .dst_temps = .{ .mem, .unused },89144 .dst_temps = .{ .mem, .unused },
87231 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87232 .each = .{ .once = &.{89146 .each = .{ .once = &.{
87233 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89147 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87234 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },89148 .{ .@"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), ._ },
87236 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89150 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87237 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },89151 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
87238 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },89152 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
87239 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },89153 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89154 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87241 } },89155 } },
87242 }, .{89156 }, .{
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,
87243 .required_features = .{ .sse, null, null, null },89191 .required_features = .{ .sse, null, null, null },
87244 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },89192 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
87245 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },89193 .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 {...@@ -87248,10 +89196,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87248 },89196 },
87249 .call_frame = .{ .alignment = .@"16" },89197 .call_frame = .{ .alignment = .@"16" },
87250 .extra_temps = .{89198 .extra_temps = .{
87251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89199 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87252 .{ .type = .f16, .kind = .{ .reg = .ax } },89200 .{ .type = .f16, .kind = .{ .reg = .ax } },
87253 .{ .type = .f32, .kind = .mem },89201 .{ .type = .f32, .kind = .mem },
87254 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },89202 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87255 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },89203 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87256 .unused,89204 .unused,
87257 .unused,89205 .unused,
...@@ -87263,22 +89211,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87263,22 +89211,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87263 .dst_temps = .{ .mem, .unused },89211 .dst_temps = .{ .mem, .unused },
87264 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89212 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87265 .each = .{ .once = &.{89213 .each = .{ .once = &.{
87266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89214 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87267 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },89215 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
87268 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },89216 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
87269 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },89217 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
87270 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },89218 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
87271 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },89219 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
87272 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },89220 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
87273 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },89221 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
87275 } },89257 } },
87276 }, .{89258 }, .{
87277 .required_features = .{ .sse, null, null, null },89259 .required_features = .{ .sse, null, null, null },
87278 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },89260 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
87279 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },89261 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
87280 .patterns = &.{89262 .patterns = &.{
87281 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },89263 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
87282 },89264 },
87283 .call_frame = .{ .alignment = .@"16" },89265 .call_frame = .{ .alignment = .@"16" },
87284 .extra_temps = .{89266 .extra_temps = .{
...@@ -87308,8 +89290,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87308,8 +89290,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87308 },89290 },
87309 .call_frame = .{ .alignment = .@"16" },89291 .call_frame = .{ .alignment = .@"16" },
87310 .extra_temps = .{89292 .extra_temps = .{
87311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89293 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },89294 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87313 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },89295 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87314 .unused,89296 .unused,
87315 .unused,89297 .unused,
...@@ -87323,13 +89305,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87323,13 +89305,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87323 .dst_temps = .{ .mem, .unused },89305 .dst_temps = .{ .mem, .unused },
87324 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89306 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87325 .each = .{ .once = &.{89307 .each = .{ .once = &.{
87326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89308 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87327 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },89309 .{ .@"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) },
87329 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89311 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87330 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89312 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
87331 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },89313 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87332 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89314 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87333 } },89315 } },
87334 }, .{89316 }, .{
87335 .required_features = .{ .sse2, null, null, null },89317 .required_features = .{ .sse2, null, null, null },
...@@ -87340,8 +89322,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87340,8 +89322,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87340 },89322 },
87341 .call_frame = .{ .alignment = .@"16" },89323 .call_frame = .{ .alignment = .@"16" },
87342 .extra_temps = .{89324 .extra_temps = .{
87343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89325 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87344 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },89326 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87345 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },89327 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87346 .unused,89328 .unused,
87347 .unused,89329 .unused,
...@@ -87355,13 +89337,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87355,13 +89337,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87355 .dst_temps = .{ .mem, .unused },89337 .dst_temps = .{ .mem, .unused },
87356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87357 .each = .{ .once = &.{89339 .each = .{ .once = &.{
87358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89340 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87359 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },89341 .{ .@"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), ._ },
87361 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89343 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87362 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89344 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
87363 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },89345 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89346 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87365 } },89347 } },
87366 }, .{89348 }, .{
87367 .required_features = .{ .sse, null, null, null },89349 .required_features = .{ .sse, null, null, null },
...@@ -87372,10 +89354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87372,10 +89354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87372 },89354 },
87373 .call_frame = .{ .alignment = .@"16" },89355 .call_frame = .{ .alignment = .@"16" },
87374 .extra_temps = .{89356 .extra_temps = .{
87375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89357 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87376 .{ .type = .f16, .kind = .{ .reg = .ax } },89358 .{ .type = .f16, .kind = .{ .reg = .ax } },
87377 .{ .type = .f32, .kind = .mem },89359 .{ .type = .f32, .kind = .mem },
87378 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },89360 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87379 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },89361 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87380 .unused,89362 .unused,
87381 .unused,89363 .unused,
...@@ -87387,14 +89369,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87387,14 +89369,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87387 .dst_temps = .{ .mem, .unused },89369 .dst_temps = .{ .mem, .unused },
87388 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87389 .each = .{ .once = &.{89371 .each = .{ .once = &.{
87390 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89372 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
87391 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },89373 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
87392 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },89374 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
87393 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },89375 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
87394 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },89376 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
87395 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },89377 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
87396 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },89378 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87397 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89379 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87398 } },89380 } },
87399 }, .{89381 }, .{
87400 .required_features = .{ .avx, null, null, null },89382 .required_features = .{ .avx, null, null, null },
...@@ -87501,7 +89483,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87501,7 +89483,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87501 .{ .src = .{ .to_mem, .none, .none } },89483 .{ .src = .{ .to_mem, .none, .none } },
87502 },89484 },
87503 .extra_temps = .{89485 .extra_temps = .{
87504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89486 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87505 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },89487 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
87506 .unused,89488 .unused,
87507 .unused,89489 .unused,
...@@ -87516,11 +89498,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87516,11 +89498,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87516 .dst_temps = .{ .mem, .unused },89498 .dst_temps = .{ .mem, .unused },
87517 .clobbers = .{ .eflags = true },89499 .clobbers = .{ .eflags = true },
87518 .each = .{ .once = &.{89500 .each = .{ .once = &.{
87519 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89501 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
87520 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },89502 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
87521 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },89503 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
87522 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },89504 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
87523 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89505 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87524 } },89506 } },
87525 }, .{89507 }, .{
87526 .required_features = .{ .sse2, null, null, null },89508 .required_features = .{ .sse2, null, null, null },
...@@ -87530,7 +89512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87530,7 +89512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87530 .{ .src = .{ .to_mem, .none, .none } },89512 .{ .src = .{ .to_mem, .none, .none } },
87531 },89513 },
87532 .extra_temps = .{89514 .extra_temps = .{
87533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87534 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },89516 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
87535 .unused,89517 .unused,
87536 .unused,89518 .unused,
...@@ -87545,11 +89527,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87545,11 +89527,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87545 .dst_temps = .{ .mem, .unused },89527 .dst_temps = .{ .mem, .unused },
87546 .clobbers = .{ .eflags = true },89528 .clobbers = .{ .eflags = true },
87547 .each = .{ .once = &.{89529 .each = .{ .once = &.{
87548 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89530 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
87549 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },89531 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
87550 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89532 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
87551 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },89533 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87552 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89534 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87553 } },89535 } },
87554 }, .{89536 }, .{
87555 .required_features = .{ .x87, null, null, null },89537 .required_features = .{ .x87, null, null, null },
...@@ -87559,7 +89541,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87559,7 +89541,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87559 .{ .src = .{ .to_mem, .none, .none } },89541 .{ .src = .{ .to_mem, .none, .none } },
87560 },89542 },
87561 .extra_temps = .{89543 .extra_temps = .{
87562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89544 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87563 .{ .type = .f32, .kind = .{ .reg = .st7 } },89545 .{ .type = .f32, .kind = .{ .reg = .st7 } },
87564 .unused,89546 .unused,
87565 .unused,89547 .unused,
...@@ -87574,11 +89556,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87574,11 +89556,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87574 .dst_temps = .{ .mem, .unused },89556 .dst_temps = .{ .mem, .unused },
87575 .clobbers = .{ .eflags = true },89557 .clobbers = .{ .eflags = true },
87576 .each = .{ .once = &.{89558 .each = .{ .once = &.{
87577 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89559 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
87578 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },89560 .{ .@"0:", .f_, .ld, .memi(.src0d, .tmp0), ._, ._, ._ },
87579 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },89561 .{ ._, .f_p, .st, .memsi(.dst0q, .@"2", .tmp0), ._, ._, ._ },
87580 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },89562 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87581 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89563 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87582 } },89564 } },
87583 }, .{89565 }, .{
87584 .required_features = .{ .x87, null, null, null },89566 .required_features = .{ .x87, null, null, null },
...@@ -87613,7 +89595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87613,7 +89595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87613 .{ .src = .{ .to_mem, .none, .none } },89595 .{ .src = .{ .to_mem, .none, .none } },
87614 },89596 },
87615 .extra_temps = .{89597 .extra_temps = .{
87616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89598 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87617 .{ .type = .f32, .kind = .{ .reg = .st7 } },89599 .{ .type = .f32, .kind = .{ .reg = .st7 } },
87618 .unused,89600 .unused,
87619 .unused,89601 .unused,
...@@ -87628,18 +89610,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87628,18 +89610,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87628 .dst_temps = .{ .mem, .unused },89610 .dst_temps = .{ .mem, .unused },
87629 .clobbers = .{ .eflags = true },89611 .clobbers = .{ .eflags = true },
87630 .each = .{ .once = &.{89612 .each = .{ .once = &.{
87631 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89613 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
87632 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },89614 .{ .@"0:", .f_, .ld, .memi(.src0d, .tmp0), ._, ._, ._ },
87633 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },89615 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
87634 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },89616 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87635 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89617 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87636 } },89618 } },
87637 }, .{89619 }, .{
87638 .required_features = .{ .sse, null, null, null },89620 .required_features = .{ .sse, null, null, null },
87639 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },89621 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
87640 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },89622 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
87641 .patterns = &.{89623 .patterns = &.{
87642 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },89624 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
87643 },89625 },
87644 .call_frame = .{ .alignment = .@"16" },89626 .call_frame = .{ .alignment = .@"16" },
87645 .extra_temps = .{89627 .extra_temps = .{
...@@ -87669,8 +89651,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87669,8 +89651,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87669 },89651 },
87670 .call_frame = .{ .alignment = .@"16" },89652 .call_frame = .{ .alignment = .@"16" },
87671 .extra_temps = .{89653 .extra_temps = .{
87672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89654 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87673 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },89655 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87674 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },89656 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87675 .unused,89657 .unused,
87676 .unused,89658 .unused,
...@@ -87684,12 +89666,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87684,12 +89666,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87684 .dst_temps = .{ .mem, .unused },89666 .dst_temps = .{ .mem, .unused },
87685 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87686 .each = .{ .once = &.{89668 .each = .{ .once = &.{
87687 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89669 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
87688 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },89670 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
87689 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87690 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89672 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
87691 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },89673 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87692 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89674 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87693 } },89675 } },
87694 }, .{89676 }, .{
87695 .required_features = .{ .sse2, null, null, null },89677 .required_features = .{ .sse2, null, null, null },
...@@ -87700,8 +89682,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87700,8 +89682,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87700 },89682 },
87701 .call_frame = .{ .alignment = .@"16" },89683 .call_frame = .{ .alignment = .@"16" },
87702 .extra_temps = .{89684 .extra_temps = .{
87703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87704 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },89686 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87705 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },89687 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87706 .unused,89688 .unused,
87707 .unused,89689 .unused,
...@@ -87715,12 +89697,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87715,12 +89697,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87715 .dst_temps = .{ .mem, .unused },89697 .dst_temps = .{ .mem, .unused },
87716 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87717 .each = .{ .once = &.{89699 .each = .{ .once = &.{
87718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89700 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
87719 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },89701 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
87720 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89702 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87721 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89703 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
87722 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },89704 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89705 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87724 } },89706 } },
87725 }, .{89707 }, .{
87726 .required_features = .{ .sse, null, null, null },89708 .required_features = .{ .sse, null, null, null },
...@@ -87731,8 +89713,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87731,8 +89713,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87731 },89713 },
87732 .call_frame = .{ .alignment = .@"16" },89714 .call_frame = .{ .alignment = .@"16" },
87733 .extra_temps = .{89715 .extra_temps = .{
87734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89716 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87735 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },89717 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87736 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },89718 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87737 .unused,89719 .unused,
87738 .unused,89720 .unused,
...@@ -87746,12 +89728,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87746,12 +89728,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87746 .dst_temps = .{ .mem, .unused },89728 .dst_temps = .{ .mem, .unused },
87747 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87748 .each = .{ .once = &.{89730 .each = .{ .once = &.{
87749 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89731 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
87750 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },89732 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
87751 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89733 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87752 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89734 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
87753 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },89735 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89736 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87755 } },89737 } },
87756 }, .{89738 }, .{
87757 .required_features = .{ .x87, null, null, null },89739 .required_features = .{ .x87, null, null, null },
...@@ -87786,7 +89768,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87786,7 +89768,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87786 .{ .src = .{ .to_mem, .none, .none } },89768 .{ .src = .{ .to_mem, .none, .none } },
87787 },89769 },
87788 .extra_temps = .{89770 .extra_temps = .{
87789 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89771 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87790 .{ .type = .f64, .kind = .{ .reg = .st7 } },89772 .{ .type = .f64, .kind = .{ .reg = .st7 } },
87791 .unused,89773 .unused,
87792 .unused,89774 .unused,
...@@ -87801,18 +89783,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87801,18 +89783,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87801 .dst_temps = .{ .mem, .unused },89783 .dst_temps = .{ .mem, .unused },
87802 .clobbers = .{ .eflags = true },89784 .clobbers = .{ .eflags = true },
87803 .each = .{ .once = &.{89785 .each = .{ .once = &.{
87804 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89786 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
87805 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },89787 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
87806 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },89788 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
87807 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },89789 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89790 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87809 } },89791 } },
87810 }, .{89792 }, .{
87811 .required_features = .{ .sse, null, null, null },89793 .required_features = .{ .sse, null, null, null },
87812 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },89794 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
87813 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },89795 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
87814 .patterns = &.{89796 .patterns = &.{
87815 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },89797 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
87816 },89798 },
87817 .call_frame = .{ .alignment = .@"16" },89799 .call_frame = .{ .alignment = .@"16" },
87818 .extra_temps = .{89800 .extra_temps = .{
...@@ -87842,8 +89824,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87842,8 +89824,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87842 },89824 },
87843 .call_frame = .{ .alignment = .@"16" },89825 .call_frame = .{ .alignment = .@"16" },
87844 .extra_temps = .{89826 .extra_temps = .{
87845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89827 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87846 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },89828 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87847 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },89829 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87848 .unused,89830 .unused,
87849 .unused,89831 .unused,
...@@ -87857,12 +89839,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87857,12 +89839,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87857 .dst_temps = .{ .mem, .unused },89839 .dst_temps = .{ .mem, .unused },
87858 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89840 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87859 .each = .{ .once = &.{89841 .each = .{ .once = &.{
87860 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89842 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
87861 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },89843 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
87862 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89844 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87863 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89845 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
87864 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },89846 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87865 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89847 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87866 } },89848 } },
87867 }, .{89849 }, .{
87868 .required_features = .{ .sse2, null, null, null },89850 .required_features = .{ .sse2, null, null, null },
...@@ -87873,8 +89855,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87873,8 +89855,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87873 },89855 },
87874 .call_frame = .{ .alignment = .@"16" },89856 .call_frame = .{ .alignment = .@"16" },
87875 .extra_temps = .{89857 .extra_temps = .{
87876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89858 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87877 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },89859 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87878 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },89860 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87879 .unused,89861 .unused,
87880 .unused,89862 .unused,
...@@ -87888,12 +89870,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87888,12 +89870,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87888 .dst_temps = .{ .mem, .unused },89870 .dst_temps = .{ .mem, .unused },
87889 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89871 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87890 .each = .{ .once = &.{89872 .each = .{ .once = &.{
87891 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89873 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
87892 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },89874 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
87893 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89875 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87894 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89876 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
87895 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },89877 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87896 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89878 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87897 } },89879 } },
87898 }, .{89880 }, .{
87899 .required_features = .{ .sse, null, null, null },89881 .required_features = .{ .sse, null, null, null },
...@@ -87904,8 +89886,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87904,8 +89886,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87904 },89886 },
87905 .call_frame = .{ .alignment = .@"16" },89887 .call_frame = .{ .alignment = .@"16" },
87906 .extra_temps = .{89888 .extra_temps = .{
87907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },89889 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87908 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },89890 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87909 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },89891 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87910 .unused,89892 .unused,
87911 .unused,89893 .unused,
...@@ -87919,15 +89901,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87919,15 +89901,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87919 .dst_temps = .{ .mem, .unused },89901 .dst_temps = .{ .mem, .unused },
87920 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87921 .each = .{ .once = &.{89903 .each = .{ .once = &.{
87922 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89904 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
87923 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },89905 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
87924 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },89906 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
87925 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },89907 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87926 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },89908 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
87927 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },89909 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },89910 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87929 } },89911 } },
87930 }, .{89912 }, .{
89913 .required_cc_abi = .sysv64,
87931 .required_features = .{ .avx, null, null, null },89914 .required_features = .{ .avx, null, null, null },
87932 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },89915 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87933 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },89916 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
...@@ -87948,7 +89931,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87948,7 +89931,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87948 .unused,89931 .unused,
87949 .unused,89932 .unused,
87950 },89933 },
87951 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },89934 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
87952 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89935 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87953 .each = .{ .once = &.{89936 .each = .{ .once = &.{
87954 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },89937 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
...@@ -87956,6 +89939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87956,6 +89939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87956 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },89939 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
87957 } },89940 } },
87958 }, .{89941 }, .{
89942 .required_cc_abi = .sysv64,
87959 .required_features = .{ .sse2, null, null, null },89943 .required_features = .{ .sse2, null, null, null },
87960 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },89944 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87961 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },89945 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
...@@ -87976,7 +89960,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87976,7 +89960,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87976 .unused,89960 .unused,
87977 .unused,89961 .unused,
87978 },89962 },
87979 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },89963 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
87980 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87981 .each = .{ .once = &.{89965 .each = .{ .once = &.{
87982 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },89966 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
...@@ -87984,6 +89968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87984,6 +89968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87984 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },89968 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
87985 } },89969 } },
87986 }, .{89970 }, .{
89971 .required_cc_abi = .sysv64,
87987 .required_features = .{ .sse, null, null, null },89972 .required_features = .{ .sse, null, null, null },
87988 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },89973 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87989 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },89974 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
...@@ -88004,7 +89989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88004,7 +89989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88004 .unused,89989 .unused,
88005 .unused,89990 .unused,
88006 },89991 },
88007 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },89992 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
88008 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },89993 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88009 .each = .{ .once = &.{89994 .each = .{ .once = &.{
88010 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },89995 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
...@@ -88012,6 +89997,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88012,6 +89997,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88012 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },89997 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
88013 } },89998 } },
88014 }, .{89999 }, .{
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,
88015 .required_features = .{ .avx, null, null, null },90029 .required_features = .{ .avx, null, null, null },
88016 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },90030 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
88017 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },90031 .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 {...@@ -88020,8 +90034,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88020 },90034 },
88021 .call_frame = .{ .size = 16, .alignment = .@"16" },90035 .call_frame = .{ .size = 16, .alignment = .@"16" },
88022 .extra_temps = .{90036 .extra_temps = .{
88023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },90037 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88024 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },90038 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88025 .{ .type = .f80, .kind = .{ .frame = .call_frame } },90039 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88026 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },90040 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88027 .unused,90041 .unused,
...@@ -88035,15 +90049,80 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88035,15 +90049,80 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88035 .dst_temps = .{ .mem, .unused },90049 .dst_temps = .{ .mem, .unused },
88036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },90050 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88037 .each = .{ .once = &.{90051 .each = .{ .once = &.{
88038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },90052 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
88039 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },90053 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
88040 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },90054 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
88041 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },90055 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88042 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },90056 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
88043 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },90057 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
88045 } },90123 } },
88046 }, .{90124 }, .{
90125 .required_cc_abi = .sysv64,
88047 .required_features = .{ .sse2, null, null, null },90126 .required_features = .{ .sse2, null, null, null },
88048 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },90127 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
88049 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },90128 .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 {...@@ -88052,8 +90131,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88052 },90131 },
88053 .call_frame = .{ .size = 16, .alignment = .@"16" },90132 .call_frame = .{ .size = 16, .alignment = .@"16" },
88054 .extra_temps = .{90133 .extra_temps = .{
88055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },90134 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88056 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },90135 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88057 .{ .type = .f80, .kind = .{ .frame = .call_frame } },90136 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88058 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },90137 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88059 .unused,90138 .unused,
...@@ -88067,15 +90146,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88067,15 +90146,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88067 .dst_temps = .{ .mem, .unused },90146 .dst_temps = .{ .mem, .unused },
88068 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },90147 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88069 .each = .{ .once = &.{90148 .each = .{ .once = &.{
88070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },90149 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
88071 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },90150 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
88072 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },90151 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
88073 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },90152 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88074 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },90153 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
88075 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },90154 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },90155 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
88077 } },90156 } },
88078 }, .{90157 }, .{
90158 .required_cc_abi = .sysv64,
88079 .required_features = .{ .sse, null, null, null },90159 .required_features = .{ .sse, null, null, null },
88080 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },90160 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
88081 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },90161 .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 {...@@ -88084,8 +90164,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88084 },90164 },
88085 .call_frame = .{ .size = 16, .alignment = .@"16" },90165 .call_frame = .{ .size = 16, .alignment = .@"16" },
88086 .extra_temps = .{90166 .extra_temps = .{
88087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },90167 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88088 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },90168 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88089 .{ .type = .f80, .kind = .{ .frame = .call_frame } },90169 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88090 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },90170 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88091 .unused,90171 .unused,
...@@ -88099,13 +90179,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88099,13 +90179,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88099 .dst_temps = .{ .mem, .unused },90179 .dst_temps = .{ .mem, .unused },
88100 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },90180 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88101 .each = .{ .once = &.{90181 .each = .{ .once = &.{
88102 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },90182 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
88103 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },90183 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
88104 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },90184 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
88105 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },90185 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88106 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },90186 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
88107 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },90187 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
88109 } },90221 } },
88110 } }) catch |err| switch (err) {90222 } }) catch |err| switch (err) {
88111 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{90223 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
...@@ -88118,7 +90230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88118,7 +90230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88118 };90230 };
88119 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);90231 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
88120 },90232 },
88121 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {90233 .intcast => |air_tag| {
88122 const ty_op = air_datas[@intFromEnum(inst)].ty_op;90234 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
88123 const dst_ty = ty_op.ty.toType();90235 const dst_ty = ty_op.ty.toType();
88124 const src_ty = cg.typeOf(ty_op.operand);90236 const src_ty = cg.typeOf(ty_op.operand);
...@@ -92797,7 +94909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92797,7 +94909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92797 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);94909 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
92798 },94910 },
92799 .intcast_safe => unreachable,94911 .intcast_safe => unreachable,
92800 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {94912 .trunc => |air_tag| {
92801 const ty_op = air_datas[@intFromEnum(inst)].ty_op;94913 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
92802 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});94914 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
92803 var res: [1]Temp = undefined;94915 var res: [1]Temp = undefined;
...@@ -98462,7 +100574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98462,7 +100574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98462 };100574 };
98463 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);100575 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98464 },100576 },
98465 .optional_payload => if (use_old) try cg.airOptionalPayload(inst) else {100577 .optional_payload => {
98466 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100578 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98467 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100579 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98468 const pl = if (!hack_around_sema_opv_bugs or ty_op.ty.toType().hasRuntimeBitsIgnoreComptime(zcu))100580 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 {...@@ -98471,12 +100583,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98471 try cg.tempInit(ty_op.ty.toType(), .none);100583 try cg.tempInit(ty_op.ty.toType(), .none);
98472 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);100584 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
98473 },100585 },
98474 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {100586 .optional_payload_ptr => {
98475 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100587 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98476 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100588 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98477 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100589 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98478 },100590 },
98479 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {100591 .optional_payload_ptr_set => {
98480 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100592 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98481 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);100593 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
98482 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100594 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
...@@ -98491,7 +100603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98491,7 +100603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98491 }100603 }
98492 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100604 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98493 },100605 },
98494 .wrap_optional => if (use_old) try cg.airWrapOptional(inst) else {100606 .wrap_optional => {
98495 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100607 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98496 const opt_ty = ty_op.ty.toType();100608 const opt_ty = ty_op.ty.toType();
98497 const opt_pl_ty = cg.typeOf(ty_op.operand);100609 const opt_pl_ty = cg.typeOf(ty_op.operand);
...@@ -98506,7 +100618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98506,7 +100618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98506 }100618 }
98507 try opt.finish(inst, &.{ty_op.operand}, &ops, cg);100619 try opt.finish(inst, &.{ty_op.operand}, &ops, cg);
98508 },100620 },
98509 .unwrap_errunion_payload => if (use_old) try cg.airUnwrapErrUnionPayload(inst) else {100621 .unwrap_errunion_payload => {
98510 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100622 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98511 const eu_pl_ty = ty_op.ty.toType();100623 const eu_pl_ty = ty_op.ty.toType();
98512 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));100624 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 {...@@ -98517,7 +100629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98517 try cg.tempInit(eu_pl_ty, .none);100629 try cg.tempInit(eu_pl_ty, .none);
98518 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);100630 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
98519 },100631 },
98520 .unwrap_errunion_err => if (use_old) try cg.airUnwrapErrUnionErr(inst) else {100632 .unwrap_errunion_err => {
98521 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100633 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98522 const eu_ty = cg.typeOf(ty_op.operand);100634 const eu_ty = cg.typeOf(ty_op.operand);
98523 const eu_err_ty = ty_op.ty.toType();100635 const eu_err_ty = ty_op.ty.toType();
...@@ -98527,7 +100639,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98527,7 +100639,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98527 const err = try ops[0].read(eu_err_ty, .{ .disp = eu_err_off }, cg);100639 const err = try ops[0].read(eu_err_ty, .{ .disp = eu_err_off }, cg);
98528 try err.finish(inst, &.{ty_op.operand}, &ops, cg);100640 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
98529 },100641 },
98530 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {100642 .unwrap_errunion_payload_ptr => {
98531 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100643 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98532 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);100644 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
98533 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);100645 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
...@@ -98536,7 +100648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98536,7 +100648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98536 try ops[0].toOffset(eu_pl_off, cg);100648 try ops[0].toOffset(eu_pl_off, cg);
98537 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100649 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98538 },100650 },
98539 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {100651 .unwrap_errunion_err_ptr => {
98540 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100652 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98541 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);100653 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
98542 const eu_err_ty = ty_op.ty.toType();100654 const eu_err_ty = ty_op.ty.toType();
...@@ -98547,7 +100659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98547,7 +100659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98547 const err = try ops[0].load(eu_err_ty, .{}, cg);100659 const err = try ops[0].load(eu_err_ty, .{}, cg);
98548 try err.finish(inst, &.{ty_op.operand}, &ops, cg);100660 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
98549 },100661 },
98550 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {100662 .errunion_payload_ptr_set => {
98551 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100663 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98552 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);100664 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
98553 const eu_err_ty = eu_ty.errorUnionSet(zcu);100665 const eu_err_ty = eu_ty.errorUnionSet(zcu);
...@@ -98562,7 +100674,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98562,7 +100674,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98562 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);100674 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
98563 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100675 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98564 },100676 },
98565 .wrap_errunion_payload => if (use_old) try cg.airWrapErrUnionPayload(inst) else {100677 .wrap_errunion_payload => {
98566 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100678 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98567 const eu_ty = ty_op.ty.toType();100679 const eu_ty = ty_op.ty.toType();
98568 const eu_err_ty = eu_ty.errorUnionSet(zcu);100680 const eu_err_ty = eu_ty.errorUnionSet(zcu);
...@@ -98577,7 +100689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98577,7 +100689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98577 try err.die(cg);100689 try err.die(cg);
98578 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);100690 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
98579 },100691 },
98580 .wrap_errunion_err => if (use_old) try cg.airWrapErrUnionErr(inst) else {100692 .wrap_errunion_err => {
98581 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100693 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98582 const eu_ty = ty_op.ty.toType();100694 const eu_ty = ty_op.ty.toType();
98583 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);100695 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
...@@ -98587,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98587,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98587 try eu.write(&ops[0], .{ .disp = eu_err_off }, cg);100699 try eu.write(&ops[0], .{ .disp = eu_err_off }, cg);
98588 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);100700 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
98589 },100701 },
98590 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {100702 .struct_field_ptr => {
98591 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;100703 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98592 const struct_field = cg.air.extraData(Air.StructField, ty_pl.payload).data;100704 const struct_field = cg.air.extraData(Air.StructField, ty_pl.payload).data;
98593 var ops = try cg.tempsFromOperands(inst, .{struct_field.struct_operand});100705 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 {...@@ -98602,13 +100714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98602 .struct_field_ptr_index_1,100714 .struct_field_ptr_index_1,
98603 .struct_field_ptr_index_2,100715 .struct_field_ptr_index_2,
98604 .struct_field_ptr_index_3,100716 .struct_field_ptr_index_3,
98605 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {100717 => |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 {
98612 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100718 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98613 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100719 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98614 try ops[0].toOffset(cg.fieldOffset(100720 try ops[0].toOffset(cg.fieldOffset(
...@@ -98624,14 +100730,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98624,14 +100730,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98624 ), cg);100730 ), cg);
98625 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100731 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98626 },100732 },
98627 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {100733 .struct_field_val => {
98628 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;100734 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98629 const struct_field = cg.air.extraData(Air.StructField, ty_pl.payload).data;100735 const struct_field = cg.air.extraData(Air.StructField, ty_pl.payload).data;
98630 const agg_ty = cg.typeOf(struct_field.struct_operand);100736 const agg_ty = cg.typeOf(struct_field.struct_operand);
98631 const field_ty = ty_pl.ty.toType();100737 const field_ty = ty_pl.ty.toType();
98632 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {100738 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
98633 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(struct_field.field_index, zcu)),100739 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(struct_field.field_index, zcu)),
98634 .@"packed" => break :fallback try cg.airStructFieldVal(inst),100740 .@"packed" => unreachable,
98635 };100741 };
98636 var ops = try cg.tempsFromOperands(inst, .{struct_field.struct_operand});100742 var ops = try cg.tempsFromOperands(inst, .{struct_field.struct_operand});
98637 var res = if (!hack_around_sema_opv_bugs or field_ty.hasRuntimeBitsIgnoreComptime(zcu))100743 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 {...@@ -98640,7 +100746,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98640 try cg.tempInit(field_ty, .none);100746 try cg.tempInit(field_ty, .none);
98641 try res.finish(inst, &.{struct_field.struct_operand}, &ops, cg);100747 try res.finish(inst, &.{struct_field.struct_operand}, &ops, cg);
98642 },100748 },
98643 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {100749 .set_union_tag => {
98644 const bin_op = air_datas[@intFromEnum(inst)].bin_op;100750 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98645 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);100751 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
98646 const union_layout = union_ty.unionGetLayout(zcu);100752 const union_layout = union_ty.unionGetLayout(zcu);
...@@ -98651,7 +100757,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98651,7 +100757,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98651 const res = try cg.tempInit(.void, .none);100757 const res = try cg.tempInit(.void, .none);
98652 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);100758 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98653 },100759 },
98654 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {100760 .get_union_tag => {
98655 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100761 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98656 const union_ty = cg.typeOf(ty_op.operand);100762 const union_ty = cg.typeOf(ty_op.operand);
98657 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100763 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
...@@ -98662,38 +100768,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98662,38 +100768,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98662 }, cg);100768 }, cg);
98663 try res.finish(inst, &.{ty_op.operand}, &ops, cg);100769 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
98664 },100770 },
98665 .slice => if (use_old) try cg.airSlice(inst) else {100771 .slice => {
98666 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;100772 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98667 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;100773 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
98668 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });100774 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98669 try ops[0].toPair(&ops[1], cg);100775 try ops[0].toPair(&ops[1], cg);
98670 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);100776 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98671 },100777 },
98672 .slice_len => if (use_old) try cg.airSliceLen(inst) else {100778 .slice_len => {
98673 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100779 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98674 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100780 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98675 try ops[0].toSliceLen(cg);100781 try ops[0].toSliceLen(cg);
98676 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100782 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98677 },100783 },
98678 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {100784 .slice_ptr => {
98679 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100785 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98680 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100786 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98681 try ops[0].toSlicePtr(cg);100787 try ops[0].toSlicePtr(cg);
98682 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100788 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98683 },100789 },
98684 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {100790 .ptr_slice_len_ptr => {
98685 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100791 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98686 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100792 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98687 try ops[0].toOffset(8, cg);100793 try ops[0].toOffset(8, cg);
98688 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100794 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98689 },100795 },
98690 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {100796 .ptr_slice_ptr_ptr => {
98691 const ty_op = air_datas[@intFromEnum(inst)].ty_op;100797 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98692 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});100798 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98693 try ops[0].toOffset(0, cg);100799 try ops[0].toOffset(0, cg);
98694 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);100800 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98695 },100801 },
98696 .array_elem_val => if (use_old) try cg.airArrayElemVal(inst) else {100802 .array_elem_val => {
98697 const bin_op = air_datas[@intFromEnum(inst)].bin_op;100803 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98698 const array_ty = cg.typeOf(bin_op.lhs);100804 const array_ty = cg.typeOf(bin_op.lhs);
98699 const res_ty = array_ty.elemType2(zcu);100805 const res_ty = array_ty.elemType2(zcu);
...@@ -98889,11 +100995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98889,11 +100995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98889 };100995 };
98890 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);100996 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98891 },100997 },
98892 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {100998 .slice_elem_val, .ptr_elem_val => {
98893 else => unreachable,
98894 .slice_elem_val => try cg.airSliceElemVal(inst),
98895 .ptr_elem_val => try cg.airPtrElemVal(inst),
98896 } else {
98897 const bin_op = air_datas[@intFromEnum(inst)].bin_op;100999 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98898 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);101000 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
98899 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });101001 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 {...@@ -99016,11 +101118,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99016 } else res[0] = try cg.tempInit(res_ty, .none);101118 } else res[0] = try cg.tempInit(res_ty, .none);
99017 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);101119 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
99018 },101120 },
99019 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {101121 .slice_elem_ptr, .ptr_elem_ptr => {
99020 else => unreachable,
99021 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
99022 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
99023 } else {
99024 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;101122 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
99025 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;101123 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
99026 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });101124 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 {...@@ -99067,7 +101165,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99067 }101165 }
99068 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);101166 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
99069 },101167 },
99070 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {101168 .array_to_slice => {
99071 const ty_op = air_datas[@intFromEnum(inst)].ty_op;101169 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
99072 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});101170 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
99073 var len = try cg.tempInit(.usize, .{101171 var len = try cg.tempInit(.usize, .{
...@@ -99076,7 +101174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99076,7 +101174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99076 try ops[0].toPair(&len, cg);101174 try ops[0].toPair(&len, cg);
99077 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);101175 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
99078 },101176 },
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| {
99080 const ty_op = air_datas[@intFromEnum(inst)].ty_op;101178 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
99081 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});101179 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
99082 var res: [1]Temp = undefined;101180 var res: [1]Temp = undefined;
...@@ -99278,7 +101376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99278,7 +101376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99278 .src_constraints = .{ .{ .float = .word }, .any, .any },101376 .src_constraints = .{ .{ .float = .word }, .any, .any },
99279 .dst_constraints = .{ .{ .signed_int = .dword }, .any },101377 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
99280 .patterns = &.{101378 .patterns = &.{
99281 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101379 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99282 },101380 },
99283 .call_frame = .{ .alignment = .@"16" },101381 .call_frame = .{ .alignment = .@"16" },
99284 .extra_temps = .{101382 .extra_temps = .{
...@@ -99294,7 +101392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99294,7 +101392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99294 .unused,101392 .unused,
99295 .unused,101393 .unused,
99296 },101394 },
99297 .dst_temps = .{ .{ .reg = .eax }, .unused },101395 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99298 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101396 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99299 .each = .{ .once = &.{101397 .each = .{ .once = &.{
99300 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },101398 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -99304,7 +101402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99304,7 +101402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99304 .src_constraints = .{ .{ .float = .word }, .any, .any },101402 .src_constraints = .{ .{ .float = .word }, .any, .any },
99305 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },101403 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
99306 .patterns = &.{101404 .patterns = &.{
99307 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101405 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99308 },101406 },
99309 .call_frame = .{ .alignment = .@"16" },101407 .call_frame = .{ .alignment = .@"16" },
99310 .extra_temps = .{101408 .extra_temps = .{
...@@ -99320,7 +101418,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99320,7 +101418,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99320 .unused,101418 .unused,
99321 .unused,101419 .unused,
99322 },101420 },
99323 .dst_temps = .{ .{ .reg = .eax }, .unused },101421 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99324 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101422 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99325 .each = .{ .once = &.{101423 .each = .{ .once = &.{
99326 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },101424 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -99330,7 +101428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99330,7 +101428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99330 .src_constraints = .{ .{ .float = .word }, .any, .any },101428 .src_constraints = .{ .{ .float = .word }, .any, .any },
99331 .dst_constraints = .{ .{ .signed_int = .qword }, .any },101429 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
99332 .patterns = &.{101430 .patterns = &.{
99333 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101431 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99334 },101432 },
99335 .call_frame = .{ .alignment = .@"16" },101433 .call_frame = .{ .alignment = .@"16" },
99336 .extra_temps = .{101434 .extra_temps = .{
...@@ -99346,7 +101444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99346,7 +101444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99346 .unused,101444 .unused,
99347 .unused,101445 .unused,
99348 },101446 },
99349 .dst_temps = .{ .{ .reg = .rax }, .unused },101447 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99350 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101448 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99351 .each = .{ .once = &.{101449 .each = .{ .once = &.{
99352 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },101450 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -99356,7 +101454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99356,7 +101454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99356 .src_constraints = .{ .{ .float = .word }, .any, .any },101454 .src_constraints = .{ .{ .float = .word }, .any, .any },
99357 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },101455 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
99358 .patterns = &.{101456 .patterns = &.{
99359 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101457 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99360 },101458 },
99361 .call_frame = .{ .alignment = .@"16" },101459 .call_frame = .{ .alignment = .@"16" },
99362 .extra_temps = .{101460 .extra_temps = .{
...@@ -99372,17 +101470,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99372,17 +101470,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99372 .unused,101470 .unused,
99373 .unused,101471 .unused,
99374 },101472 },
99375 .dst_temps = .{ .{ .reg = .rax }, .unused },101473 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99376 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101474 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99377 .each = .{ .once = &.{101475 .each = .{ .once = &.{
99378 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },101476 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
99379 } },101477 } },
99380 }, .{101478 }, .{
99381 .required_features = .{ .@"64bit", .sse, null, null },101479 .required_cc_abi = .sysv64,
101480 .required_features = .{ .sse, null, null, null },
99382 .src_constraints = .{ .{ .float = .word }, .any, .any },101481 .src_constraints = .{ .{ .float = .word }, .any, .any },
99383 .dst_constraints = .{ .{ .signed_int = .xword }, .any },101482 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
99384 .patterns = &.{101483 .patterns = &.{
99385 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101484 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99386 },101485 },
99387 .call_frame = .{ .alignment = .@"16" },101486 .call_frame = .{ .alignment = .@"16" },
99388 .extra_temps = .{101487 .extra_temps = .{
...@@ -99398,17 +101497,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99398,17 +101497,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99398 .unused,101497 .unused,
99399 .unused,101498 .unused,
99400 },101499 },
99401 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },101500 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99402 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99403 .each = .{ .once = &.{101502 .each = .{ .once = &.{
99404 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },101503 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
99405 } },101504 } },
99406 }, .{101505 }, .{
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 },
99408 .src_constraints = .{ .{ .float = .word }, .any, .any },101562 .src_constraints = .{ .{ .float = .word }, .any, .any },
99409 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },101563 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
99410 .patterns = &.{101564 .patterns = &.{
99411 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101565 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99412 },101566 },
99413 .call_frame = .{ .alignment = .@"16" },101567 .call_frame = .{ .alignment = .@"16" },
99414 .extra_temps = .{101568 .extra_temps = .{
...@@ -99424,7 +101578,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99424,7 +101578,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99424 .unused,101578 .unused,
99425 .unused,101579 .unused,
99426 },101580 },
99427 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },101581 .dst_temps = .{ .{ .ref = .src0 }, .unused },
99428 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99429 .each = .{ .once = &.{101583 .each = .{ .once = &.{
99430 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },101584 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -99434,7 +101588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99434,7 +101588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99434 .src_constraints = .{ .{ .float = .word }, .any, .any },101588 .src_constraints = .{ .{ .float = .word }, .any, .any },
99435 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },101589 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99436 .patterns = &.{101590 .patterns = &.{
99437 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101591 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99438 },101592 },
99439 .call_frame = .{ .alignment = .@"16" },101593 .call_frame = .{ .alignment = .@"16" },
99440 .extra_temps = .{101594 .extra_temps = .{
...@@ -99465,7 +101619,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99465,7 +101619,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99465 .src_constraints = .{ .{ .float = .word }, .any, .any },101619 .src_constraints = .{ .{ .float = .word }, .any, .any },
99466 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },101620 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99467 .patterns = &.{101621 .patterns = &.{
99468 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101622 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99469 },101623 },
99470 .call_frame = .{ .alignment = .@"16" },101624 .call_frame = .{ .alignment = .@"16" },
99471 .extra_temps = .{101625 .extra_temps = .{
...@@ -99527,7 +101681,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99527,7 +101681,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99527 .{ .src = .{ .to_mem, .none, .none } },101681 .{ .src = .{ .to_mem, .none, .none } },
99528 },101682 },
99529 .extra_temps = .{101683 .extra_temps = .{
99530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101684 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99531 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },101685 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
99532 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },101686 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
99533 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },101687 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -99544,13 +101698,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99544,13 +101698,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99544 .each = .{ .once = &.{101698 .each = .{ .once = &.{
99545 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },101699 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
99546 .{ ._, .v_ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },101700 .{ ._, .v_ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
99547 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101701 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
99548 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },101702 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
99549 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },101703 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
99550 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },101704 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
99551 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },101705 .{ ._, .v_d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
99552 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },101706 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
99553 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101707 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99554 } },101708 } },
99555 }, .{101709 }, .{
99556 .required_features = .{ .avx, .slow_incdec, null, null },101710 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -99561,10 +101715,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99561,10 +101715,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99561 },101715 },
99562 .call_frame = .{ .alignment = .@"16" },101716 .call_frame = .{ .alignment = .@"16" },
99563 .extra_temps = .{101717 .extra_temps = .{
99564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101719 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99566 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },101720 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99567 .{ .type = .i32, .kind = .{ .reg = .eax } },101721 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99568 .unused,101722 .unused,
99569 .unused,101723 .unused,
99570 .unused,101724 .unused,
...@@ -99576,13 +101730,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99576,13 +101730,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99576 .dst_temps = .{ .mem, .unused },101730 .dst_temps = .{ .mem, .unused },
99577 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99578 .each = .{ .once = &.{101732 .each = .{ .once = &.{
99579 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101733 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99580 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101734 .{ .@"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) },
99582 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101736 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99583 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },101737 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
99584 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },101738 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
99585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101739 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99586 } },101740 } },
99587 }, .{101741 }, .{
99588 .required_features = .{ .avx, null, null, null },101742 .required_features = .{ .avx, null, null, null },
...@@ -99593,10 +101747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99593,10 +101747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99593 },101747 },
99594 .call_frame = .{ .alignment = .@"16" },101748 .call_frame = .{ .alignment = .@"16" },
99595 .extra_temps = .{101749 .extra_temps = .{
99596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99597 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101751 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99598 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },101752 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99599 .{ .type = .i32, .kind = .{ .reg = .eax } },101753 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99600 .unused,101754 .unused,
99601 .unused,101755 .unused,
99602 .unused,101756 .unused,
...@@ -99608,13 +101762,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99608,13 +101762,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99608 .dst_temps = .{ .mem, .unused },101762 .dst_temps = .{ .mem, .unused },
99609 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101763 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99610 .each = .{ .once = &.{101764 .each = .{ .once = &.{
99611 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101765 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99612 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101766 .{ .@"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) },
99614 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101768 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99615 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },101769 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
99616 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },101770 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
99617 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },101771 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
99618 } },101772 } },
99619 }, .{101773 }, .{
99620 .required_features = .{ .sse2, .slow_incdec, null, null },101774 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -99625,10 +101779,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99625,10 +101779,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99625 },101779 },
99626 .call_frame = .{ .alignment = .@"16" },101780 .call_frame = .{ .alignment = .@"16" },
99627 .extra_temps = .{101781 .extra_temps = .{
99628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101783 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99630 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },101784 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99631 .{ .type = .i32, .kind = .{ .reg = .eax } },101785 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99632 .unused,101786 .unused,
99633 .unused,101787 .unused,
99634 .unused,101788 .unused,
...@@ -99640,13 +101794,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99640,13 +101794,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99640 .dst_temps = .{ .mem, .unused },101794 .dst_temps = .{ .mem, .unused },
99641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99642 .each = .{ .once = &.{101796 .each = .{ .once = &.{
99643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101797 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99644 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101798 .{ .@"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), ._ },
99646 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101800 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99647 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },101801 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
99648 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },101802 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
99649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101803 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99650 } },101804 } },
99651 }, .{101805 }, .{
99652 .required_features = .{ .sse2, null, null, null },101806 .required_features = .{ .sse2, null, null, null },
...@@ -99657,10 +101811,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99657,10 +101811,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99657 },101811 },
99658 .call_frame = .{ .alignment = .@"16" },101812 .call_frame = .{ .alignment = .@"16" },
99659 .extra_temps = .{101813 .extra_temps = .{
99660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101815 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99662 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },101816 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99663 .{ .type = .i32, .kind = .{ .reg = .eax } },101817 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99664 .unused,101818 .unused,
99665 .unused,101819 .unused,
99666 .unused,101820 .unused,
...@@ -99672,13 +101826,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99672,13 +101826,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99672 .dst_temps = .{ .mem, .unused },101826 .dst_temps = .{ .mem, .unused },
99673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101827 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99674 .each = .{ .once = &.{101828 .each = .{ .once = &.{
99675 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101829 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99676 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101830 .{ .@"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), ._ },
99678 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101832 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99679 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },101833 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
99680 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },101834 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
99681 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },101835 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
99682 } },101836 } },
99683 }, .{101837 }, .{
99684 .required_features = .{ .sse, .slow_incdec, null, null },101838 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -99689,10 +101843,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99689,10 +101843,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99689 },101843 },
99690 .call_frame = .{ .alignment = .@"16" },101844 .call_frame = .{ .alignment = .@"16" },
99691 .extra_temps = .{101845 .extra_temps = .{
99692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101846 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99693 .{ .type = .i32, .kind = .{ .reg = .eax } },101847 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99694 .{ .type = .f32, .kind = .mem },101848 .{ .type = .f32, .kind = .mem },
99695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101849 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99696 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },101850 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99697 .unused,101851 .unused,
99698 .unused,101852 .unused,
...@@ -99704,14 +101858,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99704,14 +101858,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99704 .dst_temps = .{ .mem, .unused },101858 .dst_temps = .{ .mem, .unused },
99705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101859 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99706 .each = .{ .once = &.{101860 .each = .{ .once = &.{
99707 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101861 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99708 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },101862 .{ .@"0:", ._, .movzx, .tmp1d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
99709 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101863 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99710 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101864 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99711 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101865 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99712 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },101866 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
99713 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },101867 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
99714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101868 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99715 } },101869 } },
99716 }, .{101870 }, .{
99717 .required_features = .{ .sse, null, null, null },101871 .required_features = .{ .sse, null, null, null },
...@@ -99722,10 +101876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99722,10 +101876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99722 },101876 },
99723 .call_frame = .{ .alignment = .@"16" },101877 .call_frame = .{ .alignment = .@"16" },
99724 .extra_temps = .{101878 .extra_temps = .{
99725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101879 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99726 .{ .type = .i32, .kind = .{ .reg = .eax } },101880 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99727 .{ .type = .f32, .kind = .mem },101881 .{ .type = .f32, .kind = .mem },
99728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101882 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99729 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },101883 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99730 .unused,101884 .unused,
99731 .unused,101885 .unused,
...@@ -99737,14 +101891,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99737,14 +101891,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99737 .dst_temps = .{ .mem, .unused },101891 .dst_temps = .{ .mem, .unused },
99738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99739 .each = .{ .once = &.{101893 .each = .{ .once = &.{
99740 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },101894 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99741 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },101895 .{ .@"0:", ._, .movzx, .tmp1d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
99742 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101896 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99743 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101897 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99744 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101898 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99745 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },101899 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
99746 .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ },101900 .{ ._, ._c, .de, .tmp0d, .si(1), ._, ._ },
99747 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },101901 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
99748 } },101902 } },
99749 }, .{101903 }, .{
99750 .required_features = .{ .f16c, null, null, null },101904 .required_features = .{ .f16c, null, null, null },
...@@ -99782,7 +101936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99782,7 +101936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99782 .{ .src = .{ .to_mem, .none, .none } },101936 .{ .src = .{ .to_mem, .none, .none } },
99783 },101937 },
99784 .extra_temps = .{101938 .extra_temps = .{
99785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101939 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99786 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },101940 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
99787 .unused,101941 .unused,
99788 .unused,101942 .unused,
...@@ -99797,13 +101951,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99797,13 +101951,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99797 .dst_temps = .{ .mem, .unused },101951 .dst_temps = .{ .mem, .unused },
99798 .clobbers = .{ .eflags = true },101952 .clobbers = .{ .eflags = true },
99799 .each = .{ .once = &.{101953 .each = .{ .once = &.{
99800 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101954 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
99801 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },101955 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
99802 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },101956 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99803 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },101957 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
99804 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },101958 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
99805 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },101959 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
99806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101960 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99807 } },101961 } },
99808 }, .{101962 }, .{
99809 .required_features = .{ .f16c, null, null, null },101963 .required_features = .{ .f16c, null, null, null },
...@@ -99813,7 +101967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99813,7 +101967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99813 .{ .src = .{ .to_mem, .none, .none } },101967 .{ .src = .{ .to_mem, .none, .none } },
99814 },101968 },
99815 .extra_temps = .{101969 .extra_temps = .{
99816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101970 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99817 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },101971 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
99818 .unused,101972 .unused,
99819 .unused,101973 .unused,
...@@ -99828,13 +101982,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99828,13 +101982,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99828 .dst_temps = .{ .mem, .unused },101982 .dst_temps = .{ .mem, .unused },
99829 .clobbers = .{ .eflags = true },101983 .clobbers = .{ .eflags = true },
99830 .each = .{ .once = &.{101984 .each = .{ .once = &.{
99831 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101985 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
99832 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },101986 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
99833 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },101987 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99834 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },101988 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
99835 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },101989 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
99836 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },101990 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
99837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101991 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99838 } },101992 } },
99839 }, .{101993 }, .{
99840 .required_features = .{ .avx, null, null, null },101994 .required_features = .{ .avx, null, null, null },
...@@ -99845,10 +101999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99845,10 +101999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99845 },101999 },
99846 .call_frame = .{ .alignment = .@"16" },102000 .call_frame = .{ .alignment = .@"16" },
99847 .extra_temps = .{102001 .extra_temps = .{
99848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102002 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99849 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102003 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99850 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },102004 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99851 .{ .type = .i32, .kind = .{ .reg = .eax } },102005 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99852 .unused,102006 .unused,
99853 .unused,102007 .unused,
99854 .unused,102008 .unused,
...@@ -99860,13 +102014,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99860,13 +102014,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99860 .dst_temps = .{ .mem, .unused },102014 .dst_temps = .{ .mem, .unused },
99861 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102015 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99862 .each = .{ .once = &.{102016 .each = .{ .once = &.{
99863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102017 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99864 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102018 .{ .@"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) },
99866 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102020 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99867 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },102021 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
99868 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102022 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
99869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102023 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99870 } },102024 } },
99871 }, .{102025 }, .{
99872 .required_features = .{ .sse2, null, null, null },102026 .required_features = .{ .sse2, null, null, null },
...@@ -99877,10 +102031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99877,10 +102031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99877 },102031 },
99878 .call_frame = .{ .alignment = .@"16" },102032 .call_frame = .{ .alignment = .@"16" },
99879 .extra_temps = .{102033 .extra_temps = .{
99880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102034 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99881 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102035 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99882 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },102036 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99883 .{ .type = .i32, .kind = .{ .reg = .eax } },102037 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99884 .unused,102038 .unused,
99885 .unused,102039 .unused,
99886 .unused,102040 .unused,
...@@ -99892,13 +102046,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99892,13 +102046,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99892 .dst_temps = .{ .mem, .unused },102046 .dst_temps = .{ .mem, .unused },
99893 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99894 .each = .{ .once = &.{102048 .each = .{ .once = &.{
99895 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102049 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99896 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102050 .{ .@"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), ._ },
99898 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99899 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },102053 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
99900 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102054 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
99901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102055 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99902 } },102056 } },
99903 }, .{102057 }, .{
99904 .required_features = .{ .sse, null, null, null },102058 .required_features = .{ .sse, null, null, null },
...@@ -99909,10 +102063,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99909,10 +102063,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99909 },102063 },
99910 .call_frame = .{ .alignment = .@"16" },102064 .call_frame = .{ .alignment = .@"16" },
99911 .extra_temps = .{102065 .extra_temps = .{
99912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99913 .{ .type = .i32, .kind = .{ .reg = .eax } },102067 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99914 .{ .type = .f32, .kind = .mem },102068 .{ .type = .f32, .kind = .mem },
99915 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102069 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99916 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },102070 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99917 .unused,102071 .unused,
99918 .unused,102072 .unused,
...@@ -99924,14 +102078,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99924,14 +102078,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99924 .dst_temps = .{ .mem, .unused },102078 .dst_temps = .{ .mem, .unused },
99925 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102079 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99926 .each = .{ .once = &.{102080 .each = .{ .once = &.{
99927 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102081 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99928 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },102082 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
99929 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102083 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99930 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102084 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99931 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102085 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99932 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },102086 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
99933 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102087 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
99934 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102088 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99935 } },102089 } },
99936 }, .{102090 }, .{
99937 .required_features = .{ .f16c, null, null, null },102091 .required_features = .{ .f16c, null, null, null },
...@@ -99941,7 +102095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99941,7 +102095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99941 .{ .src = .{ .to_mem, .none, .none } },102095 .{ .src = .{ .to_mem, .none, .none } },
99942 },102096 },
99943 .extra_temps = .{102097 .extra_temps = .{
99944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102098 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99945 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },102099 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
99946 .unused,102100 .unused,
99947 .unused,102101 .unused,
...@@ -99956,12 +102110,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99956,12 +102110,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99956 .dst_temps = .{ .mem, .unused },102110 .dst_temps = .{ .mem, .unused },
99957 .clobbers = .{ .eflags = true },102111 .clobbers = .{ .eflags = true },
99958 .each = .{ .once = &.{102112 .each = .{ .once = &.{
99959 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102113 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
99960 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },102114 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
99961 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },102115 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99962 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },102116 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
99963 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },102117 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
99964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102118 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99965 } },102119 } },
99966 }, .{102120 }, .{
99967 .required_features = .{ .f16c, null, null, null },102121 .required_features = .{ .f16c, null, null, null },
...@@ -99971,7 +102125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99971,7 +102125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99971 .{ .src = .{ .to_mem, .none, .none } },102125 .{ .src = .{ .to_mem, .none, .none } },
99972 },102126 },
99973 .extra_temps = .{102127 .extra_temps = .{
99974 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102128 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99975 .{ .type = .f32, .kind = .{ .rc = .sse } },102129 .{ .type = .f32, .kind = .{ .rc = .sse } },
99976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },102130 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99977 .unused,102131 .unused,
...@@ -99986,14 +102140,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99986,14 +102140,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99986 .dst_temps = .{ .mem, .unused },102140 .dst_temps = .{ .mem, .unused },
99987 .clobbers = .{ .eflags = true },102141 .clobbers = .{ .eflags = true },
99988 .each = .{ .once = &.{102142 .each = .{ .once = &.{
99989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102143 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99990 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102144 .{ .@"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) },
99992 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },102146 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
99993 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },102147 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99994 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },102148 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp2d, ._, ._ },
99995 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102149 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
99996 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102150 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99997 } },102151 } },
99998 }, .{102152 }, .{
99999 .required_features = .{ .avx, null, null, null },102153 .required_features = .{ .avx, null, null, null },
...@@ -100004,10 +102158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100004,10 +102158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100004 },102158 },
100005 .call_frame = .{ .alignment = .@"16" },102159 .call_frame = .{ .alignment = .@"16" },
100006 .extra_temps = .{102160 .extra_temps = .{
100007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100008 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102162 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100009 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },102163 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100010 .{ .type = .i32, .kind = .{ .reg = .eax } },102164 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100011 .unused,102165 .unused,
100012 .unused,102166 .unused,
100013 .unused,102167 .unused,
...@@ -100019,13 +102173,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100019,13 +102173,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100019 .dst_temps = .{ .mem, .unused },102173 .dst_temps = .{ .mem, .unused },
100020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100021 .each = .{ .once = &.{102175 .each = .{ .once = &.{
100022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102176 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100023 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102177 .{ .@"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) },
100025 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102179 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100026 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },102180 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
100027 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102181 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102182 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100029 } },102183 } },
100030 }, .{102184 }, .{
100031 .required_features = .{ .avx, null, null, null },102185 .required_features = .{ .avx, null, null, null },
...@@ -100036,10 +102190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100036,10 +102190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100036 },102190 },
100037 .call_frame = .{ .alignment = .@"16" },102191 .call_frame = .{ .alignment = .@"16" },
100038 .extra_temps = .{102192 .extra_temps = .{
100039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100040 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102194 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100041 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },102195 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100042 .{ .type = .u32, .kind = .{ .reg = .eax } },102196 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100043 .unused,102197 .unused,
100044 .unused,102198 .unused,
100045 .unused,102199 .unused,
...@@ -100051,13 +102205,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100051,13 +102205,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100051 .dst_temps = .{ .mem, .unused },102205 .dst_temps = .{ .mem, .unused },
100052 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102206 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100053 .each = .{ .once = &.{102207 .each = .{ .once = &.{
100054 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102208 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100055 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102209 .{ .@"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) },
100057 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102211 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100058 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },102212 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
100059 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102213 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100060 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102214 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100061 } },102215 } },
100062 }, .{102216 }, .{
100063 .required_features = .{ .sse2, null, null, null },102217 .required_features = .{ .sse2, null, null, null },
...@@ -100068,10 +102222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100068,10 +102222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100068 },102222 },
100069 .call_frame = .{ .alignment = .@"16" },102223 .call_frame = .{ .alignment = .@"16" },
100070 .extra_temps = .{102224 .extra_temps = .{
100071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102225 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100072 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102226 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100073 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },102227 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100074 .{ .type = .i32, .kind = .{ .reg = .eax } },102228 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100075 .unused,102229 .unused,
100076 .unused,102230 .unused,
100077 .unused,102231 .unused,
...@@ -100083,13 +102237,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100083,13 +102237,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100083 .dst_temps = .{ .mem, .unused },102237 .dst_temps = .{ .mem, .unused },
100084 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100085 .each = .{ .once = &.{102239 .each = .{ .once = &.{
100086 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102240 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100087 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102241 .{ .@"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), ._ },
100089 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102243 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100090 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },102244 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
100091 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102245 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102246 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100093 } },102247 } },
100094 }, .{102248 }, .{
100095 .required_features = .{ .sse2, null, null, null },102249 .required_features = .{ .sse2, null, null, null },
...@@ -100100,10 +102254,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100100,10 +102254,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100100 },102254 },
100101 .call_frame = .{ .alignment = .@"16" },102255 .call_frame = .{ .alignment = .@"16" },
100102 .extra_temps = .{102256 .extra_temps = .{
100103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102257 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100104 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102258 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100105 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },102259 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100106 .{ .type = .u32, .kind = .{ .reg = .eax } },102260 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100107 .unused,102261 .unused,
100108 .unused,102262 .unused,
100109 .unused,102263 .unused,
...@@ -100115,13 +102269,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100115,13 +102269,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100115 .dst_temps = .{ .mem, .unused },102269 .dst_temps = .{ .mem, .unused },
100116 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100117 .each = .{ .once = &.{102271 .each = .{ .once = &.{
100118 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102272 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100119 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102273 .{ .@"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), ._ },
100121 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102275 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100122 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },102276 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
100123 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102277 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100124 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102278 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100125 } },102279 } },
100126 }, .{102280 }, .{
100127 .required_features = .{ .sse, null, null, null },102281 .required_features = .{ .sse, null, null, null },
...@@ -100132,10 +102286,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100132,10 +102286,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100132 },102286 },
100133 .call_frame = .{ .alignment = .@"16" },102287 .call_frame = .{ .alignment = .@"16" },
100134 .extra_temps = .{102288 .extra_temps = .{
100135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102289 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100136 .{ .type = .i32, .kind = .{ .reg = .eax } },102290 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100137 .{ .type = .f32, .kind = .mem },102291 .{ .type = .f32, .kind = .mem },
100138 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102292 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100139 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },102293 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100140 .unused,102294 .unused,
100141 .unused,102295 .unused,
...@@ -100147,14 +102301,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100147,14 +102301,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100147 .dst_temps = .{ .mem, .unused },102301 .dst_temps = .{ .mem, .unused },
100148 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102302 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100149 .each = .{ .once = &.{102303 .each = .{ .once = &.{
100150 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102304 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100151 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },102305 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100152 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102306 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100153 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102307 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100154 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102308 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100155 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },102309 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1d, ._, ._ },
100156 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102310 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100157 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102311 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100158 } },102312 } },
100159 }, .{102313 }, .{
100160 .required_features = .{ .sse, null, null, null },102314 .required_features = .{ .sse, null, null, null },
...@@ -100165,10 +102319,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100165,10 +102319,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100165 },102319 },
100166 .call_frame = .{ .alignment = .@"16" },102320 .call_frame = .{ .alignment = .@"16" },
100167 .extra_temps = .{102321 .extra_temps = .{
100168 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102322 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100169 .{ .type = .u32, .kind = .{ .reg = .eax } },102323 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100170 .{ .type = .f32, .kind = .mem },102324 .{ .type = .f32, .kind = .mem },
100171 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102325 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100172 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },102326 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100173 .unused,102327 .unused,
100174 .unused,102328 .unused,
...@@ -100180,14 +102334,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100180,14 +102334,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100180 .dst_temps = .{ .mem, .unused },102334 .dst_temps = .{ .mem, .unused },
100181 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102335 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100182 .each = .{ .once = &.{102336 .each = .{ .once = &.{
100183 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102337 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100184 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },102338 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100185 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102339 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100186 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102340 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100187 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102341 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100188 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },102342 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1d, ._, ._ },
100189 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102343 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102344 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100191 } },102345 } },
100192 }, .{102346 }, .{
100193 .required_features = .{ .@"64bit", .f16c, null, null },102347 .required_features = .{ .@"64bit", .f16c, null, null },
...@@ -100197,7 +102351,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100197,7 +102351,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100197 .{ .src = .{ .to_mem, .none, .none } },102351 .{ .src = .{ .to_mem, .none, .none } },
100198 },102352 },
100199 .extra_temps = .{102353 .extra_temps = .{
100200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102354 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100201 .{ .type = .f32, .kind = .{ .rc = .sse } },102355 .{ .type = .f32, .kind = .{ .rc = .sse } },
100202 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },102356 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100203 .unused,102357 .unused,
...@@ -100212,14 +102366,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100212,14 +102366,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100212 .dst_temps = .{ .mem, .unused },102366 .dst_temps = .{ .mem, .unused },
100213 .clobbers = .{ .eflags = true },102367 .clobbers = .{ .eflags = true },
100214 .each = .{ .once = &.{102368 .each = .{ .once = &.{
100215 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102369 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100216 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102370 .{ .@"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) },
100218 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },102372 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
100219 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },102373 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
100220 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },102374 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp2q, ._, ._ },
100221 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102375 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102376 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100223 } },102377 } },
100224 }, .{102378 }, .{
100225 .required_features = .{ .avx, null, null, null },102379 .required_features = .{ .avx, null, null, null },
...@@ -100230,10 +102384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100230,10 +102384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100230 },102384 },
100231 .call_frame = .{ .alignment = .@"16" },102385 .call_frame = .{ .alignment = .@"16" },
100232 .extra_temps = .{102386 .extra_temps = .{
100233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102387 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100234 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102388 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100235 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },102389 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100236 .{ .type = .i64, .kind = .{ .reg = .rax } },102390 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100237 .unused,102391 .unused,
100238 .unused,102392 .unused,
100239 .unused,102393 .unused,
...@@ -100245,13 +102399,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100245,13 +102399,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100245 .dst_temps = .{ .mem, .unused },102399 .dst_temps = .{ .mem, .unused },
100246 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102400 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100247 .each = .{ .once = &.{102401 .each = .{ .once = &.{
100248 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102402 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100249 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102403 .{ .@"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) },
100251 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102405 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100252 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102406 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
100253 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102407 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100254 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102408 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100255 } },102409 } },
100256 }, .{102410 }, .{
100257 .required_features = .{ .avx, null, null, null },102411 .required_features = .{ .avx, null, null, null },
...@@ -100262,10 +102416,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100262,10 +102416,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100262 },102416 },
100263 .call_frame = .{ .alignment = .@"16" },102417 .call_frame = .{ .alignment = .@"16" },
100264 .extra_temps = .{102418 .extra_temps = .{
100265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102419 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102420 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100267 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },102421 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100268 .{ .type = .u64, .kind = .{ .reg = .rax } },102422 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100269 .unused,102423 .unused,
100270 .unused,102424 .unused,
100271 .unused,102425 .unused,
...@@ -100277,13 +102431,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100277,13 +102431,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100277 .dst_temps = .{ .mem, .unused },102431 .dst_temps = .{ .mem, .unused },
100278 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100279 .each = .{ .once = &.{102433 .each = .{ .once = &.{
100280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102434 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100281 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102435 .{ .@"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) },
100283 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102437 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100284 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102438 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
100285 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102439 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100286 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102440 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100287 } },102441 } },
100288 }, .{102442 }, .{
100289 .required_features = .{ .sse2, null, null, null },102443 .required_features = .{ .sse2, null, null, null },
...@@ -100294,10 +102448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100294,10 +102448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100294 },102448 },
100295 .call_frame = .{ .alignment = .@"16" },102449 .call_frame = .{ .alignment = .@"16" },
100296 .extra_temps = .{102450 .extra_temps = .{
100297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102451 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100298 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102452 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100299 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },102453 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100300 .{ .type = .i64, .kind = .{ .reg = .rax } },102454 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100301 .unused,102455 .unused,
100302 .unused,102456 .unused,
100303 .unused,102457 .unused,
...@@ -100309,13 +102463,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100309,13 +102463,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100309 .dst_temps = .{ .mem, .unused },102463 .dst_temps = .{ .mem, .unused },
100310 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102464 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100311 .each = .{ .once = &.{102465 .each = .{ .once = &.{
100312 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102466 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100313 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102467 .{ .@"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), ._ },
100315 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102469 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100316 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102470 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
100317 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102471 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102472 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100319 } },102473 } },
100320 }, .{102474 }, .{
100321 .required_features = .{ .sse2, null, null, null },102475 .required_features = .{ .sse2, null, null, null },
...@@ -100326,10 +102480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100326,10 +102480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100326 },102480 },
100327 .call_frame = .{ .alignment = .@"16" },102481 .call_frame = .{ .alignment = .@"16" },
100328 .extra_temps = .{102482 .extra_temps = .{
100329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102483 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102484 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100331 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },102485 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100332 .{ .type = .u64, .kind = .{ .reg = .rax } },102486 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100333 .unused,102487 .unused,
100334 .unused,102488 .unused,
100335 .unused,102489 .unused,
...@@ -100341,13 +102495,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100341,13 +102495,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100341 .dst_temps = .{ .mem, .unused },102495 .dst_temps = .{ .mem, .unused },
100342 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102496 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100343 .each = .{ .once = &.{102497 .each = .{ .once = &.{
100344 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102498 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100345 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102499 .{ .@"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), ._ },
100347 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102501 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100348 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102502 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
100349 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102503 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100350 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102504 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100351 } },102505 } },
100352 }, .{102506 }, .{
100353 .required_features = .{ .sse, null, null, null },102507 .required_features = .{ .sse, null, null, null },
...@@ -100358,10 +102512,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100358,10 +102512,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100358 },102512 },
100359 .call_frame = .{ .alignment = .@"16" },102513 .call_frame = .{ .alignment = .@"16" },
100360 .extra_temps = .{102514 .extra_temps = .{
100361 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100362 .{ .type = .i64, .kind = .{ .reg = .rax } },102516 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100363 .{ .type = .f32, .kind = .mem },102517 .{ .type = .f32, .kind = .mem },
100364 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102518 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100365 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },102519 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100366 .unused,102520 .unused,
100367 .unused,102521 .unused,
...@@ -100373,14 +102527,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100373,14 +102527,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100373 .dst_temps = .{ .mem, .unused },102527 .dst_temps = .{ .mem, .unused },
100374 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100375 .each = .{ .once = &.{102529 .each = .{ .once = &.{
100376 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102530 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100377 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },102531 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100378 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102532 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100379 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102533 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100380 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102534 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100381 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },102535 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1q, ._, ._ },
100382 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102536 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100383 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102537 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100384 } },102538 } },
100385 }, .{102539 }, .{
100386 .required_features = .{ .sse, null, null, null },102540 .required_features = .{ .sse, null, null, null },
...@@ -100391,10 +102545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100391,10 +102545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100391 },102545 },
100392 .call_frame = .{ .alignment = .@"16" },102546 .call_frame = .{ .alignment = .@"16" },
100393 .extra_temps = .{102547 .extra_temps = .{
100394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100395 .{ .type = .u64, .kind = .{ .reg = .rax } },102549 .{ .type = .f32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100396 .{ .type = .f32, .kind = .mem },102550 .{ .type = .f32, .kind = .mem },
100397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102551 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100398 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },102552 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100399 .unused,102553 .unused,
100400 .unused,102554 .unused,
...@@ -100406,16 +102560,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100406,16 +102560,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100406 .dst_temps = .{ .mem, .unused },102560 .dst_temps = .{ .mem, .unused },
100407 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100408 .each = .{ .once = &.{102562 .each = .{ .once = &.{
100409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102563 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100410 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },102564 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100411 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102565 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100412 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102566 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100413 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102567 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100414 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },102568 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1q, ._, ._ },
100415 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102569 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102570 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100417 } },102571 } },
100418 }, .{102572 }, .{
102573 .required_cc_abi = .sysv64,
100419 .required_features = .{ .avx, null, null, null },102574 .required_features = .{ .avx, null, null, null },
100420 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },102575 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100421 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },102576 .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 {...@@ -100424,11 +102579,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100424 },102579 },
100425 .call_frame = .{ .alignment = .@"16" },102580 .call_frame = .{ .alignment = .@"16" },
100426 .extra_temps = .{102581 .extra_temps = .{
100427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102582 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100428 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102583 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100429 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },102584 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100430 .{ .type = .u64, .kind = .{ .reg = .rax } },102585 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100431 .{ .type = .i64, .kind = .{ .reg = .rdx } },102586 .unused,
100432 .unused,102587 .unused,
100433 .unused,102588 .unused,
100434 .unused,102589 .unused,
...@@ -100439,16 +102594,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100439,16 +102594,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100439 .dst_temps = .{ .mem, .unused },102594 .dst_temps = .{ .mem, .unused },
100440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100441 .each = .{ .once = &.{102596 .each = .{ .once = &.{
100442 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102597 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100443 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102598 .{ .@"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) },
100445 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102600 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100446 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102601 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
100447 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },102602 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
100448 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102603 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102604 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100450 } },102605 } },
100451 }, .{102606 }, .{
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,
100452 .required_features = .{ .avx, null, null, null },102641 .required_features = .{ .avx, null, null, null },
100453 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },102642 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100454 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },102643 .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 {...@@ -100457,11 +102646,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100457 },102646 },
100458 .call_frame = .{ .alignment = .@"16" },102647 .call_frame = .{ .alignment = .@"16" },
100459 .extra_temps = .{102648 .extra_temps = .{
100460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102649 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100461 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102650 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100462 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },102651 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100463 .{ .type = .u64, .kind = .{ .reg = .rax } },102652 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100464 .{ .type = .u64, .kind = .{ .reg = .rdx } },102653 .unused,
100465 .unused,102654 .unused,
100466 .unused,102655 .unused,
100467 .unused,102656 .unused,
...@@ -100472,16 +102661,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100472,16 +102661,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100472 .dst_temps = .{ .mem, .unused },102661 .dst_temps = .{ .mem, .unused },
100473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100474 .each = .{ .once = &.{102663 .each = .{ .once = &.{
100475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102664 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100476 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },102665 .{ .@"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) },
100478 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102667 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100479 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102668 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
100480 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },102669 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
100481 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102670 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100482 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102671 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100483 } },102672 } },
100484 }, .{102673 }, .{
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,
100485 .required_features = .{ .sse2, null, null, null },102708 .required_features = .{ .sse2, null, null, null },
100486 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },102709 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100487 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },102710 .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 {...@@ -100490,11 +102713,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100490 },102713 },
100491 .call_frame = .{ .alignment = .@"16" },102714 .call_frame = .{ .alignment = .@"16" },
100492 .extra_temps = .{102715 .extra_temps = .{
100493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102716 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100494 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102717 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100495 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },102718 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100496 .{ .type = .u64, .kind = .{ .reg = .rax } },102719 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100497 .{ .type = .i64, .kind = .{ .reg = .rdx } },102720 .unused,
100498 .unused,102721 .unused,
100499 .unused,102722 .unused,
100500 .unused,102723 .unused,
...@@ -100505,16 +102728,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100505,16 +102728,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100505 .dst_temps = .{ .mem, .unused },102728 .dst_temps = .{ .mem, .unused },
100506 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100507 .each = .{ .once = &.{102730 .each = .{ .once = &.{
100508 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102731 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100509 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102732 .{ .@"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), ._ },
100511 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102734 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100512 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102735 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
100513 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },102736 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
100514 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102737 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100515 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102738 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100516 } },102739 } },
100517 }, .{102740 }, .{
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,
100518 .required_features = .{ .sse2, null, null, null },102775 .required_features = .{ .sse2, null, null, null },
100519 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },102776 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100520 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },102777 .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 {...@@ -100523,11 +102780,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100523 },102780 },
100524 .call_frame = .{ .alignment = .@"16" },102781 .call_frame = .{ .alignment = .@"16" },
100525 .extra_temps = .{102782 .extra_temps = .{
100526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102783 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102784 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100528 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },102785 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100529 .{ .type = .u64, .kind = .{ .reg = .rax } },102786 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100530 .{ .type = .u64, .kind = .{ .reg = .rdx } },102787 .unused,
100531 .unused,102788 .unused,
100532 .unused,102789 .unused,
100533 .unused,102790 .unused,
...@@ -100538,16 +102795,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100538,16 +102795,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100538 .dst_temps = .{ .mem, .unused },102795 .dst_temps = .{ .mem, .unused },
100539 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100540 .each = .{ .once = &.{102797 .each = .{ .once = &.{
100541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102798 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100542 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },102799 .{ .@"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), ._ },
100544 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102801 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100545 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },102802 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
100546 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },102803 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
100547 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102804 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
100549 } },102839 } },
100550 }, .{102840 }, .{
102841 .required_cc_abi = .sysv64,
100551 .required_features = .{ .sse, null, null, null },102842 .required_features = .{ .sse, null, null, null },
100552 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },102843 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100553 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },102844 .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 {...@@ -100556,12 +102847,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100556 },102847 },
100557 .call_frame = .{ .alignment = .@"16" },102848 .call_frame = .{ .alignment = .@"16" },
100558 .extra_temps = .{102849 .extra_temps = .{
100559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102850 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100560 .{ .type = .u64, .kind = .{ .reg = .rax } },102851 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100561 .{ .type = .f32, .kind = .mem },102852 .{ .type = .f32, .kind = .mem },
100562 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102853 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100563 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },102854 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100564 .{ .type = .i64, .kind = .{ .reg = .rdx } },102855 .unused,
100565 .unused,102856 .unused,
100566 .unused,102857 .unused,
100567 .unused,102858 .unused,
...@@ -100571,17 +102862,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100571,17 +102862,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100571 .dst_temps = .{ .mem, .unused },102862 .dst_temps = .{ .mem, .unused },
100572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102863 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100573 .each = .{ .once = &.{102864 .each = .{ .once = &.{
100574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102865 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100575 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .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), ._, ._ },
100576 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102902 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100577 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102903 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100578 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102904 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100579 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },102905 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
100580 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },102906 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100581 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102907 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100583 } },102908 } },
100584 }, .{102909 }, .{
102910 .required_cc_abi = .sysv64,
100585 .required_features = .{ .sse, null, null, null },102911 .required_features = .{ .sse, null, null, null },
100586 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },102912 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100587 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },102913 .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 {...@@ -100590,12 +102916,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100590 },102916 },
100591 .call_frame = .{ .alignment = .@"16" },102917 .call_frame = .{ .alignment = .@"16" },
100592 .extra_temps = .{102918 .extra_temps = .{
100593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102919 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100594 .{ .type = .u64, .kind = .{ .reg = .rax } },102920 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100595 .{ .type = .f32, .kind = .mem },102921 .{ .type = .f32, .kind = .mem },
100596 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102922 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100597 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },102923 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100598 .{ .type = .u64, .kind = .{ .reg = .rdx } },102924 .unused,
100599 .unused,102925 .unused,
100600 .unused,102926 .unused,
100601 .unused,102927 .unused,
...@@ -100605,15 +102931,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100605,15 +102931,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100605 .dst_temps = .{ .mem, .unused },102931 .dst_temps = .{ .mem, .unused },
100606 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102932 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100607 .each = .{ .once = &.{102933 .each = .{ .once = &.{
100608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },102934 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100609 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .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), ._, ._ },
100610 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },102971 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100611 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },102972 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100612 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },102973 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100613 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },102974 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
100614 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },102975 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100615 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },102976 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100616 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100617 } },102977 } },
100618 }, .{102978 }, .{
100619 .required_features = .{ .@"64bit", .avx, null, null },102979 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -100624,11 +102984,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100624,11 +102984,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100624 },102984 },
100625 .call_frame = .{ .alignment = .@"16" },102985 .call_frame = .{ .alignment = .@"16" },
100626 .extra_temps = .{102986 .extra_temps = .{
100627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102987 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100628 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },102988 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100629 .{ .type = .usize, .kind = .{ .reg = .rdi } },102989 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100630 .{ .type = .usize, .kind = .{ .reg = .rsi } },102990 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100631 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },102991 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100632 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },102992 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100633 .unused,102993 .unused,
100634 .unused,102994 .unused,
...@@ -100639,16 +102999,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100639,16 +102999,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100639 .dst_temps = .{ .mem, .unused },102999 .dst_temps = .{ .mem, .unused },
100640 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100641 .each = .{ .once = &.{103001 .each = .{ .once = &.{
100642 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103002 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100643 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103003 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100644 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },103004 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100645 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },103005 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100646 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103006 .{ ._, ._, .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) },
100648 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103008 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100649 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103009 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
100650 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103010 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103011 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100652 } },103012 } },
100653 }, .{103013 }, .{
100654 .required_features = .{ .@"64bit", .avx, null, null },103014 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -100659,11 +103019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100659,11 +103019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100659 },103019 },
100660 .call_frame = .{ .alignment = .@"16" },103020 .call_frame = .{ .alignment = .@"16" },
100661 .extra_temps = .{103021 .extra_temps = .{
100662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103022 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103023 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100664 .{ .type = .usize, .kind = .{ .reg = .rdi } },103024 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100665 .{ .type = .usize, .kind = .{ .reg = .rsi } },103025 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },103026 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100667 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },103027 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100668 .unused,103028 .unused,
100669 .unused,103029 .unused,
...@@ -100674,16 +103034,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100674,16 +103034,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100674 .dst_temps = .{ .mem, .unused },103034 .dst_temps = .{ .mem, .unused },
100675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103035 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100676 .each = .{ .once = &.{103036 .each = .{ .once = &.{
100677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103037 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100678 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103038 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100679 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },103039 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100680 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },103040 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100681 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103041 .{ ._, ._, .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) },
100683 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103043 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100684 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103044 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
100685 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103045 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100686 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103046 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100687 } },103047 } },
100688 }, .{103048 }, .{
100689 .required_features = .{ .@"64bit", .sse2, null, null },103049 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -100694,11 +103054,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100694,11 +103054,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100694 },103054 },
100695 .call_frame = .{ .alignment = .@"16" },103055 .call_frame = .{ .alignment = .@"16" },
100696 .extra_temps = .{103056 .extra_temps = .{
100697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103057 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100698 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103058 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100699 .{ .type = .usize, .kind = .{ .reg = .rdi } },103059 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100700 .{ .type = .usize, .kind = .{ .reg = .rsi } },103060 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100701 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },103061 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100702 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },103062 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100703 .unused,103063 .unused,
100704 .unused,103064 .unused,
...@@ -100709,16 +103069,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100709,16 +103069,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100709 .dst_temps = .{ .mem, .unused },103069 .dst_temps = .{ .mem, .unused },
100710 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103070 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100711 .each = .{ .once = &.{103071 .each = .{ .once = &.{
100712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103072 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100713 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103073 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100714 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },103074 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100715 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },103075 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100716 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103076 .{ ._, ._, .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), ._ },
100718 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103078 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100719 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103079 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
100720 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103080 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103081 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100722 } },103082 } },
100723 }, .{103083 }, .{
100724 .required_features = .{ .@"64bit", .sse2, null, null },103084 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -100729,11 +103089,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100729,11 +103089,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100729 },103089 },
100730 .call_frame = .{ .alignment = .@"16" },103090 .call_frame = .{ .alignment = .@"16" },
100731 .extra_temps = .{103091 .extra_temps = .{
100732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103092 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100733 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103093 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100734 .{ .type = .usize, .kind = .{ .reg = .rdi } },103094 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100735 .{ .type = .usize, .kind = .{ .reg = .rsi } },103095 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100736 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },103096 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100737 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },103097 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100738 .unused,103098 .unused,
100739 .unused,103099 .unused,
...@@ -100744,16 +103104,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100744,16 +103104,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100744 .dst_temps = .{ .mem, .unused },103104 .dst_temps = .{ .mem, .unused },
100745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103105 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100746 .each = .{ .once = &.{103106 .each = .{ .once = &.{
100747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103107 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100748 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103108 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100749 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },103109 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100750 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },103110 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100751 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103111 .{ ._, ._, .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), ._ },
100753 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103113 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100754 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103114 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
100755 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103115 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100756 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103116 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100757 } },103117 } },
100758 }, .{103118 }, .{
100759 .required_features = .{ .@"64bit", .sse, null, null },103119 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -100764,12 +103124,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100764,12 +103124,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100764 },103124 },
100765 .call_frame = .{ .alignment = .@"16" },103125 .call_frame = .{ .alignment = .@"16" },
100766 .extra_temps = .{103126 .extra_temps = .{
100767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103127 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100768 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103128 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100769 .{ .type = .usize, .kind = .{ .reg = .rdi } },103129 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100770 .{ .type = .usize, .kind = .{ .reg = .rsi } },103130 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100771 .{ .type = .f32, .kind = .mem },103131 .{ .type = .f32, .kind = .mem },
100772 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },103132 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100773 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },103133 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100774 .unused,103134 .unused,
100775 .unused,103135 .unused,
...@@ -100779,17 +103139,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100779,17 +103139,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100779 .dst_temps = .{ .mem, .unused },103139 .dst_temps = .{ .mem, .unused },
100780 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103140 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100781 .each = .{ .once = &.{103141 .each = .{ .once = &.{
100782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103142 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100783 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103143 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100784 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },103144 .{ .@"0:", ._, .movzx, .tmp3d, .memi(.src0w, .tmp0), ._, ._ },
100785 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },103145 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100786 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },103146 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100787 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103147 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100788 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },103148 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100789 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },103149 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100790 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103150 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
100791 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103151 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100792 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103152 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100793 } },103153 } },
100794 }, .{103154 }, .{
100795 .required_features = .{ .@"64bit", .sse, null, null },103155 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -100800,12 +103160,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100800,12 +103160,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100800 },103160 },
100801 .call_frame = .{ .alignment = .@"16" },103161 .call_frame = .{ .alignment = .@"16" },
100802 .extra_temps = .{103162 .extra_temps = .{
100803 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103163 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100804 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103164 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100805 .{ .type = .usize, .kind = .{ .reg = .rdi } },103165 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100806 .{ .type = .usize, .kind = .{ .reg = .rsi } },103166 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100807 .{ .type = .f32, .kind = .mem },103167 .{ .type = .f32, .kind = .mem },
100808 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },103168 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100809 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },103169 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100810 .unused,103170 .unused,
100811 .unused,103171 .unused,
...@@ -100815,17 +103175,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100815,17 +103175,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100815 .dst_temps = .{ .mem, .unused },103175 .dst_temps = .{ .mem, .unused },
100816 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100817 .each = .{ .once = &.{103177 .each = .{ .once = &.{
100818 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103178 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100819 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103179 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100820 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },103180 .{ .@"0:", ._, .movzx, .tmp3d, .memi(.src0w, .tmp0), ._, ._ },
100821 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },103181 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100822 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },103182 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100823 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103183 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100824 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },103184 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100825 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },103185 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100826 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103186 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
100827 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103187 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
100828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103188 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100829 } },103189 } },
100830 }, .{103190 }, .{
100831 .required_features = .{ .avx, null, null, null },103191 .required_features = .{ .avx, null, null, null },
...@@ -100940,11 +103300,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100940,11 +103300,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100940 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },103300 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
100941 } },103301 } },
100942 }, .{103302 }, .{
100943 .required_features = .{ .@"64bit", .sse, null, null },103303 .required_cc_abi = .sysv64,
103304 .required_features = .{ .sse, null, null, null },
100944 .src_constraints = .{ .{ .float = .dword }, .any, .any },103305 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100945 .dst_constraints = .{ .{ .signed_int = .xword }, .any },103306 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
100946 .patterns = &.{103307 .patterns = &.{
100947 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },103308 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
100948 },103309 },
100949 .call_frame = .{ .alignment = .@"16" },103310 .call_frame = .{ .alignment = .@"16" },
100950 .extra_temps = .{103311 .extra_temps = .{
...@@ -100960,17 +103321,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100960,17 +103321,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100960 .unused,103321 .unused,
100961 .unused,103322 .unused,
100962 },103323 },
100963 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },103324 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
100964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103325 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100965 .each = .{ .once = &.{103326 .each = .{ .once = &.{
100966 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },103327 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100967 } },103328 } },
100968 }, .{103329 }, .{
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 },
100970 .src_constraints = .{ .{ .float = .dword }, .any, .any },103359 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100971 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },103360 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
100972 .patterns = &.{103361 .patterns = &.{
100973 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },103362 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
100974 },103363 },
100975 .call_frame = .{ .alignment = .@"16" },103364 .call_frame = .{ .alignment = .@"16" },
100976 .extra_temps = .{103365 .extra_temps = .{
...@@ -100986,17 +103375,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100986,17 +103375,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100986 .unused,103375 .unused,
100987 .unused,103376 .unused,
100988 },103377 },
100989 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },103378 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
100990 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100991 .each = .{ .once = &.{103380 .each = .{ .once = &.{
100992 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },103381 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100993 } },103382 } },
100994 }, .{103383 }, .{
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 },
100996 .src_constraints = .{ .{ .float = .dword }, .any, .any },103413 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100997 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },103414 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
100998 .patterns = &.{103415 .patterns = &.{
100999 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },103416 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101000 },103417 },
101001 .call_frame = .{ .alignment = .@"16" },103418 .call_frame = .{ .alignment = .@"16" },
101002 .extra_temps = .{103419 .extra_temps = .{
...@@ -101024,7 +103441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101024,7 +103441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101024 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },103441 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
101025 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },103442 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
101026 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },103443 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
101027 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },103444 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
101028 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },103445 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
101029 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },103446 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
101030 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },103447 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
...@@ -101033,11 +103450,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101033,11 +103450,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101033 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },103450 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101034 } },103451 } },
101035 }, .{103452 }, .{
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 },
101037 .src_constraints = .{ .{ .float = .dword }, .any, .any },103499 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101038 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },103500 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101039 .patterns = &.{103501 .patterns = &.{
101040 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },103502 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101041 },103503 },
101042 .call_frame = .{ .alignment = .@"16" },103504 .call_frame = .{ .alignment = .@"16" },
101043 .extra_temps = .{103505 .extra_temps = .{
...@@ -101065,7 +103527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101065,7 +103527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101065 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },103527 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
101066 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },103528 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
101067 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },103529 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
101068 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },103530 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
101069 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },103531 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
101070 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },103532 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
101071 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },103533 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
...@@ -101074,7 +103536,97 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101074,7 +103536,97 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101074 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },103536 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101075 } },103537 } },
101076 }, .{103538 }, .{
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 },
101078 .src_constraints = .{ .{ .float = .dword }, .any, .any },103630 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101079 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },103631 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101080 .patterns = &.{103632 .patterns = &.{
...@@ -101082,7 +103634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101082,7 +103634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101082 },103634 },
101083 .call_frame = .{ .alignment = .@"16" },103635 .call_frame = .{ .alignment = .@"16" },
101084 .extra_temps = .{103636 .extra_temps = .{
101085 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103637 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101086 .{ .type = .i64, .kind = .{ .reg = .rax } },103638 .{ .type = .i64, .kind = .{ .reg = .rax } },
101087 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },103639 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101088 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },103640 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
...@@ -101106,7 +103658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101106,7 +103658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101106 .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ },103658 .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ },
101107 .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ },103659 .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ },
101108 .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ },103660 .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ },
101109 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },103661 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
101110 .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ },103662 .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ },
101111 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ },103663 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ },
101112 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },103664 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
...@@ -101115,17 +103667,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101115,17 +103667,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101115 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },103667 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101116 } },103668 } },
101117 }, .{103669 }, .{
101118 .required_features = .{ .@"64bit", .sse, null, null },103670 .required_cc_abi = .win64,
103671 .required_features = .{ .avx, null, null, null },
101119 .src_constraints = .{ .{ .float = .dword }, .any, .any },103672 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101120 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },103673 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
101121 .patterns = &.{103674 .patterns = &.{
101122 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },103675 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101123 },103676 },
101124 .call_frame = .{ .alignment = .@"16" },103677 .call_frame = .{ .alignment = .@"16" },
101125 .extra_temps = .{103678 .extra_temps = .{
101126 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },103679 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101127 .{ .type = .i64, .kind = .{ .reg = .rax } },103680 .{ .type = .u64, .kind = .{ .reg = .rax } },
101128 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101129 .{ .type = .usize, .kind = .{ .reg = .rdi } },103681 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101130 .{ .type = .u32, .kind = .{ .reg = .ecx } },103682 .{ .type = .u32, .kind = .{ .reg = .ecx } },
101131 .unused,103683 .unused,
...@@ -101134,16 +103686,113 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101134,16 +103686,113 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101134 .unused,103686 .unused,
101135 .unused,103687 .unused,
101136 .unused,103688 .unused,
103689 .unused,
101137 },103690 },
101138 .dst_temps = .{ .mem, .unused },103691 .dst_temps = .{ .mem, .unused },
101139 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101140 .each = .{ .once = &.{103693 .each = .{ .once = &.{
101141 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },103694 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
101142 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },103695 .{ ._, .v_dqa, .mov, .mem(.dst0x), .src0x, ._, ._ },
101143 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ },
101144 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },103696 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
101145 .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ },103697 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 16), ._, ._ },
101146 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },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), ._, ._ },
101147 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },103796 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101148 } },103797 } },
101149 }, .{103798 }, .{
...@@ -101208,7 +103857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101208,7 +103857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101208 .{ .src = .{ .to_mem, .none, .none } },103857 .{ .src = .{ .to_mem, .none, .none } },
101209 },103858 },
101210 .extra_temps = .{103859 .extra_temps = .{
101211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103860 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101212 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },103861 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
101213 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },103862 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
101214 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },103863 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -101225,12 +103874,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101225,12 +103874,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101225 .each = .{ .once = &.{103874 .each = .{ .once = &.{
101226 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },103875 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
101227 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },103876 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
101228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103877 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
101229 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },103878 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
101230 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },103879 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
101231 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },103880 .{ ._, .v_d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
101232 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103881 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103882 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101234 } },103883 } },
101235 }, .{103884 }, .{
101236 .required_features = .{ .ssse3, null, null, null },103885 .required_features = .{ .ssse3, null, null, null },
...@@ -101240,7 +103889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101240,7 +103889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101240 .{ .src = .{ .to_mem, .none, .none } },103889 .{ .src = .{ .to_mem, .none, .none } },
101241 },103890 },
101242 .extra_temps = .{103891 .extra_temps = .{
101243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103892 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101244 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },103893 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
101245 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },103894 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
101246 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },103895 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -101257,12 +103906,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101257,12 +103906,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101257 .each = .{ .once = &.{103906 .each = .{ .once = &.{
101258 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },103907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
101259 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },103908 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
101260 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103909 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
101261 .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },103910 .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
101262 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },103911 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
101263 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },103912 .{ ._, ._d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
101264 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103913 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101265 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103914 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101266 } },103915 } },
101267 }, .{103916 }, .{
101268 .required_features = .{ .sse, .slow_incdec, null, null },103917 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -101272,7 +103921,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101272,7 +103921,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101272 .{ .src = .{ .to_mem, .none, .none } },103921 .{ .src = .{ .to_mem, .none, .none } },
101273 },103922 },
101274 .extra_temps = .{103923 .extra_temps = .{
101275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103924 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101276 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },103925 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
101277 .unused,103926 .unused,
101278 .unused,103927 .unused,
...@@ -101287,11 +103936,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101287,11 +103936,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101287 .dst_temps = .{ .mem, .unused },103936 .dst_temps = .{ .mem, .unused },
101288 .clobbers = .{ .eflags = true },103937 .clobbers = .{ .eflags = true },
101289 .each = .{ .once = &.{103938 .each = .{ .once = &.{
101290 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103939 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101291 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },103940 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101292 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },103941 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
101293 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },103942 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
101294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103943 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101295 } },103944 } },
101296 }, .{103945 }, .{
101297 .required_features = .{ .sse, null, null, null },103946 .required_features = .{ .sse, null, null, null },
...@@ -101301,7 +103950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101301,7 +103950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101301 .{ .src = .{ .to_mem, .none, .none } },103950 .{ .src = .{ .to_mem, .none, .none } },
101302 },103951 },
101303 .extra_temps = .{103952 .extra_temps = .{
101304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103953 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101305 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },103954 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
101306 .unused,103955 .unused,
101307 .unused,103956 .unused,
...@@ -101316,11 +103965,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101316,11 +103965,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101316 .dst_temps = .{ .mem, .unused },103965 .dst_temps = .{ .mem, .unused },
101317 .clobbers = .{ .eflags = true },103966 .clobbers = .{ .eflags = true },
101318 .each = .{ .once = &.{103967 .each = .{ .once = &.{
101319 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103968 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101320 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },103969 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101321 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },103970 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
101322 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },103971 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
101323 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },103972 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
101324 } },103973 } },
101325 }, .{103974 }, .{
101326 .required_features = .{ .avx, .slow_incdec, null, null },103975 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -101331,10 +103980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101331,10 +103980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101331 },103980 },
101332 .call_frame = .{ .alignment = .@"16" },103981 .call_frame = .{ .alignment = .@"16" },
101333 .extra_temps = .{103982 .extra_temps = .{
101334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103983 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101335 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103984 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101336 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },103985 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101337 .{ .type = .i32, .kind = .{ .reg = .eax } },103986 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101338 .unused,103987 .unused,
101339 .unused,103988 .unused,
101340 .unused,103989 .unused,
...@@ -101346,12 +103995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101346,12 +103995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101346 .dst_temps = .{ .mem, .unused },103995 .dst_temps = .{ .mem, .unused },
101347 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101348 .each = .{ .once = &.{103997 .each = .{ .once = &.{
101349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103998 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101350 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },103999 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101351 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104000 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101352 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104001 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101353 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },104002 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
101354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104003 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101355 } },104004 } },
101356 }, .{104005 }, .{
101357 .required_features = .{ .avx, null, null, null },104006 .required_features = .{ .avx, null, null, null },
...@@ -101362,10 +104011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101362,10 +104011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101362 },104011 },
101363 .call_frame = .{ .alignment = .@"16" },104012 .call_frame = .{ .alignment = .@"16" },
101364 .extra_temps = .{104013 .extra_temps = .{
101365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101366 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104015 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101367 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104016 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101368 .{ .type = .i32, .kind = .{ .reg = .eax } },104017 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101369 .unused,104018 .unused,
101370 .unused,104019 .unused,
101371 .unused,104020 .unused,
...@@ -101377,12 +104026,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101377,12 +104026,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101377 .dst_temps = .{ .mem, .unused },104026 .dst_temps = .{ .mem, .unused },
101378 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101379 .each = .{ .once = &.{104028 .each = .{ .once = &.{
101380 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104029 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101381 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104030 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101382 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104031 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101383 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104032 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101384 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },104033 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
101385 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },104034 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
101386 } },104035 } },
101387 }, .{104036 }, .{
101388 .required_features = .{ .sse, .slow_incdec, null, null },104037 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -101393,10 +104042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101393,10 +104042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101393 },104042 },
101394 .call_frame = .{ .alignment = .@"16" },104043 .call_frame = .{ .alignment = .@"16" },
101395 .extra_temps = .{104044 .extra_temps = .{
101396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104045 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101397 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104046 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101398 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104047 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101399 .{ .type = .i32, .kind = .{ .reg = .eax } },104048 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101400 .unused,104049 .unused,
101401 .unused,104050 .unused,
101402 .unused,104051 .unused,
...@@ -101408,12 +104057,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101408,12 +104057,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101408 .dst_temps = .{ .mem, .unused },104057 .dst_temps = .{ .mem, .unused },
101409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104058 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101410 .each = .{ .once = &.{104059 .each = .{ .once = &.{
101411 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104060 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101412 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104061 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101413 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104062 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101414 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104063 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101415 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },104064 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
101416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104065 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101417 } },104066 } },
101418 }, .{104067 }, .{
101419 .required_features = .{ .sse, null, null, null },104068 .required_features = .{ .sse, null, null, null },
...@@ -101424,10 +104073,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101424,10 +104073,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101424 },104073 },
101425 .call_frame = .{ .alignment = .@"16" },104074 .call_frame = .{ .alignment = .@"16" },
101426 .extra_temps = .{104075 .extra_temps = .{
101427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104076 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101428 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104077 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101429 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104078 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101430 .{ .type = .i32, .kind = .{ .reg = .eax } },104079 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101431 .unused,104080 .unused,
101432 .unused,104081 .unused,
101433 .unused,104082 .unused,
...@@ -101439,12 +104088,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101439,12 +104088,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101439 .dst_temps = .{ .mem, .unused },104088 .dst_temps = .{ .mem, .unused },
101440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101441 .each = .{ .once = &.{104090 .each = .{ .once = &.{
101442 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104091 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101443 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104092 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104093 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101445 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104094 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101446 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },104095 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
101447 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },104096 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
101448 } },104097 } },
101449 }, .{104098 }, .{
101450 .required_features = .{ .avx, null, null, null },104099 .required_features = .{ .avx, null, null, null },
...@@ -101506,7 +104155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101506,7 +104155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101506 .{ .src = .{ .to_mem, .none, .none } },104155 .{ .src = .{ .to_mem, .none, .none } },
101507 },104156 },
101508 .extra_temps = .{104157 .extra_temps = .{
101509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101510 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },104159 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
101511 .unused,104160 .unused,
101512 .unused,104161 .unused,
...@@ -101521,12 +104170,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101521,12 +104170,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101521 .dst_temps = .{ .mem, .unused },104170 .dst_temps = .{ .mem, .unused },
101522 .clobbers = .{ .eflags = true },104171 .clobbers = .{ .eflags = true },
101523 .each = .{ .once = &.{104172 .each = .{ .once = &.{
101524 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104173 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
101525 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },104174 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101526 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },104175 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
101527 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104176 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
101528 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },104177 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
101529 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101530 } },104179 } },
101531 }, .{104180 }, .{
101532 .required_features = .{ .sse2, null, null, null },104181 .required_features = .{ .sse2, null, null, null },
...@@ -101536,7 +104185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101536,7 +104185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101536 .{ .src = .{ .to_mem, .none, .none } },104185 .{ .src = .{ .to_mem, .none, .none } },
101537 },104186 },
101538 .extra_temps = .{104187 .extra_temps = .{
101539 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104188 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101540 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },104189 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
101541 .unused,104190 .unused,
101542 .unused,104191 .unused,
...@@ -101551,12 +104200,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101551,12 +104200,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101551 .dst_temps = .{ .mem, .unused },104200 .dst_temps = .{ .mem, .unused },
101552 .clobbers = .{ .eflags = true },104201 .clobbers = .{ .eflags = true },
101553 .each = .{ .once = &.{104202 .each = .{ .once = &.{
101554 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104203 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
101555 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },104204 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101556 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },104205 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
101557 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104206 .{ ._, ._q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
101558 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },104207 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
101559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104208 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101560 } },104209 } },
101561 }, .{104210 }, .{
101562 .required_features = .{ .avx, null, null, null },104211 .required_features = .{ .avx, null, null, null },
...@@ -101566,7 +104215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101566,7 +104215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101566 .{ .src = .{ .to_mem, .none, .none } },104215 .{ .src = .{ .to_mem, .none, .none } },
101567 },104216 },
101568 .extra_temps = .{104217 .extra_temps = .{
101569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104218 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101570 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },104219 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
101571 .unused,104220 .unused,
101572 .unused,104221 .unused,
...@@ -101581,12 +104230,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101581,12 +104230,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101581 .dst_temps = .{ .mem, .unused },104230 .dst_temps = .{ .mem, .unused },
101582 .clobbers = .{ .eflags = true },104231 .clobbers = .{ .eflags = true },
101583 .each = .{ .once = &.{104232 .each = .{ .once = &.{
101584 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104233 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
101585 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },104234 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101586 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },104235 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
101587 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104236 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
101588 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },104237 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
101589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104238 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101590 } },104239 } },
101591 }, .{104240 }, .{
101592 .required_features = .{ .sse4_1, null, null, null },104241 .required_features = .{ .sse4_1, null, null, null },
...@@ -101596,7 +104245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101596,7 +104245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101596 .{ .src = .{ .to_mem, .none, .none } },104245 .{ .src = .{ .to_mem, .none, .none } },
101597 },104246 },
101598 .extra_temps = .{104247 .extra_temps = .{
101599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104248 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101600 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },104249 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
101601 .unused,104250 .unused,
101602 .unused,104251 .unused,
...@@ -101611,12 +104260,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101611,12 +104260,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101611 .dst_temps = .{ .mem, .unused },104260 .dst_temps = .{ .mem, .unused },
101612 .clobbers = .{ .eflags = true },104261 .clobbers = .{ .eflags = true },
101613 .each = .{ .once = &.{104262 .each = .{ .once = &.{
101614 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104263 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
101615 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },104264 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101616 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },104265 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
101617 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104266 .{ ._, ._q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
101618 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },104267 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
101619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104268 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101620 } },104269 } },
101621 }, .{104270 }, .{
101622 .required_features = .{ .avx, null, null, null },104271 .required_features = .{ .avx, null, null, null },
...@@ -101627,10 +104276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101627,10 +104276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101627 },104276 },
101628 .call_frame = .{ .alignment = .@"16" },104277 .call_frame = .{ .alignment = .@"16" },
101629 .extra_temps = .{104278 .extra_temps = .{
101630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104279 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104280 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101632 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104281 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101633 .{ .type = .i32, .kind = .{ .reg = .eax } },104282 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101634 .unused,104283 .unused,
101635 .unused,104284 .unused,
101636 .unused,104285 .unused,
...@@ -101642,12 +104291,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101642,12 +104291,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101642 .dst_temps = .{ .mem, .unused },104291 .dst_temps = .{ .mem, .unused },
101643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101644 .each = .{ .once = &.{104293 .each = .{ .once = &.{
101645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104294 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
101646 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },104295 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
101647 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104296 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101648 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },104297 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
101649 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },104298 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
101650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104299 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101651 } },104300 } },
101652 }, .{104301 }, .{
101653 .required_features = .{ .sse, null, null, null },104302 .required_features = .{ .sse, null, null, null },
...@@ -101658,10 +104307,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101658,10 +104307,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101658 },104307 },
101659 .call_frame = .{ .alignment = .@"16" },104308 .call_frame = .{ .alignment = .@"16" },
101660 .extra_temps = .{104309 .extra_temps = .{
101661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104310 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101662 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104311 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101663 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104312 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101664 .{ .type = .i32, .kind = .{ .reg = .eax } },104313 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101665 .unused,104314 .unused,
101666 .unused,104315 .unused,
101667 .unused,104316 .unused,
...@@ -101673,12 +104322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101673,12 +104322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101673 .dst_temps = .{ .mem, .unused },104322 .dst_temps = .{ .mem, .unused },
101674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104323 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101675 .each = .{ .once = &.{104324 .each = .{ .once = &.{
101676 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104325 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
101677 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },104326 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
101678 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104327 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101679 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },104328 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
101680 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },104329 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
101681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104330 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101682 } },104331 } },
101683 }, .{104332 }, .{
101684 .required_features = .{ .avx, null, null, null },104333 .required_features = .{ .avx, null, null, null },
...@@ -101712,7 +104361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101712,7 +104361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101712 .{ .src = .{ .to_mem, .none, .none } },104361 .{ .src = .{ .to_mem, .none, .none } },
101713 },104362 },
101714 .extra_temps = .{104363 .extra_temps = .{
101715 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104364 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101716 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },104365 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101717 .unused,104366 .unused,
101718 .unused,104367 .unused,
...@@ -101727,11 +104376,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101727,11 +104376,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101727 .dst_temps = .{ .mem, .unused },104376 .dst_temps = .{ .mem, .unused },
101728 .clobbers = .{ .eflags = true },104377 .clobbers = .{ .eflags = true },
101729 .each = .{ .once = &.{104378 .each = .{ .once = &.{
101730 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104379 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
101731 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },104380 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
101732 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104381 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
101733 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },104382 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
101734 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104383 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101735 } },104384 } },
101736 }, .{104385 }, .{
101737 .required_features = .{ .sse2, null, null, null },104386 .required_features = .{ .sse2, null, null, null },
...@@ -101741,7 +104390,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101741,7 +104390,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101741 .{ .src = .{ .to_mem, .none, .none } },104390 .{ .src = .{ .to_mem, .none, .none } },
101742 },104391 },
101743 .extra_temps = .{104392 .extra_temps = .{
101744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104393 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101745 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },104394 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101746 .unused,104395 .unused,
101747 .unused,104396 .unused,
...@@ -101756,11 +104405,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101756,11 +104405,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101756 .dst_temps = .{ .mem, .unused },104405 .dst_temps = .{ .mem, .unused },
101757 .clobbers = .{ .eflags = true },104406 .clobbers = .{ .eflags = true },
101758 .each = .{ .once = &.{104407 .each = .{ .once = &.{
101759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104408 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
101760 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },104409 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
101761 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104410 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
101762 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },104411 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
101763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104412 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101764 } },104413 } },
101765 }, .{104414 }, .{
101766 .required_features = .{ .avx, null, null, null },104415 .required_features = .{ .avx, null, null, null },
...@@ -101771,10 +104420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101771,10 +104420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101771 },104420 },
101772 .call_frame = .{ .alignment = .@"16" },104421 .call_frame = .{ .alignment = .@"16" },
101773 .extra_temps = .{104422 .extra_temps = .{
101774 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101775 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104424 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101776 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104425 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101777 .{ .type = .i32, .kind = .{ .reg = .eax } },104426 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101778 .unused,104427 .unused,
101779 .unused,104428 .unused,
101780 .unused,104429 .unused,
...@@ -101786,12 +104435,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101786,12 +104435,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101786 .dst_temps = .{ .mem, .unused },104435 .dst_temps = .{ .mem, .unused },
101787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104436 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101788 .each = .{ .once = &.{104437 .each = .{ .once = &.{
101789 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104438 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101790 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104439 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101791 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104440 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101792 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },104441 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
101793 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104442 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101794 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104443 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101795 } },104444 } },
101796 }, .{104445 }, .{
101797 .required_features = .{ .avx, null, null, null },104446 .required_features = .{ .avx, null, null, null },
...@@ -101802,10 +104451,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101802,10 +104451,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101802 },104451 },
101803 .call_frame = .{ .alignment = .@"16" },104452 .call_frame = .{ .alignment = .@"16" },
101804 .extra_temps = .{104453 .extra_temps = .{
101805 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104454 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101806 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104455 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101807 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },104456 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101808 .{ .type = .u32, .kind = .{ .reg = .eax } },104457 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101809 .unused,104458 .unused,
101810 .unused,104459 .unused,
101811 .unused,104460 .unused,
...@@ -101817,12 +104466,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101817,12 +104466,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101817 .dst_temps = .{ .mem, .unused },104466 .dst_temps = .{ .mem, .unused },
101818 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101819 .each = .{ .once = &.{104468 .each = .{ .once = &.{
101820 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104469 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101821 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104470 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101822 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104471 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101823 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },104472 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
101824 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104473 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101825 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104474 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101826 } },104475 } },
101827 }, .{104476 }, .{
101828 .required_features = .{ .sse, null, null, null },104477 .required_features = .{ .sse, null, null, null },
...@@ -101833,10 +104482,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101833,10 +104482,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101833 },104482 },
101834 .call_frame = .{ .alignment = .@"16" },104483 .call_frame = .{ .alignment = .@"16" },
101835 .extra_temps = .{104484 .extra_temps = .{
101836 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104485 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101837 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104486 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101838 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },104487 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101839 .{ .type = .i32, .kind = .{ .reg = .eax } },104488 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101840 .unused,104489 .unused,
101841 .unused,104490 .unused,
101842 .unused,104491 .unused,
...@@ -101848,12 +104497,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101848,12 +104497,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101848 .dst_temps = .{ .mem, .unused },104497 .dst_temps = .{ .mem, .unused },
101849 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104498 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101850 .each = .{ .once = &.{104499 .each = .{ .once = &.{
101851 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104500 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101852 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104501 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101853 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104502 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101854 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },104503 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
101855 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104504 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101856 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104505 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101857 } },104506 } },
101858 }, .{104507 }, .{
101859 .required_features = .{ .sse, null, null, null },104508 .required_features = .{ .sse, null, null, null },
...@@ -101864,10 +104513,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101864,10 +104513,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101864 },104513 },
101865 .call_frame = .{ .alignment = .@"16" },104514 .call_frame = .{ .alignment = .@"16" },
101866 .extra_temps = .{104515 .extra_temps = .{
101867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104516 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101868 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104517 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101869 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },104518 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101870 .{ .type = .u32, .kind = .{ .reg = .eax } },104519 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101871 .unused,104520 .unused,
101872 .unused,104521 .unused,
101873 .unused,104522 .unused,
...@@ -101879,12 +104528,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101879,12 +104528,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101879 .dst_temps = .{ .mem, .unused },104528 .dst_temps = .{ .mem, .unused },
101880 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104529 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101881 .each = .{ .once = &.{104530 .each = .{ .once = &.{
101882 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104531 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101883 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104532 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101884 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104533 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101885 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },104534 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
101886 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104535 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101887 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104536 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101888 } },104537 } },
101889 }, .{104538 }, .{
101890 .required_features = .{ .@"64bit", .avx, null, null },104539 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -101894,7 +104543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101894,7 +104543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101894 .{ .src = .{ .to_mem, .none, .none } },104543 .{ .src = .{ .to_mem, .none, .none } },
101895 },104544 },
101896 .extra_temps = .{104545 .extra_temps = .{
101897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104546 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101898 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },104547 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101899 .unused,104548 .unused,
101900 .unused,104549 .unused,
...@@ -101909,11 +104558,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101909,11 +104558,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101909 .dst_temps = .{ .mem, .unused },104558 .dst_temps = .{ .mem, .unused },
101910 .clobbers = .{ .eflags = true },104559 .clobbers = .{ .eflags = true },
101911 .each = .{ .once = &.{104560 .each = .{ .once = &.{
101912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104561 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101913 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104562 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memi(.src0d, .tmp0), ._, ._ },
101914 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },104563 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp1q, ._, ._ },
101915 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104564 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104565 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101917 } },104566 } },
101918 }, .{104567 }, .{
101919 .required_features = .{ .@"64bit", .sse, null, null },104568 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -101923,7 +104572,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101923,7 +104572,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101923 .{ .src = .{ .to_mem, .none, .none } },104572 .{ .src = .{ .to_mem, .none, .none } },
101924 },104573 },
101925 .extra_temps = .{104574 .extra_temps = .{
101926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104575 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101927 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },104576 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101928 .unused,104577 .unused,
101929 .unused,104578 .unused,
...@@ -101938,11 +104587,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101938,11 +104587,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101938 .dst_temps = .{ .mem, .unused },104587 .dst_temps = .{ .mem, .unused },
101939 .clobbers = .{ .eflags = true },104588 .clobbers = .{ .eflags = true },
101940 .each = .{ .once = &.{104589 .each = .{ .once = &.{
101941 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104590 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101942 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104591 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memi(.src0d, .tmp0), ._, ._ },
101943 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },104592 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp1q, ._, ._ },
101944 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104593 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101945 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104594 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101946 } },104595 } },
101947 }, .{104596 }, .{
101948 .required_features = .{ .avx, null, null, null },104597 .required_features = .{ .avx, null, null, null },
...@@ -101953,10 +104602,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101953,10 +104602,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101953 },104602 },
101954 .call_frame = .{ .alignment = .@"16" },104603 .call_frame = .{ .alignment = .@"16" },
101955 .extra_temps = .{104604 .extra_temps = .{
101956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104605 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101957 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104606 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101958 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },104607 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
101959 .{ .type = .i64, .kind = .{ .reg = .rax } },104608 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101960 .unused,104609 .unused,
101961 .unused,104610 .unused,
101962 .unused,104611 .unused,
...@@ -101968,12 +104617,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101968,12 +104617,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101968 .dst_temps = .{ .mem, .unused },104617 .dst_temps = .{ .mem, .unused },
101969 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101970 .each = .{ .once = &.{104619 .each = .{ .once = &.{
101971 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104620 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
101972 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104621 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101973 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104622 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101974 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104623 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
101975 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104624 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104625 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101977 } },104626 } },
101978 }, .{104627 }, .{
101979 .required_features = .{ .avx, null, null, null },104628 .required_features = .{ .avx, null, null, null },
...@@ -101984,10 +104633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101984,10 +104633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101984 },104633 },
101985 .call_frame = .{ .alignment = .@"16" },104634 .call_frame = .{ .alignment = .@"16" },
101986 .extra_temps = .{104635 .extra_temps = .{
101987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104636 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101988 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104637 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101989 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },104638 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
101990 .{ .type = .u64, .kind = .{ .reg = .rax } },104639 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101991 .unused,104640 .unused,
101992 .unused,104641 .unused,
101993 .unused,104642 .unused,
...@@ -101999,12 +104648,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101999,12 +104648,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101999 .dst_temps = .{ .mem, .unused },104648 .dst_temps = .{ .mem, .unused },
102000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104649 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102001 .each = .{ .once = &.{104650 .each = .{ .once = &.{
102002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104651 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104652 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102004 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104653 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102005 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104654 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
102006 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104655 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104656 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102008 } },104657 } },
102009 }, .{104658 }, .{
102010 .required_features = .{ .sse, null, null, null },104659 .required_features = .{ .sse, null, null, null },
...@@ -102015,10 +104664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102015,10 +104664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102015 },104664 },
102016 .call_frame = .{ .alignment = .@"16" },104665 .call_frame = .{ .alignment = .@"16" },
102017 .extra_temps = .{104666 .extra_temps = .{
102018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104667 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104668 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102020 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },104669 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
102021 .{ .type = .i64, .kind = .{ .reg = .rax } },104670 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102022 .unused,104671 .unused,
102023 .unused,104672 .unused,
102024 .unused,104673 .unused,
...@@ -102030,12 +104679,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102030,12 +104679,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102030 .dst_temps = .{ .mem, .unused },104679 .dst_temps = .{ .mem, .unused },
102031 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104680 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102032 .each = .{ .once = &.{104681 .each = .{ .once = &.{
102033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104682 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102034 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104683 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102035 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104684 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102036 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104685 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
102037 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104686 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102038 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104687 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102039 } },104688 } },
102040 }, .{104689 }, .{
102041 .required_features = .{ .sse, null, null, null },104690 .required_features = .{ .sse, null, null, null },
...@@ -102046,10 +104695,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102046,10 +104695,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102046 },104695 },
102047 .call_frame = .{ .alignment = .@"16" },104696 .call_frame = .{ .alignment = .@"16" },
102048 .extra_temps = .{104697 .extra_temps = .{
102049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104698 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102050 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104699 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102051 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },104700 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
102052 .{ .type = .u64, .kind = .{ .reg = .rax } },104701 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102053 .unused,104702 .unused,
102054 .unused,104703 .unused,
102055 .unused,104704 .unused,
...@@ -102061,14 +104710,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102061,14 +104710,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102061 .dst_temps = .{ .mem, .unused },104710 .dst_temps = .{ .mem, .unused },
102062 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104711 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102063 .each = .{ .once = &.{104712 .each = .{ .once = &.{
102064 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104713 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102065 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104714 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102066 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104715 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102067 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104716 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
102068 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104717 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104718 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102070 } },104719 } },
102071 }, .{104720 }, .{
104721 .required_cc_abi = .sysv64,
102072 .required_features = .{ .avx, null, null, null },104722 .required_features = .{ .avx, null, null, null },
102073 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },104723 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102074 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },104724 .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 {...@@ -102077,11 +104727,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102077 },104727 },
102078 .call_frame = .{ .alignment = .@"16" },104728 .call_frame = .{ .alignment = .@"16" },
102079 .extra_temps = .{104729 .extra_temps = .{
102080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104730 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102081 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104731 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102082 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },104732 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102083 .{ .type = .u64, .kind = .{ .reg = .rax } },104733 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102084 .{ .type = .i64, .kind = .{ .reg = .rdx } },104734 .unused,
102085 .unused,104735 .unused,
102086 .unused,104736 .unused,
102087 .unused,104737 .unused,
...@@ -102092,15 +104742,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102092,15 +104742,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102092 .dst_temps = .{ .mem, .unused },104742 .dst_temps = .{ .mem, .unused },
102093 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104743 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102094 .each = .{ .once = &.{104744 .each = .{ .once = &.{
102095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104745 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102096 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104746 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102097 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104747 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102098 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104748 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
102099 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },104749 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
102100 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104750 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104751 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102102 } },104752 } },
102103 }, .{104753 }, .{
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,
102104 .required_features = .{ .avx, null, null, null },104787 .required_features = .{ .avx, null, null, null },
102105 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },104788 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102106 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },104789 .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 {...@@ -102109,11 +104792,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102109 },104792 },
102110 .call_frame = .{ .alignment = .@"16" },104793 .call_frame = .{ .alignment = .@"16" },
102111 .extra_temps = .{104794 .extra_temps = .{
102112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104795 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102113 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104796 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102114 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },104797 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102115 .{ .type = .u64, .kind = .{ .reg = .rax } },104798 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102116 .{ .type = .u64, .kind = .{ .reg = .rdx } },104799 .unused,
102117 .unused,104800 .unused,
102118 .unused,104801 .unused,
102119 .unused,104802 .unused,
...@@ -102124,15 +104807,112 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102124,15 +104807,112 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102124 .dst_temps = .{ .mem, .unused },104807 .dst_temps = .{ .mem, .unused },
102125 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104808 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102126 .each = .{ .once = &.{104809 .each = .{ .once = &.{
102127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104810 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102128 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104811 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102129 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104812 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102130 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104813 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
102131 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },104814 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
102132 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104815 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102133 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
102134 } },104913 } },
102135 }, .{104914 }, .{
104915 .required_cc_abi = .sysv64,
102136 .required_features = .{ .sse, null, null, null },104916 .required_features = .{ .sse, null, null, null },
102137 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },104917 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102138 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },104918 .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 {...@@ -102141,11 +104921,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102141 },104921 },
102142 .call_frame = .{ .alignment = .@"16" },104922 .call_frame = .{ .alignment = .@"16" },
102143 .extra_temps = .{104923 .extra_temps = .{
102144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104924 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102145 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104925 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102146 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },104926 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102147 .{ .type = .u64, .kind = .{ .reg = .rax } },104927 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102148 .{ .type = .i64, .kind = .{ .reg = .rdx } },104928 .unused,
102149 .unused,104929 .unused,
102150 .unused,104930 .unused,
102151 .unused,104931 .unused,
...@@ -102156,15 +104936,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102156,15 +104936,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102156 .dst_temps = .{ .mem, .unused },104936 .dst_temps = .{ .mem, .unused },
102157 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104937 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102158 .each = .{ .once = &.{104938 .each = .{ .once = &.{
102159 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },104939 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102160 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },104940 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102161 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104941 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102162 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },104942 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
102163 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },104943 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
102164 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104944 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104945 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102166 } },104946 } },
102167 }, .{104947 }, .{
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,
102168 .required_features = .{ .sse, null, null, null },104981 .required_features = .{ .sse, null, null, null },
102169 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },104982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102170 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },104983 .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 {...@@ -102173,11 +104986,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102173 },104986 },
102174 .call_frame = .{ .alignment = .@"16" },104987 .call_frame = .{ .alignment = .@"16" },
102175 .extra_temps = .{104988 .extra_temps = .{
102176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104989 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102177 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },104990 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102178 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },104991 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102179 .{ .type = .u64, .kind = .{ .reg = .rax } },104992 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102180 .{ .type = .u64, .kind = .{ .reg = .rdx } },104993 .unused,
102181 .unused,104994 .unused,
102182 .unused,104995 .unused,
102183 .unused,104996 .unused,
...@@ -102188,13 +105001,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102188,13 +105001,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102188 .dst_temps = .{ .mem, .unused },105001 .dst_temps = .{ .mem, .unused },
102189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105002 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102190 .each = .{ .once = &.{105003 .each = .{ .once = &.{
102191 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105004 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102192 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },105005 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102193 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105006 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102194 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105007 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
102195 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },105008 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
102196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105009 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
102198 } },105043 } },
102199 }, .{105044 }, .{
102200 .required_features = .{ .@"64bit", .avx, null, null },105045 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -102205,11 +105050,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102205,11 +105050,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102205 },105050 },
102206 .call_frame = .{ .alignment = .@"16" },105051 .call_frame = .{ .alignment = .@"16" },
102207 .extra_temps = .{105052 .extra_temps = .{
102208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102209 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105054 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102210 .{ .type = .usize, .kind = .{ .reg = .rdi } },105055 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102211 .{ .type = .usize, .kind = .{ .reg = .rsi } },105056 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102212 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },105057 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102213 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },105058 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102214 .unused,105059 .unused,
102215 .unused,105060 .unused,
...@@ -102220,15 +105065,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102220,15 +105065,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102220 .dst_temps = .{ .mem, .unused },105065 .dst_temps = .{ .mem, .unused },
102221 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102222 .each = .{ .once = &.{105067 .each = .{ .once = &.{
102223 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105068 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102224 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105069 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102225 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105070 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102226 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105071 .{ ._, ._, .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), ._, ._ },
102228 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },105073 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102229 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },105074 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
102230 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105075 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105076 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102232 } },105077 } },
102233 }, .{105078 }, .{
102234 .required_features = .{ .@"64bit", .avx, null, null },105079 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -102239,11 +105084,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102239,11 +105084,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102239 },105084 },
102240 .call_frame = .{ .alignment = .@"16" },105085 .call_frame = .{ .alignment = .@"16" },
102241 .extra_temps = .{105086 .extra_temps = .{
102242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105087 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102243 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105088 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102244 .{ .type = .usize, .kind = .{ .reg = .rdi } },105089 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102245 .{ .type = .usize, .kind = .{ .reg = .rsi } },105090 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102246 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },105091 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102247 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },105092 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102248 .unused,105093 .unused,
102249 .unused,105094 .unused,
...@@ -102254,15 +105099,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102254,15 +105099,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102254 .dst_temps = .{ .mem, .unused },105099 .dst_temps = .{ .mem, .unused },
102255 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105100 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102256 .each = .{ .once = &.{105101 .each = .{ .once = &.{
102257 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105102 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102258 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105103 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102259 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105104 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102260 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105105 .{ ._, ._, .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), ._, ._ },
102262 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },105107 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102263 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },105108 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
102264 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105109 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102265 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105110 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102266 } },105111 } },
102267 }, .{105112 }, .{
102268 .required_features = .{ .@"64bit", .sse, null, null },105113 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -102273,11 +105118,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102273,11 +105118,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102273 },105118 },
102274 .call_frame = .{ .alignment = .@"16" },105119 .call_frame = .{ .alignment = .@"16" },
102275 .extra_temps = .{105120 .extra_temps = .{
102276 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105121 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102277 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102278 .{ .type = .usize, .kind = .{ .reg = .rdi } },105123 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102279 .{ .type = .usize, .kind = .{ .reg = .rsi } },105124 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },105125 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102281 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },105126 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102282 .unused,105127 .unused,
102283 .unused,105128 .unused,
...@@ -102288,15 +105133,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102288,15 +105133,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102288 .dst_temps = .{ .mem, .unused },105133 .dst_temps = .{ .mem, .unused },
102289 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102290 .each = .{ .once = &.{105135 .each = .{ .once = &.{
102291 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105136 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102292 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105137 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102293 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105138 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102294 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105139 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
102295 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },105140 .{ ._, ._ss, .mov, .tmp4x, .memi(.src0d, .tmp0), ._, ._ },
102296 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },105141 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102297 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },105142 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
102298 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105143 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105144 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102300 } },105145 } },
102301 }, .{105146 }, .{
102302 .required_features = .{ .@"64bit", .sse, null, null },105147 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -102307,11 +105152,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102307,11 +105152,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102307 },105152 },
102308 .call_frame = .{ .alignment = .@"16" },105153 .call_frame = .{ .alignment = .@"16" },
102309 .extra_temps = .{105154 .extra_temps = .{
102310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105155 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102311 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105156 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102312 .{ .type = .usize, .kind = .{ .reg = .rdi } },105157 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102313 .{ .type = .usize, .kind = .{ .reg = .rsi } },105158 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102314 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },105159 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102315 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },105160 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102316 .unused,105161 .unused,
102317 .unused,105162 .unused,
...@@ -102322,15 +105167,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102322,15 +105167,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102322 .dst_temps = .{ .mem, .unused },105167 .dst_temps = .{ .mem, .unused },
102323 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105168 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102324 .each = .{ .once = &.{105169 .each = .{ .once = &.{
102325 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105170 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
102326 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105171 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102327 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105172 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102328 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105173 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
102329 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },105174 .{ ._, ._ss, .mov, .tmp4x, .memi(.src0d, .tmp0), ._, ._ },
102330 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },105175 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102331 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },105176 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
102332 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105177 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102333 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102334 } },105179 } },
102335 }, .{105180 }, .{
102336 .required_features = .{ .avx, null, null, null },105181 .required_features = .{ .avx, null, null, null },
...@@ -102643,11 +105488,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102643,11 +105488,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102643 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },105488 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },
102644 } },105489 } },
102645 }, .{105490 }, .{
102646 .required_features = .{ .@"64bit", .sse, null, null },105491 .required_cc_abi = .sysv64,
105492 .required_features = .{ .sse, null, null, null },
102647 .src_constraints = .{ .{ .float = .qword }, .any, .any },105493 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102648 .dst_constraints = .{ .{ .signed_int = .xword }, .any },105494 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102649 .patterns = &.{105495 .patterns = &.{
102650 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },105496 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
102651 },105497 },
102652 .call_frame = .{ .alignment = .@"16" },105498 .call_frame = .{ .alignment = .@"16" },
102653 .extra_temps = .{105499 .extra_temps = .{
...@@ -102663,17 +105509,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102663,17 +105509,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102663 .unused,105509 .unused,
102664 .unused,105510 .unused,
102665 },105511 },
102666 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },105512 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
102667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105513 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102668 .each = .{ .once = &.{105514 .each = .{ .once = &.{
102669 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },105515 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
102670 } },105516 } },
102671 }, .{105517 }, .{
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 },
102673 .src_constraints = .{ .{ .float = .qword }, .any, .any },105547 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102674 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },105548 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102675 .patterns = &.{105549 .patterns = &.{
102676 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },105550 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
102677 },105551 },
102678 .call_frame = .{ .alignment = .@"16" },105552 .call_frame = .{ .alignment = .@"16" },
102679 .extra_temps = .{105553 .extra_temps = .{
...@@ -102689,7 +105563,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102689,7 +105563,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102689 .unused,105563 .unused,
102690 .unused,105564 .unused,
102691 },105565 },
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 },
102693 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102694 .each = .{ .once = &.{105595 .each = .{ .once = &.{
102695 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },105596 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -102699,12 +105600,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102699,12 +105600,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102699 .src_constraints = .{ .{ .float = .qword }, .any, .any },105600 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102700 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },105601 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102701 .patterns = &.{105602 .patterns = &.{
102702 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },105603 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
102703 },105604 },
102704 .call_frame = .{ .alignment = .@"16" },105605 .call_frame = .{ .alignment = .@"16" },
102705 .extra_temps = .{105606 .extra_temps = .{
102706 .{ .type = .usize, .kind = .{ .reg = .rdi } },105607 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102707 .{ .type = .usize, .kind = .{ .reg = .rsi } },105608 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102708 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },105609 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
102709 .unused,105610 .unused,
102710 .unused,105611 .unused,
...@@ -102727,12 +105628,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102727,12 +105628,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102727 .src_constraints = .{ .{ .float = .qword }, .any, .any },105628 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102728 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105629 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102729 .patterns = &.{105630 .patterns = &.{
102730 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },105631 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
102731 },105632 },
102732 .call_frame = .{ .alignment = .@"16" },105633 .call_frame = .{ .alignment = .@"16" },
102733 .extra_temps = .{105634 .extra_temps = .{
102734 .{ .type = .usize, .kind = .{ .reg = .rdi } },105635 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102735 .{ .type = .usize, .kind = .{ .reg = .rsi } },105636 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102736 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },105637 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
102737 .unused,105638 .unused,
102738 .unused,105639 .unused,
...@@ -102839,7 +105740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102839,7 +105740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102839 .{ .src = .{ .to_mem, .none, .none } },105740 .{ .src = .{ .to_mem, .none, .none } },
102840 },105741 },
102841 .extra_temps = .{105742 .extra_temps = .{
102842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102843 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },105744 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102844 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },105745 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
102845 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },105746 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -102856,22 +105757,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102856,22 +105757,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102856 .each = .{ .once = &.{105757 .each = .{ .once = &.{
102857 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },105758 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102858 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },105759 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102859 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105760 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
102860 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsia(.src0y, .@"8", .tmp0, .add_unaligned_size), ._, ._ },105761 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsi(.src0y, .@"8", .tmp0), ._, ._ },
102861 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },105762 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
102862 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },105763 .{ ._, .v_d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
102863 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105764 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
102864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105765 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102865 } },105766 } },
102866 }, .{105767 }, .{
102867 .required_features = .{ .ssse3, null, null, null },105768 .required_features = .{ .sse4_1, null, null, null },
102868 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },105769 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102869 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },105770 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
102870 .patterns = &.{105771 .patterns = &.{
102871 .{ .src = .{ .to_mem, .none, .none } },105772 .{ .src = .{ .to_mem, .none, .none } },
102872 },105773 },
102873 .extra_temps = .{105774 .extra_temps = .{
102874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102875 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },105776 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102876 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },105777 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
102877 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },105778 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
...@@ -102888,12 +105789,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102888,12 +105789,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102888 .each = .{ .once = &.{105789 .each = .{ .once = &.{
102889 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },105790 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102890 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },105791 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102891 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105792 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_size), ._, ._ },
102892 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },105793 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
102893 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },105794 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
102894 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },105795 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
102895 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },105796 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102896 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
102897 } },105831 } },
102898 }, .{105832 }, .{
102899 .required_features = .{ .sse2, .slow_incdec, null, null },105833 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -102903,7 +105837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102903,7 +105837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102903 .{ .src = .{ .to_mem, .none, .none } },105837 .{ .src = .{ .to_mem, .none, .none } },
102904 },105838 },
102905 .extra_temps = .{105839 .extra_temps = .{
102906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105840 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102907 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },105841 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
102908 .unused,105842 .unused,
102909 .unused,105843 .unused,
...@@ -102918,11 +105852,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102918,11 +105852,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102918 .dst_temps = .{ .mem, .unused },105852 .dst_temps = .{ .mem, .unused },
102919 .clobbers = .{ .eflags = true },105853 .clobbers = .{ .eflags = true },
102920 .each = .{ .once = &.{105854 .each = .{ .once = &.{
102921 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105855 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
102922 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },105856 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
102923 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },105857 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
102924 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },105858 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
102925 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105859 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102926 } },105860 } },
102927 }, .{105861 }, .{
102928 .required_features = .{ .sse2, null, null, null },105862 .required_features = .{ .sse2, null, null, null },
...@@ -102932,7 +105866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102932,7 +105866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102932 .{ .src = .{ .to_mem, .none, .none } },105866 .{ .src = .{ .to_mem, .none, .none } },
102933 },105867 },
102934 .extra_temps = .{105868 .extra_temps = .{
102935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105869 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102936 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },105870 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
102937 .unused,105871 .unused,
102938 .unused,105872 .unused,
...@@ -102947,11 +105881,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102947,11 +105881,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102947 .dst_temps = .{ .mem, .unused },105881 .dst_temps = .{ .mem, .unused },
102948 .clobbers = .{ .eflags = true },105882 .clobbers = .{ .eflags = true },
102949 .each = .{ .once = &.{105883 .each = .{ .once = &.{
102950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105884 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
102951 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },105885 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
102952 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },105886 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
102953 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },105887 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
102954 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105888 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
102955 } },105889 } },
102956 }, .{105890 }, .{
102957 .required_features = .{ .x87, .slow_incdec, null, null },105891 .required_features = .{ .x87, .slow_incdec, null, null },
...@@ -102961,7 +105895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102961,7 +105895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102961 .{ .src = .{ .to_mem, .none, .none } },105895 .{ .src = .{ .to_mem, .none, .none } },
102962 },105896 },
102963 .extra_temps = .{105897 .extra_temps = .{
102964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105898 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102965 .{ .type = .u16, .kind = .mem },105899 .{ .type = .u16, .kind = .mem },
102966 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },105900 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
102967 .{ .type = .f64, .kind = .{ .reg = .st7 } },105901 .{ .type = .f64, .kind = .{ .reg = .st7 } },
...@@ -102976,18 +105910,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102976,18 +105910,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102976 .dst_temps = .{ .mem, .unused },105910 .dst_temps = .{ .mem, .unused },
102977 .clobbers = .{ .eflags = true },105911 .clobbers = .{ .eflags = true },
102978 .each = .{ .once = &.{105912 .each = .{ .once = &.{
102979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105913 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
102980 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },105914 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
102981 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },105915 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
102982 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },105916 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
102983 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },105917 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102984 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },105918 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
102985 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },105919 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"8", .tmp0), ._, ._, ._ },
102986 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },105920 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },
102987 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },105921 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },
102988 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },105922 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp2b, ._, ._ },
102989 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },105923 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
102990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105924 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102991 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },105925 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102992 } },105926 } },
102993 }, .{105927 }, .{
...@@ -102998,7 +105932,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102998,7 +105932,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102998 .{ .src = .{ .to_mem, .none, .none } },105932 .{ .src = .{ .to_mem, .none, .none } },
102999 },105933 },
103000 .extra_temps = .{105934 .extra_temps = .{
103001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103002 .{ .type = .u16, .kind = .mem },105936 .{ .type = .u16, .kind = .mem },
103003 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },105937 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
103004 .{ .type = .f64, .kind = .{ .reg = .st7 } },105938 .{ .type = .f64, .kind = .{ .reg = .st7 } },
...@@ -103013,18 +105947,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103013,18 +105947,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103013 .dst_temps = .{ .mem, .unused },105947 .dst_temps = .{ .mem, .unused },
103014 .clobbers = .{ .eflags = true },105948 .clobbers = .{ .eflags = true },
103015 .each = .{ .once = &.{105949 .each = .{ .once = &.{
103016 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105950 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103017 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },105951 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103018 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },105952 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103019 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },105953 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103020 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },105954 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103021 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },105955 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103022 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },105956 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"8", .tmp0), ._, ._, ._ },
103023 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },105957 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },
103024 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },105958 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },
103025 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },105959 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp2b, ._, ._ },
103026 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },105960 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
103027 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },105961 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103028 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },105962 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103029 } },105963 } },
103030 }, .{105964 }, .{
...@@ -103036,10 +105970,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103036,10 +105970,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103036 },105970 },
103037 .call_frame = .{ .alignment = .@"16" },105971 .call_frame = .{ .alignment = .@"16" },
103038 .extra_temps = .{105972 .extra_temps = .{
103039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105973 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103040 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105974 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103041 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },105975 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103042 .{ .type = .i32, .kind = .{ .reg = .eax } },105976 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103043 .unused,105977 .unused,
103044 .unused,105978 .unused,
103045 .unused,105979 .unused,
...@@ -103051,12 +105985,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103051,12 +105985,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103051 .dst_temps = .{ .mem, .unused },105985 .dst_temps = .{ .mem, .unused },
103052 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105986 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103053 .each = .{ .once = &.{105987 .each = .{ .once = &.{
103054 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105988 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103055 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },105989 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103056 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105990 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103057 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },105991 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
103058 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },105992 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
103059 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105993 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103060 } },105994 } },
103061 }, .{105995 }, .{
103062 .required_features = .{ .avx, null, null, null },105996 .required_features = .{ .avx, null, null, null },
...@@ -103067,10 +106001,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103067,10 +106001,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103067 },106001 },
103068 .call_frame = .{ .alignment = .@"16" },106002 .call_frame = .{ .alignment = .@"16" },
103069 .extra_temps = .{106003 .extra_temps = .{
103070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106004 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103071 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106005 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103072 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106006 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103073 .{ .type = .i32, .kind = .{ .reg = .eax } },106007 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103074 .unused,106008 .unused,
103075 .unused,106009 .unused,
103076 .unused,106010 .unused,
...@@ -103082,12 +106016,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103082,12 +106016,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103082 .dst_temps = .{ .mem, .unused },106016 .dst_temps = .{ .mem, .unused },
103083 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106017 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103084 .each = .{ .once = &.{106018 .each = .{ .once = &.{
103085 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106019 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103086 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },106020 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103087 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106021 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103088 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },106022 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
103089 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },106023 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
103090 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },106024 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103091 } },106025 } },
103092 }, .{106026 }, .{
103093 .required_features = .{ .sse2, .slow_incdec, null, null },106027 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -103098,10 +106032,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103098,10 +106032,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103098 },106032 },
103099 .call_frame = .{ .alignment = .@"16" },106033 .call_frame = .{ .alignment = .@"16" },
103100 .extra_temps = .{106034 .extra_temps = .{
103101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106035 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103102 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106036 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103103 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106037 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103104 .{ .type = .i32, .kind = .{ .reg = .eax } },106038 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103105 .unused,106039 .unused,
103106 .unused,106040 .unused,
103107 .unused,106041 .unused,
...@@ -103113,12 +106047,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103113,12 +106047,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103113 .dst_temps = .{ .mem, .unused },106047 .dst_temps = .{ .mem, .unused },
103114 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103115 .each = .{ .once = &.{106049 .each = .{ .once = &.{
103116 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106050 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103117 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },106051 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103118 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103119 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },106053 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
103120 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },106054 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
103121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106055 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103122 } },106056 } },
103123 }, .{106057 }, .{
103124 .required_features = .{ .sse2, null, null, null },106058 .required_features = .{ .sse2, null, null, null },
...@@ -103129,10 +106063,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103129,10 +106063,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103129 },106063 },
103130 .call_frame = .{ .alignment = .@"16" },106064 .call_frame = .{ .alignment = .@"16" },
103131 .extra_temps = .{106065 .extra_temps = .{
103132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106067 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103134 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },106068 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103135 .{ .type = .i32, .kind = .{ .reg = .eax } },106069 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103136 .unused,106070 .unused,
103137 .unused,106071 .unused,
103138 .unused,106072 .unused,
...@@ -103144,12 +106078,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103144,12 +106078,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103144 .dst_temps = .{ .mem, .unused },106078 .dst_temps = .{ .mem, .unused },
103145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106079 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103146 .each = .{ .once = &.{106080 .each = .{ .once = &.{
103147 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106081 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103148 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },106082 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103149 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106083 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103150 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },106084 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
103151 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },106085 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
103152 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },106086 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103153 } },106087 } },
103154 }, .{106088 }, .{
103155 .required_features = .{ .sse, .slow_incdec, null, null },106089 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -103160,10 +106094,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103160,10 +106094,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103160 },106094 },
103161 .call_frame = .{ .alignment = .@"16" },106095 .call_frame = .{ .alignment = .@"16" },
103162 .extra_temps = .{106096 .extra_temps = .{
103163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106097 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103164 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106098 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103165 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106099 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103166 .{ .type = .i32, .kind = .{ .reg = .eax } },106100 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103167 .unused,106101 .unused,
103168 .unused,106102 .unused,
103169 .unused,106103 .unused,
...@@ -103175,13 +106109,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103175,13 +106109,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103175 .dst_temps = .{ .mem, .unused },106109 .dst_temps = .{ .mem, .unused },
103176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106110 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103177 .each = .{ .once = &.{106111 .each = .{ .once = &.{
103178 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106112 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103179 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },106113 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103180 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },106114 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103181 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103182 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },106116 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
103183 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },106117 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
103184 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106118 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103185 } },106119 } },
103186 }, .{106120 }, .{
103187 .required_features = .{ .sse, null, null, null },106121 .required_features = .{ .sse, null, null, null },
...@@ -103192,10 +106126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103192,10 +106126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103192 },106126 },
103193 .call_frame = .{ .alignment = .@"16" },106127 .call_frame = .{ .alignment = .@"16" },
103194 .extra_temps = .{106128 .extra_temps = .{
103195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103196 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106130 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103197 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },106131 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103198 .{ .type = .i32, .kind = .{ .reg = .eax } },106132 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103199 .unused,106133 .unused,
103200 .unused,106134 .unused,
103201 .unused,106135 .unused,
...@@ -103207,13 +106141,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103207,13 +106141,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103207 .dst_temps = .{ .mem, .unused },106141 .dst_temps = .{ .mem, .unused },
103208 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103209 .each = .{ .once = &.{106143 .each = .{ .once = &.{
103210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106144 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103211 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },106145 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103212 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },106146 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103213 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103214 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },106148 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
103215 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },106149 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
103216 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },106150 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103217 } },106151 } },
103218 }, .{106152 }, .{
103219 .required_features = .{ .avx, null, null, null },106153 .required_features = .{ .avx, null, null, null },
...@@ -103301,7 +106235,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103301,7 +106235,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103301 .{ .src = .{ .to_mem, .none, .none } },106235 .{ .src = .{ .to_mem, .none, .none } },
103302 },106236 },
103303 .extra_temps = .{106237 .extra_temps = .{
103304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106238 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103305 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },106239 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
103306 .unused,106240 .unused,
103307 .unused,106241 .unused,
...@@ -103316,12 +106250,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103316,12 +106250,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103316 .dst_temps = .{ .mem, .unused },106250 .dst_temps = .{ .mem, .unused },
103317 .clobbers = .{ .eflags = true },106251 .clobbers = .{ .eflags = true },
103318 .each = .{ .once = &.{106252 .each = .{ .once = &.{
103319 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106253 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
103320 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106254 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsi(.src0y, .@"4", .tmp0), ._, ._ },
103321 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },106255 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
103322 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },106256 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
103323 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106257 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
103324 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106258 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103325 } },106259 } },
103326 }, .{106260 }, .{
103327 .required_features = .{ .sse2, null, null, null },106261 .required_features = .{ .sse2, null, null, null },
...@@ -103331,7 +106265,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103331,7 +106265,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103331 .{ .src = .{ .to_mem, .none, .none } },106265 .{ .src = .{ .to_mem, .none, .none } },
103332 },106266 },
103333 .extra_temps = .{106267 .extra_temps = .{
103334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103335 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },106269 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
103336 .unused,106270 .unused,
103337 .unused,106271 .unused,
...@@ -103346,12 +106280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103346,12 +106280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103346 .dst_temps = .{ .mem, .unused },106280 .dst_temps = .{ .mem, .unused },
103347 .clobbers = .{ .eflags = true },106281 .clobbers = .{ .eflags = true },
103348 .each = .{ .once = &.{106282 .each = .{ .once = &.{
103349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106283 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
103350 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106284 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
103351 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },106285 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
103352 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },106286 .{ ._, ._d, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
103353 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106287 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106288 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103355 } },106289 } },
103356 }, .{106290 }, .{
103357 .required_features = .{ .avx, null, null, null },106291 .required_features = .{ .avx, null, null, null },
...@@ -103361,7 +106295,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103361,7 +106295,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103361 .{ .src = .{ .to_mem, .none, .none } },106295 .{ .src = .{ .to_mem, .none, .none } },
103362 },106296 },
103363 .extra_temps = .{106297 .extra_temps = .{
103364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106298 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103365 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },106299 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
103366 .unused,106300 .unused,
103367 .unused,106301 .unused,
...@@ -103376,12 +106310,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103376,12 +106310,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103376 .dst_temps = .{ .mem, .unused },106310 .dst_temps = .{ .mem, .unused },
103377 .clobbers = .{ .eflags = true },106311 .clobbers = .{ .eflags = true },
103378 .each = .{ .once = &.{106312 .each = .{ .once = &.{
103379 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106313 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
103380 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106314 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsi(.src0y, .@"4", .tmp0), ._, ._ },
103381 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },106315 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
103382 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },106316 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
103383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106317 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
103384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106318 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103385 } },106319 } },
103386 }, .{106320 }, .{
103387 .required_features = .{ .sse4_1, null, null, null },106321 .required_features = .{ .sse4_1, null, null, null },
...@@ -103391,7 +106325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103391,7 +106325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103391 .{ .src = .{ .to_mem, .none, .none } },106325 .{ .src = .{ .to_mem, .none, .none } },
103392 },106326 },
103393 .extra_temps = .{106327 .extra_temps = .{
103394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106328 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103395 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },106329 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
103396 .unused,106330 .unused,
103397 .unused,106331 .unused,
...@@ -103406,12 +106340,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103406,12 +106340,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103406 .dst_temps = .{ .mem, .unused },106340 .dst_temps = .{ .mem, .unused },
103407 .clobbers = .{ .eflags = true },106341 .clobbers = .{ .eflags = true },
103408 .each = .{ .once = &.{106342 .each = .{ .once = &.{
103409 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106343 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
103410 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106344 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
103411 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },106345 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
103412 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },106346 .{ ._, ._d, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
103413 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106347 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103414 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106348 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103415 } },106349 } },
103416 }, .{106350 }, .{
103417 .required_features = .{ .sse2, null, null, null },106351 .required_features = .{ .sse2, null, null, null },
...@@ -103421,7 +106355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103421,7 +106355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103421 .{ .src = .{ .to_mem, .none, .none } },106355 .{ .src = .{ .to_mem, .none, .none } },
103422 },106356 },
103423 .extra_temps = .{106357 .extra_temps = .{
103424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106358 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103425 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },106359 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
103426 .unused,106360 .unused,
103427 .unused,106361 .unused,
...@@ -103436,11 +106370,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103436,11 +106370,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103436 .dst_temps = .{ .mem, .unused },106370 .dst_temps = .{ .mem, .unused },
103437 .clobbers = .{ .eflags = true },106371 .clobbers = .{ .eflags = true },
103438 .each = .{ .once = &.{106372 .each = .{ .once = &.{
103439 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106373 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103440 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106374 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103441 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },106375 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
103442 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106376 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106377 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103444 } },106378 } },
103445 }, .{106379 }, .{
103446 .required_features = .{ .x87, null, null, null },106380 .required_features = .{ .x87, null, null, null },
...@@ -103450,7 +106384,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103450,7 +106384,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103450 .{ .src = .{ .to_mem, .none, .none } },106384 .{ .src = .{ .to_mem, .none, .none } },
103451 },106385 },
103452 .extra_temps = .{106386 .extra_temps = .{
103453 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106387 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103454 .{ .type = .u16, .kind = .mem },106388 .{ .type = .u16, .kind = .mem },
103455 .{ .type = .f64, .kind = .{ .reg = .st7 } },106389 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103456 .unused,106390 .unused,
...@@ -103470,11 +106404,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103470,11 +106404,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103470 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },106404 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103471 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106405 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103472 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },106406 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
103473 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106407 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103474 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },106408 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"4", .tmp0), ._, ._, ._ },
103475 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },106409 .{ ._, .fi_p, .st, .memi(.dst0w, .tmp0), ._, ._, ._ },
103476 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106410 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106411 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103478 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106412 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103479 } },106413 } },
103480 }, .{106414 }, .{
...@@ -103485,7 +106419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103485,7 +106419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103485 .{ .src = .{ .to_mem, .none, .none } },106419 .{ .src = .{ .to_mem, .none, .none } },
103486 },106420 },
103487 .extra_temps = .{106421 .extra_temps = .{
103488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106422 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103489 .{ .type = .u16, .kind = .mem },106423 .{ .type = .u16, .kind = .mem },
103490 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },106424 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
103491 .{ .type = .f64, .kind = .{ .reg = .st7 } },106425 .{ .type = .f64, .kind = .{ .reg = .st7 } },
...@@ -103500,18 +106434,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103500,18 +106434,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103500 .dst_temps = .{ .mem, .unused },106434 .dst_temps = .{ .mem, .unused },
103501 .clobbers = .{ .eflags = true },106435 .clobbers = .{ .eflags = true },
103502 .each = .{ .once = &.{106436 .each = .{ .once = &.{
103503 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106437 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103504 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },106438 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103505 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },106439 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103506 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },106440 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103507 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106441 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103508 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },106442 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103509 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },106443 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"4", .tmp0), ._, ._, ._ },
103510 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },106444 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },
103511 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },106445 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
103512 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },106446 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp2w, ._, ._ },
103513 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106447 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103514 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106448 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103515 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106449 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103516 } },106450 } },
103517 }, .{106451 }, .{
...@@ -103523,10 +106457,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103523,10 +106457,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103523 },106457 },
103524 .call_frame = .{ .alignment = .@"16" },106458 .call_frame = .{ .alignment = .@"16" },
103525 .extra_temps = .{106459 .extra_temps = .{
103526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106460 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103527 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106461 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103528 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106462 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103529 .{ .type = .i32, .kind = .{ .reg = .eax } },106463 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103530 .unused,106464 .unused,
103531 .unused,106465 .unused,
103532 .unused,106466 .unused,
...@@ -103538,12 +106472,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103538,12 +106472,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103538 .dst_temps = .{ .mem, .unused },106472 .dst_temps = .{ .mem, .unused },
103539 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103540 .each = .{ .once = &.{106474 .each = .{ .once = &.{
103541 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106475 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103542 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106476 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103543 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106477 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103544 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },106478 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
103545 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106479 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106480 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103547 } },106481 } },
103548 }, .{106482 }, .{
103549 .required_features = .{ .sse2, null, null, null },106483 .required_features = .{ .sse2, null, null, null },
...@@ -103554,10 +106488,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103554,10 +106488,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103554 },106488 },
103555 .call_frame = .{ .alignment = .@"16" },106489 .call_frame = .{ .alignment = .@"16" },
103556 .extra_temps = .{106490 .extra_temps = .{
103557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106491 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103558 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106492 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103559 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106493 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103560 .{ .type = .i32, .kind = .{ .reg = .eax } },106494 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103561 .unused,106495 .unused,
103562 .unused,106496 .unused,
103563 .unused,106497 .unused,
...@@ -103569,12 +106503,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103569,12 +106503,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103569 .dst_temps = .{ .mem, .unused },106503 .dst_temps = .{ .mem, .unused },
103570 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103571 .each = .{ .once = &.{106505 .each = .{ .once = &.{
103572 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106506 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103573 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106507 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103574 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103575 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },106509 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
103576 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106510 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103577 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106511 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103578 } },106512 } },
103579 }, .{106513 }, .{
103580 .required_features = .{ .sse, null, null, null },106514 .required_features = .{ .sse, null, null, null },
...@@ -103585,10 +106519,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103585,10 +106519,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103585 },106519 },
103586 .call_frame = .{ .alignment = .@"16" },106520 .call_frame = .{ .alignment = .@"16" },
103587 .extra_temps = .{106521 .extra_temps = .{
103588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106523 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103590 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106524 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103591 .{ .type = .i32, .kind = .{ .reg = .eax } },106525 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103592 .unused,106526 .unused,
103593 .unused,106527 .unused,
103594 .unused,106528 .unused,
...@@ -103600,13 +106534,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103600,13 +106534,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103600 .dst_temps = .{ .mem, .unused },106534 .dst_temps = .{ .mem, .unused },
103601 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103602 .each = .{ .once = &.{106536 .each = .{ .once = &.{
103603 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106537 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103604 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },106538 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103605 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },106539 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103606 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106540 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103607 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },106541 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
103608 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106542 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106543 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103610 } },106544 } },
103611 }, .{106545 }, .{
103612 .required_features = .{ .avx, null, null, null },106546 .required_features = .{ .avx, null, null, null },
...@@ -103652,7 +106586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103652,7 +106586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103652 .{ .src = .{ .to_mem, .none, .none } },106586 .{ .src = .{ .to_mem, .none, .none } },
103653 },106587 },
103654 .extra_temps = .{106588 .extra_temps = .{
103655 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106589 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103656 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },106590 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
103657 .unused,106591 .unused,
103658 .unused,106592 .unused,
...@@ -103667,11 +106601,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103667,11 +106601,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103667 .dst_temps = .{ .mem, .unused },106601 .dst_temps = .{ .mem, .unused },
103668 .clobbers = .{ .eflags = true },106602 .clobbers = .{ .eflags = true },
103669 .each = .{ .once = &.{106603 .each = .{ .once = &.{
103670 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106604 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
103671 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106605 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
103672 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },106606 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
103673 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },106607 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
103674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106608 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103675 } },106609 } },
103676 }, .{106610 }, .{
103677 .required_features = .{ .sse2, null, null, null },106611 .required_features = .{ .sse2, null, null, null },
...@@ -103681,7 +106615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103681,7 +106615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103681 .{ .src = .{ .to_mem, .none, .none } },106615 .{ .src = .{ .to_mem, .none, .none } },
103682 },106616 },
103683 .extra_temps = .{106617 .extra_temps = .{
103684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106618 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103685 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },106619 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
103686 .unused,106620 .unused,
103687 .unused,106621 .unused,
...@@ -103696,11 +106630,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103696,11 +106630,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103696 .dst_temps = .{ .mem, .unused },106630 .dst_temps = .{ .mem, .unused },
103697 .clobbers = .{ .eflags = true },106631 .clobbers = .{ .eflags = true },
103698 .each = .{ .once = &.{106632 .each = .{ .once = &.{
103699 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106633 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
103700 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106634 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
103701 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },106635 .{ ._, ._q, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ },
103702 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106636 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
103703 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106637 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103704 } },106638 } },
103705 }, .{106639 }, .{
103706 .required_features = .{ .x87, null, null, null },106640 .required_features = .{ .x87, null, null, null },
...@@ -103710,7 +106644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103710,7 +106644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103710 .{ .src = .{ .to_mem, .none, .none } },106644 .{ .src = .{ .to_mem, .none, .none } },
103711 },106645 },
103712 .extra_temps = .{106646 .extra_temps = .{
103713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103714 .{ .type = .u16, .kind = .mem },106648 .{ .type = .u16, .kind = .mem },
103715 .{ .type = .f64, .kind = .{ .reg = .st7 } },106649 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103716 .unused,106650 .unused,
...@@ -103730,11 +106664,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103730,11 +106664,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103730 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },106664 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103731 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106665 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103732 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },106666 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
103733 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106667 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103734 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },106668 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"2", .tmp0), ._, ._, ._ },
103735 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },106669 .{ ._, .fi_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
103736 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106670 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106671 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103738 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106672 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103739 } },106673 } },
103740 }, .{106674 }, .{
...@@ -103745,7 +106679,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103745,7 +106679,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103745 .{ .src = .{ .to_mem, .none, .none } },106679 .{ .src = .{ .to_mem, .none, .none } },
103746 },106680 },
103747 .extra_temps = .{106681 .extra_temps = .{
103748 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106682 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103749 .{ .type = .u16, .kind = .mem },106683 .{ .type = .u16, .kind = .mem },
103750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },106684 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103751 .{ .type = .f64, .kind = .{ .reg = .st7 } },106685 .{ .type = .f64, .kind = .{ .reg = .st7 } },
...@@ -103760,18 +106694,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103760,18 +106694,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103760 .dst_temps = .{ .mem, .unused },106694 .dst_temps = .{ .mem, .unused },
103761 .clobbers = .{ .eflags = true },106695 .clobbers = .{ .eflags = true },
103762 .each = .{ .once = &.{106696 .each = .{ .once = &.{
103763 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106697 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103764 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },106698 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103765 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },106699 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103766 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },106700 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103767 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106701 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103768 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },106702 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103769 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },106703 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"2", .tmp0), ._, ._, ._ },
103770 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },106704 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
103771 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },106705 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
103772 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },106706 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
103773 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106707 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106708 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103775 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106709 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103776 } },106710 } },
103777 }, .{106711 }, .{
...@@ -103783,10 +106717,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103783,10 +106717,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103783 },106717 },
103784 .call_frame = .{ .alignment = .@"16" },106718 .call_frame = .{ .alignment = .@"16" },
103785 .extra_temps = .{106719 .extra_temps = .{
103786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106720 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103787 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106721 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103788 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106722 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103789 .{ .type = .i32, .kind = .{ .reg = .eax } },106723 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103790 .unused,106724 .unused,
103791 .unused,106725 .unused,
103792 .unused,106726 .unused,
...@@ -103798,12 +106732,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103798,12 +106732,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103798 .dst_temps = .{ .mem, .unused },106732 .dst_temps = .{ .mem, .unused },
103799 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106733 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103800 .each = .{ .once = &.{106734 .each = .{ .once = &.{
103801 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106735 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103802 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106736 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103803 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106737 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103804 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },106738 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
103805 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106739 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106740 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103807 } },106741 } },
103808 }, .{106742 }, .{
103809 .required_features = .{ .avx, null, null, null },106743 .required_features = .{ .avx, null, null, null },
...@@ -103814,10 +106748,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103814,10 +106748,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103814 },106748 },
103815 .call_frame = .{ .alignment = .@"16" },106749 .call_frame = .{ .alignment = .@"16" },
103816 .extra_temps = .{106750 .extra_temps = .{
103817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106751 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103818 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106752 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103819 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },106753 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103820 .{ .type = .u32, .kind = .{ .reg = .eax } },106754 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103821 .unused,106755 .unused,
103822 .unused,106756 .unused,
103823 .unused,106757 .unused,
...@@ -103829,12 +106763,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103829,12 +106763,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103829 .dst_temps = .{ .mem, .unused },106763 .dst_temps = .{ .mem, .unused },
103830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103831 .each = .{ .once = &.{106765 .each = .{ .once = &.{
103832 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106766 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103833 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106767 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103834 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106768 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103835 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },106769 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
103836 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106770 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106771 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103838 } },106772 } },
103839 }, .{106773 }, .{
103840 .required_features = .{ .sse2, null, null, null },106774 .required_features = .{ .sse2, null, null, null },
...@@ -103845,10 +106779,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103845,10 +106779,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103845 },106779 },
103846 .call_frame = .{ .alignment = .@"16" },106780 .call_frame = .{ .alignment = .@"16" },
103847 .extra_temps = .{106781 .extra_temps = .{
103848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103849 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106783 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103850 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106784 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103851 .{ .type = .i32, .kind = .{ .reg = .eax } },106785 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103852 .unused,106786 .unused,
103853 .unused,106787 .unused,
103854 .unused,106788 .unused,
...@@ -103860,12 +106794,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103860,12 +106794,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103860 .dst_temps = .{ .mem, .unused },106794 .dst_temps = .{ .mem, .unused },
103861 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103862 .each = .{ .once = &.{106796 .each = .{ .once = &.{
103863 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106797 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103864 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106798 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103865 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106799 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103866 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },106800 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
103867 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106801 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106802 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103869 } },106803 } },
103870 }, .{106804 }, .{
103871 .required_features = .{ .sse2, null, null, null },106805 .required_features = .{ .sse2, null, null, null },
...@@ -103876,10 +106810,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103876,10 +106810,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103876 },106810 },
103877 .call_frame = .{ .alignment = .@"16" },106811 .call_frame = .{ .alignment = .@"16" },
103878 .extra_temps = .{106812 .extra_temps = .{
103879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106813 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103880 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106814 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103881 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },106815 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103882 .{ .type = .u32, .kind = .{ .reg = .eax } },106816 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103883 .unused,106817 .unused,
103884 .unused,106818 .unused,
103885 .unused,106819 .unused,
...@@ -103891,12 +106825,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103891,12 +106825,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103891 .dst_temps = .{ .mem, .unused },106825 .dst_temps = .{ .mem, .unused },
103892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106826 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103893 .each = .{ .once = &.{106827 .each = .{ .once = &.{
103894 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106828 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103895 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106829 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103896 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106830 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103897 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },106831 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
103898 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106832 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106833 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103900 } },106834 } },
103901 }, .{106835 }, .{
103902 .required_features = .{ .sse, null, null, null },106836 .required_features = .{ .sse, null, null, null },
...@@ -103907,10 +106841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103907,10 +106841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103907 },106841 },
103908 .call_frame = .{ .alignment = .@"16" },106842 .call_frame = .{ .alignment = .@"16" },
103909 .extra_temps = .{106843 .extra_temps = .{
103910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103911 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106845 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103912 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },106846 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103913 .{ .type = .i32, .kind = .{ .reg = .eax } },106847 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103914 .unused,106848 .unused,
103915 .unused,106849 .unused,
103916 .unused,106850 .unused,
...@@ -103922,13 +106856,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103922,13 +106856,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103922 .dst_temps = .{ .mem, .unused },106856 .dst_temps = .{ .mem, .unused },
103923 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103924 .each = .{ .once = &.{106858 .each = .{ .once = &.{
103925 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106859 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103926 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },106860 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103927 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106861 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103928 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106862 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103929 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },106863 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
103930 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106864 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103931 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106865 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103932 } },106866 } },
103933 }, .{106867 }, .{
103934 .required_features = .{ .sse, null, null, null },106868 .required_features = .{ .sse, null, null, null },
...@@ -103939,10 +106873,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103939,10 +106873,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103939 },106873 },
103940 .call_frame = .{ .alignment = .@"16" },106874 .call_frame = .{ .alignment = .@"16" },
103941 .extra_temps = .{106875 .extra_temps = .{
103942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106876 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103943 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },106877 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103944 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },106878 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103945 .{ .type = .u32, .kind = .{ .reg = .eax } },106879 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103946 .unused,106880 .unused,
103947 .unused,106881 .unused,
103948 .unused,106882 .unused,
...@@ -103954,13 +106888,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103954,13 +106888,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103954 .dst_temps = .{ .mem, .unused },106888 .dst_temps = .{ .mem, .unused },
103955 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106889 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103956 .each = .{ .once = &.{106890 .each = .{ .once = &.{
103957 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106891 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103958 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },106892 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103959 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106893 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103960 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106894 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103961 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },106895 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
103962 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },106896 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103963 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106897 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103964 } },106898 } },
103965 }, .{106899 }, .{
103966 .required_features = .{ .@"64bit", .avx, null, null },106900 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -103970,7 +106904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103970,7 +106904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103970 .{ .src = .{ .to_mem, .none, .none } },106904 .{ .src = .{ .to_mem, .none, .none } },
103971 },106905 },
103972 .extra_temps = .{106906 .extra_temps = .{
103973 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106907 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103974 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },106908 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103975 .unused,106909 .unused,
103976 .unused,106910 .unused,
...@@ -103985,11 +106919,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103985,11 +106919,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103985 .dst_temps = .{ .mem, .unused },106919 .dst_temps = .{ .mem, .unused },
103986 .clobbers = .{ .eflags = true },106920 .clobbers = .{ .eflags = true },
103987 .each = .{ .once = &.{106921 .each = .{ .once = &.{
103988 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106922 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
103989 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },106923 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
103990 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },106924 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ },
103991 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106925 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
103992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106926 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103993 } },106927 } },
103994 }, .{106928 }, .{
103995 .required_features = .{ .@"64bit", .sse2, null, null },106929 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -103999,7 +106933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103999,7 +106933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103999 .{ .src = .{ .to_mem, .none, .none } },106933 .{ .src = .{ .to_mem, .none, .none } },
104000 },106934 },
104001 .extra_temps = .{106935 .extra_temps = .{
104002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104003 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },106937 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
104004 .unused,106938 .unused,
104005 .unused,106939 .unused,
...@@ -104014,11 +106948,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104014,11 +106948,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104014 .dst_temps = .{ .mem, .unused },106948 .dst_temps = .{ .mem, .unused },
104015 .clobbers = .{ .eflags = true },106949 .clobbers = .{ .eflags = true },
104016 .each = .{ .once = &.{106950 .each = .{ .once = &.{
104017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106951 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104018 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },106952 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
104019 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },106953 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ },
104020 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106954 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106955 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104022 } },106956 } },
104023 }, .{106957 }, .{
104024 .required_features = .{ .x87, null, null, null },106958 .required_features = .{ .x87, null, null, null },
...@@ -104028,7 +106962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104028,7 +106962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104028 .{ .src = .{ .to_mem, .none, .none } },106962 .{ .src = .{ .to_mem, .none, .none } },
104029 },106963 },
104030 .extra_temps = .{106964 .extra_temps = .{
104031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106965 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104032 .{ .type = .u16, .kind = .mem },106966 .{ .type = .u16, .kind = .mem },
104033 .{ .type = .f64, .kind = .{ .reg = .st7 } },106967 .{ .type = .f64, .kind = .{ .reg = .st7 } },
104034 .unused,106968 .unused,
...@@ -104048,11 +106982,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104048,11 +106982,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104048 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },106982 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104049 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106983 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104050 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },106984 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
104051 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106985 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
104052 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },106986 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
104053 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },106987 .{ ._, .fi_p, .st, .memi(.dst0q, .tmp0), ._, ._, ._ },
104054 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106988 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106989 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104056 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },106990 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104057 } },106991 } },
104058 }, .{106992 }, .{
...@@ -104064,10 +106998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104064,10 +106998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104064 },106998 },
104065 .call_frame = .{ .alignment = .@"16" },106999 .call_frame = .{ .alignment = .@"16" },
104066 .extra_temps = .{107000 .extra_temps = .{
104067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107001 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104068 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107002 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104069 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },107003 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104070 .{ .type = .i64, .kind = .{ .reg = .rax } },107004 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104071 .unused,107005 .unused,
104072 .unused,107006 .unused,
104073 .unused,107007 .unused,
...@@ -104079,12 +107013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104079,12 +107013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104079 .dst_temps = .{ .mem, .unused },107013 .dst_temps = .{ .mem, .unused },
104080 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104081 .each = .{ .once = &.{107015 .each = .{ .once = &.{
104082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107016 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104083 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107017 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104084 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107018 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104085 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107019 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
104086 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107020 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104087 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107021 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104088 } },107022 } },
104089 }, .{107023 }, .{
104090 .required_features = .{ .avx, null, null, null },107024 .required_features = .{ .avx, null, null, null },
...@@ -104095,10 +107029,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104095,10 +107029,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104095 },107029 },
104096 .call_frame = .{ .alignment = .@"16" },107030 .call_frame = .{ .alignment = .@"16" },
104097 .extra_temps = .{107031 .extra_temps = .{
104098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107032 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104099 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107033 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104100 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },107034 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104101 .{ .type = .u64, .kind = .{ .reg = .rax } },107035 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104102 .unused,107036 .unused,
104103 .unused,107037 .unused,
104104 .unused,107038 .unused,
...@@ -104110,12 +107044,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104110,12 +107044,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104110 .dst_temps = .{ .mem, .unused },107044 .dst_temps = .{ .mem, .unused },
104111 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104112 .each = .{ .once = &.{107046 .each = .{ .once = &.{
104113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107047 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104114 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107048 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107049 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104116 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107050 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
104117 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107051 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104118 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107052 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104119 } },107053 } },
104120 }, .{107054 }, .{
104121 .required_features = .{ .sse2, null, null, null },107055 .required_features = .{ .sse2, null, null, null },
...@@ -104126,10 +107060,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104126,10 +107060,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104126 },107060 },
104127 .call_frame = .{ .alignment = .@"16" },107061 .call_frame = .{ .alignment = .@"16" },
104128 .extra_temps = .{107062 .extra_temps = .{
104129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107063 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104130 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107064 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104131 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },107065 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104132 .{ .type = .i64, .kind = .{ .reg = .rax } },107066 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104133 .unused,107067 .unused,
104134 .unused,107068 .unused,
104135 .unused,107069 .unused,
...@@ -104141,12 +107075,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104141,12 +107075,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104141 .dst_temps = .{ .mem, .unused },107075 .dst_temps = .{ .mem, .unused },
104142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107076 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104143 .each = .{ .once = &.{107077 .each = .{ .once = &.{
104144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107078 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104145 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107079 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104146 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107080 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104147 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107081 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
104148 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107082 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107083 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104150 } },107084 } },
104151 }, .{107085 }, .{
104152 .required_features = .{ .sse2, null, null, null },107086 .required_features = .{ .sse2, null, null, null },
...@@ -104157,10 +107091,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104157,10 +107091,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104157 },107091 },
104158 .call_frame = .{ .alignment = .@"16" },107092 .call_frame = .{ .alignment = .@"16" },
104159 .extra_temps = .{107093 .extra_temps = .{
104160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107094 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107095 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104162 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },107096 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104163 .{ .type = .u64, .kind = .{ .reg = .rax } },107097 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104164 .unused,107098 .unused,
104165 .unused,107099 .unused,
104166 .unused,107100 .unused,
...@@ -104172,12 +107106,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104172,12 +107106,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104172 .dst_temps = .{ .mem, .unused },107106 .dst_temps = .{ .mem, .unused },
104173 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104174 .each = .{ .once = &.{107108 .each = .{ .once = &.{
104175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107109 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104176 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107110 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104177 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107111 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104178 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107112 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
104179 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107113 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107114 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104181 } },107115 } },
104182 }, .{107116 }, .{
104183 .required_features = .{ .sse, null, null, null },107117 .required_features = .{ .sse, null, null, null },
...@@ -104188,10 +107122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104188,10 +107122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104188 },107122 },
104189 .call_frame = .{ .alignment = .@"16" },107123 .call_frame = .{ .alignment = .@"16" },
104190 .extra_temps = .{107124 .extra_temps = .{
104191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107125 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104192 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107126 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104193 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },107127 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104194 .{ .type = .i64, .kind = .{ .reg = .rax } },107128 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104195 .unused,107129 .unused,
104196 .unused,107130 .unused,
104197 .unused,107131 .unused,
...@@ -104203,13 +107137,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104203,13 +107137,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104203 .dst_temps = .{ .mem, .unused },107137 .dst_temps = .{ .mem, .unused },
104204 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104205 .each = .{ .once = &.{107139 .each = .{ .once = &.{
104206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107140 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104207 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },107141 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104208 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107142 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104209 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107143 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104210 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107144 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
104211 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107145 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107146 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104213 } },107147 } },
104214 }, .{107148 }, .{
104215 .required_features = .{ .sse, null, null, null },107149 .required_features = .{ .sse, null, null, null },
...@@ -104220,10 +107154,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104220,10 +107154,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104220 },107154 },
104221 .call_frame = .{ .alignment = .@"16" },107155 .call_frame = .{ .alignment = .@"16" },
104222 .extra_temps = .{107156 .extra_temps = .{
104223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107157 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104224 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107158 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104225 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },107159 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104226 .{ .type = .u64, .kind = .{ .reg = .rax } },107160 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104227 .unused,107161 .unused,
104228 .unused,107162 .unused,
104229 .unused,107163 .unused,
...@@ -104235,15 +107169,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104235,15 +107169,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104235 .dst_temps = .{ .mem, .unused },107169 .dst_temps = .{ .mem, .unused },
104236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107170 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104237 .each = .{ .once = &.{107171 .each = .{ .once = &.{
104238 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107172 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104239 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },107173 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104240 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107174 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104241 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107175 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104242 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107176 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
104243 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107177 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104245 } },107179 } },
104246 }, .{107180 }, .{
107181 .required_cc_abi = .sysv64,
104247 .required_features = .{ .avx, null, null, null },107182 .required_features = .{ .avx, null, null, null },
104248 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },107183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104249 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },107184 .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 {...@@ -104252,11 +107187,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104252 },107187 },
104253 .call_frame = .{ .alignment = .@"16" },107188 .call_frame = .{ .alignment = .@"16" },
104254 .extra_temps = .{107189 .extra_temps = .{
104255 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107190 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104256 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107191 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104257 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },107192 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104258 .{ .type = .u64, .kind = .{ .reg = .rax } },107193 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104259 .{ .type = .i64, .kind = .{ .reg = .rdx } },107194 .unused,
104260 .unused,107195 .unused,
104261 .unused,107196 .unused,
104262 .unused,107197 .unused,
...@@ -104267,15 +107202,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104267,15 +107202,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104267 .dst_temps = .{ .mem, .unused },107202 .dst_temps = .{ .mem, .unused },
104268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107203 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104269 .each = .{ .once = &.{107204 .each = .{ .once = &.{
104270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107205 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104271 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107206 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104272 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107207 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104273 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107208 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
104274 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },107209 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
104275 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107210 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104276 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
104277 } },107244 } },
104278 }, .{107245 }, .{
107246 .required_cc_abi = .sysv64,
104279 .required_features = .{ .avx, null, null, null },107247 .required_features = .{ .avx, null, null, null },
104280 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },107248 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104281 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },107249 .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 {...@@ -104284,11 +107252,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104284 },107252 },
104285 .call_frame = .{ .alignment = .@"16" },107253 .call_frame = .{ .alignment = .@"16" },
104286 .extra_temps = .{107254 .extra_temps = .{
104287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104288 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107256 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104289 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },107257 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104290 .{ .type = .u64, .kind = .{ .reg = .rax } },107258 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104291 .{ .type = .u64, .kind = .{ .reg = .rdx } },107259 .unused,
104292 .unused,107260 .unused,
104293 .unused,107261 .unused,
104294 .unused,107262 .unused,
...@@ -104299,15 +107267,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104299,15 +107267,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104299 .dst_temps = .{ .mem, .unused },107267 .dst_temps = .{ .mem, .unused },
104300 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104301 .each = .{ .once = &.{107269 .each = .{ .once = &.{
104302 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107270 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104303 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107271 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104304 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107272 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104305 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107273 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
104306 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },107274 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
104307 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107275 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
104309 } },107309 } },
104310 }, .{107310 }, .{
107311 .required_cc_abi = .sysv64,
104311 .required_features = .{ .sse2, null, null, null },107312 .required_features = .{ .sse2, null, null, null },
104312 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },107313 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104313 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },107314 .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 {...@@ -104316,11 +107317,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104316 },107317 },
104317 .call_frame = .{ .alignment = .@"16" },107318 .call_frame = .{ .alignment = .@"16" },
104318 .extra_temps = .{107319 .extra_temps = .{
104319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104320 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107321 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104321 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },107322 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104322 .{ .type = .u64, .kind = .{ .reg = .rax } },107323 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104323 .{ .type = .i64, .kind = .{ .reg = .rdx } },107324 .unused,
104324 .unused,107325 .unused,
104325 .unused,107326 .unused,
104326 .unused,107327 .unused,
...@@ -104331,15 +107332,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104331,15 +107332,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104331 .dst_temps = .{ .mem, .unused },107332 .dst_temps = .{ .mem, .unused },
104332 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107333 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104333 .each = .{ .once = &.{107334 .each = .{ .once = &.{
104334 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107335 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104335 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107336 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104336 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107337 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104337 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107338 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
104338 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },107339 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
104339 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107340 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107341 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104341 } },107342 } },
104342 }, .{107343 }, .{
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,
104343 .required_features = .{ .sse2, null, null, null },107377 .required_features = .{ .sse2, null, null, null },
104344 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },107378 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104345 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },107379 .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 {...@@ -104348,11 +107382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104348 },107382 },
104349 .call_frame = .{ .alignment = .@"16" },107383 .call_frame = .{ .alignment = .@"16" },
104350 .extra_temps = .{107384 .extra_temps = .{
104351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107385 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107386 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104353 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },107387 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104354 .{ .type = .u64, .kind = .{ .reg = .rax } },107388 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104355 .{ .type = .u64, .kind = .{ .reg = .rdx } },107389 .unused,
104356 .unused,107390 .unused,
104357 .unused,107391 .unused,
104358 .unused,107392 .unused,
...@@ -104363,15 +107397,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104363,15 +107397,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104363 .dst_temps = .{ .mem, .unused },107397 .dst_temps = .{ .mem, .unused },
104364 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107398 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104365 .each = .{ .once = &.{107399 .each = .{ .once = &.{
104366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107400 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104367 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107401 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104368 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107402 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104369 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107403 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
104370 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },107404 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
104371 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107405 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104372 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
104373 } },107439 } },
104374 }, .{107440 }, .{
107441 .required_cc_abi = .sysv64,
104375 .required_features = .{ .sse, null, null, null },107442 .required_features = .{ .sse, null, null, null },
104376 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },107443 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104377 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },107444 .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 {...@@ -104380,11 +107447,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104380 },107447 },
104381 .call_frame = .{ .alignment = .@"16" },107448 .call_frame = .{ .alignment = .@"16" },
104382 .extra_temps = .{107449 .extra_temps = .{
104383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104384 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107451 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104385 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },107452 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104386 .{ .type = .u64, .kind = .{ .reg = .rax } },107453 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104387 .{ .type = .i64, .kind = .{ .reg = .rdx } },107454 .unused,
104388 .unused,107455 .unused,
104389 .unused,107456 .unused,
104390 .unused,107457 .unused,
...@@ -104395,16 +107462,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104395,16 +107462,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104395 .dst_temps = .{ .mem, .unused },107462 .dst_temps = .{ .mem, .unused },
104396 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104397 .each = .{ .once = &.{107464 .each = .{ .once = &.{
104398 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107465 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104399 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },107466 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104400 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107467 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104401 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107468 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104402 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107469 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
104403 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },107470 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
104404 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107471 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
104406 } },107506 } },
104407 }, .{107507 }, .{
107508 .required_cc_abi = .sysv64,
104408 .required_features = .{ .sse, null, null, null },107509 .required_features = .{ .sse, null, null, null },
104409 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },107510 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104410 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },107511 .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 {...@@ -104413,11 +107514,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104413 },107514 },
104414 .call_frame = .{ .alignment = .@"16" },107515 .call_frame = .{ .alignment = .@"16" },
104415 .extra_temps = .{107516 .extra_temps = .{
104416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107517 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104417 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107518 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104418 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },107519 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104419 .{ .type = .u64, .kind = .{ .reg = .rax } },107520 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104420 .{ .type = .u64, .kind = .{ .reg = .rdx } },107521 .unused,
104421 .unused,107522 .unused,
104422 .unused,107523 .unused,
104423 .unused,107524 .unused,
...@@ -104428,14 +107529,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104428,14 +107529,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104428 .dst_temps = .{ .mem, .unused },107529 .dst_temps = .{ .mem, .unused },
104429 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104430 .each = .{ .once = &.{107531 .each = .{ .once = &.{
104431 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107532 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104432 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },107533 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104433 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107534 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104434 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107535 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104435 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107536 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
104436 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },107537 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
104437 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107538 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
104439 } },107573 } },
104440 }, .{107574 }, .{
104441 .required_features = .{ .@"64bit", .avx, null, null },107575 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -104446,11 +107580,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104446,11 +107580,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104446 },107580 },
104447 .call_frame = .{ .alignment = .@"16" },107581 .call_frame = .{ .alignment = .@"16" },
104448 .extra_temps = .{107582 .extra_temps = .{
104449 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107583 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104450 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107584 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104451 .{ .type = .usize, .kind = .{ .reg = .rdi } },107585 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104452 .{ .type = .usize, .kind = .{ .reg = .rsi } },107586 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
104453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107587 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104454 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },107588 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104455 .unused,107589 .unused,
104456 .unused,107590 .unused,
...@@ -104461,15 +107595,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104461,15 +107595,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104461 .dst_temps = .{ .mem, .unused },107595 .dst_temps = .{ .mem, .unused },
104462 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104463 .each = .{ .once = &.{107597 .each = .{ .once = &.{
104464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107598 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104465 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107599 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104466 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },107600 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104467 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107601 .{ ._, ._, .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), ._, ._ },
104469 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },107603 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104470 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },107604 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
104471 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107605 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107606 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104473 } },107607 } },
104474 }, .{107608 }, .{
104475 .required_features = .{ .@"64bit", .avx, null, null },107609 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -104480,11 +107614,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104480,11 +107614,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104480 },107614 },
104481 .call_frame = .{ .alignment = .@"16" },107615 .call_frame = .{ .alignment = .@"16" },
104482 .extra_temps = .{107616 .extra_temps = .{
104483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107617 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104484 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107618 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104485 .{ .type = .usize, .kind = .{ .reg = .rdi } },107619 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104486 .{ .type = .usize, .kind = .{ .reg = .rsi } },107620 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
104487 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107621 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104488 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },107622 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104489 .unused,107623 .unused,
104490 .unused,107624 .unused,
...@@ -104495,15 +107629,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104495,15 +107629,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104495 .dst_temps = .{ .mem, .unused },107629 .dst_temps = .{ .mem, .unused },
104496 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104497 .each = .{ .once = &.{107631 .each = .{ .once = &.{
104498 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107632 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104499 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107633 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104500 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },107634 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104501 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107635 .{ ._, ._, .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), ._, ._ },
104503 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },107637 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104504 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },107638 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
104505 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107639 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104506 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107640 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104507 } },107641 } },
104508 }, .{107642 }, .{
104509 .required_features = .{ .@"64bit", .sse2, null, null },107643 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -104514,11 +107648,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104514,11 +107648,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104514 },107648 },
104515 .call_frame = .{ .alignment = .@"16" },107649 .call_frame = .{ .alignment = .@"16" },
104516 .extra_temps = .{107650 .extra_temps = .{
104517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107651 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104518 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107652 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104519 .{ .type = .usize, .kind = .{ .reg = .rdi } },107653 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104520 .{ .type = .usize, .kind = .{ .reg = .rsi } },107654 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
104521 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107655 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104522 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },107656 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104523 .unused,107657 .unused,
104524 .unused,107658 .unused,
...@@ -104529,15 +107663,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104529,15 +107663,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104529 .dst_temps = .{ .mem, .unused },107663 .dst_temps = .{ .mem, .unused },
104530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104531 .each = .{ .once = &.{107665 .each = .{ .once = &.{
104532 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107666 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104533 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107667 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104534 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },107668 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104535 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107669 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104536 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107670 .{ ._, ._sd, .mov, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104537 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },107671 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104538 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },107672 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
104539 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107673 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107674 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104541 } },107675 } },
104542 }, .{107676 }, .{
104543 .required_features = .{ .@"64bit", .sse2, null, null },107677 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -104548,11 +107682,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104548,11 +107682,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104548 },107682 },
104549 .call_frame = .{ .alignment = .@"16" },107683 .call_frame = .{ .alignment = .@"16" },
104550 .extra_temps = .{107684 .extra_temps = .{
104551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104552 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107686 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104553 .{ .type = .usize, .kind = .{ .reg = .rdi } },107687 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104554 .{ .type = .usize, .kind = .{ .reg = .rsi } },107688 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
104555 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107689 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104556 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },107690 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104557 .unused,107691 .unused,
104558 .unused,107692 .unused,
...@@ -104563,15 +107697,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104563,15 +107697,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104563 .dst_temps = .{ .mem, .unused },107697 .dst_temps = .{ .mem, .unused },
104564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104565 .each = .{ .once = &.{107699 .each = .{ .once = &.{
104566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107700 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104567 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107701 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104568 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },107702 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104569 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107703 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104570 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107704 .{ ._, ._sd, .mov, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104571 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },107705 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104572 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },107706 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
104573 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107707 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107708 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104575 } },107709 } },
104576 }, .{107710 }, .{
104577 .required_features = .{ .@"64bit", .sse, null, null },107711 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -104582,11 +107716,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104582,11 +107716,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104582 },107716 },
104583 .call_frame = .{ .alignment = .@"16" },107717 .call_frame = .{ .alignment = .@"16" },
104584 .extra_temps = .{107718 .extra_temps = .{
104585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107719 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104586 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107720 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104587 .{ .type = .usize, .kind = .{ .reg = .rdi } },107721 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104588 .{ .type = .usize, .kind = .{ .reg = .rsi } },107722 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
104589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107723 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104590 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },107724 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104591 .unused,107725 .unused,
104592 .unused,107726 .unused,
...@@ -104597,16 +107731,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104597,16 +107731,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104597 .dst_temps = .{ .mem, .unused },107731 .dst_temps = .{ .mem, .unused },
104598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107732 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104599 .each = .{ .once = &.{107733 .each = .{ .once = &.{
104600 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107734 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104601 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107735 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104602 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },107736 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
104603 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },107737 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104604 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107738 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104605 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107739 .{ ._, ._ps, .movl, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104606 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },107740 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104607 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },107741 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
104608 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107742 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107743 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104610 } },107744 } },
104611 }, .{107745 }, .{
104612 .required_features = .{ .@"64bit", .sse, null, null },107746 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -104617,11 +107751,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104617,11 +107751,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104617 },107751 },
104618 .call_frame = .{ .alignment = .@"16" },107752 .call_frame = .{ .alignment = .@"16" },
104619 .extra_temps = .{107753 .extra_temps = .{
104620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104621 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107755 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104622 .{ .type = .usize, .kind = .{ .reg = .rdi } },107756 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104623 .{ .type = .usize, .kind = .{ .reg = .rsi } },107757 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
104624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },107758 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104625 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },107759 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104626 .unused,107760 .unused,
104627 .unused,107761 .unused,
...@@ -104632,16 +107766,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104632,16 +107766,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104632 .dst_temps = .{ .mem, .unused },107766 .dst_temps = .{ .mem, .unused },
104633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107767 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104634 .each = .{ .once = &.{107768 .each = .{ .once = &.{
104635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107769 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104636 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107770 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104637 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },107771 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
104638 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },107772 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104639 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107773 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104640 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },107774 .{ ._, ._ps, .movl, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104641 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },107775 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104642 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },107776 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
104643 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107777 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104644 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107778 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104645 } },107779 } },
104646 }, .{107780 }, .{
104647 .required_features = .{ .sse3, .x87, null, null },107781 .required_features = .{ .sse3, .x87, null, null },
...@@ -104772,7 +107906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104772,7 +107906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104772 },107906 },
104773 .extra_temps = .{107907 .extra_temps = .{
104774 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107908 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107909 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104776 .{ .type = .f80, .kind = .{ .reg = .st7 } },107910 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104777 .{ .type = .i16, .kind = .mem },107911 .{ .type = .i16, .kind = .mem },
104778 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },107912 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
...@@ -104786,15 +107920,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104786,15 +107920,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104786 .dst_temps = .{ .mem, .unused },107920 .dst_temps = .{ .mem, .unused },
104787 .clobbers = .{ .eflags = true },107921 .clobbers = .{ .eflags = true },
104788 .each = .{ .once = &.{107922 .each = .{ .once = &.{
104789 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107923 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
104790 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107924 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104791 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },107925 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104792 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },107926 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104793 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },107927 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
104794 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107928 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
104795 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },107929 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
104796 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },107930 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
104797 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107931 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104798 } },107932 } },
104799 }, .{107933 }, .{
104800 .required_features = .{ .sse3, .x87, null, null },107934 .required_features = .{ .sse3, .x87, null, null },
...@@ -104805,7 +107939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104805,7 +107939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104805 },107939 },
104806 .extra_temps = .{107940 .extra_temps = .{
104807 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107941 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107942 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104809 .{ .type = .f80, .kind = .{ .reg = .st7 } },107943 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104810 .{ .type = .i16, .kind = .mem },107944 .{ .type = .i16, .kind = .mem },
104811 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },107945 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
...@@ -104819,15 +107953,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104819,15 +107953,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104819 .dst_temps = .{ .mem, .unused },107953 .dst_temps = .{ .mem, .unused },
104820 .clobbers = .{ .eflags = true },107954 .clobbers = .{ .eflags = true },
104821 .each = .{ .once = &.{107955 .each = .{ .once = &.{
104822 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107956 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
104823 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107957 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104824 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },107958 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104825 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },107959 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104826 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },107960 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
104827 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107961 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
104828 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },107962 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
104829 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },107963 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
104830 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },107964 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
104831 } },107965 } },
104832 }, .{107966 }, .{
104833 .required_features = .{ .x87, .slow_incdec, null, null },107967 .required_features = .{ .x87, .slow_incdec, null, null },
...@@ -104838,7 +107972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104838,7 +107972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104838 },107972 },
104839 .extra_temps = .{107973 .extra_temps = .{
104840 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107974 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107975 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104842 .{ .type = .u16, .kind = .mem },107976 .{ .type = .u16, .kind = .mem },
104843 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },107977 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
104844 .{ .type = .f80, .kind = .{ .reg = .st7 } },107978 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -104852,8 +107986,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104852,8 +107986,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104852 .dst_temps = .{ .mem, .unused },107986 .dst_temps = .{ .mem, .unused },
104853 .clobbers = .{ .eflags = true },107987 .clobbers = .{ .eflags = true },
104854 .each = .{ .once = &.{107988 .each = .{ .once = &.{
104855 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107989 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
104856 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107990 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104857 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },107991 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104858 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },107992 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104859 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },107993 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
...@@ -104862,10 +107996,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104862,10 +107996,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104862 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },107996 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104863 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },107997 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104864 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },107998 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },
104865 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },107999 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
104866 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },108000 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
104867 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },108001 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
104868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108002 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104869 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },108003 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104870 } },108004 } },
104871 }, .{108005 }, .{
...@@ -104877,7 +108011,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104877,7 +108011,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104877 },108011 },
104878 .extra_temps = .{108012 .extra_temps = .{
104879 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108013 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104881 .{ .type = .u16, .kind = .mem },108015 .{ .type = .u16, .kind = .mem },
104882 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },108016 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
104883 .{ .type = .f80, .kind = .{ .reg = .st7 } },108017 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -104891,8 +108025,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104891,8 +108025,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104891 .dst_temps = .{ .mem, .unused },108025 .dst_temps = .{ .mem, .unused },
104892 .clobbers = .{ .eflags = true },108026 .clobbers = .{ .eflags = true },
104893 .each = .{ .once = &.{108027 .each = .{ .once = &.{
104894 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },108028 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
104895 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108029 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104896 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },108030 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104897 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },108031 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104898 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },108032 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
...@@ -104901,10 +108035,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104901,10 +108035,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104901 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },108035 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104902 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },108036 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104903 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },108037 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },
104904 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },108038 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
104905 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },108039 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
104906 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },108040 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
104907 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },108041 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
104908 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },108042 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104909 } },108043 } },
104910 }, .{108044 }, .{
...@@ -104916,7 +108050,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104916,7 +108050,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104916 },108050 },
104917 .extra_temps = .{108051 .extra_temps = .{
104918 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108052 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104920 .{ .type = .f80, .kind = .{ .reg = .st7 } },108054 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104921 .{ .type = .i16, .kind = .mem },108055 .{ .type = .i16, .kind = .mem },
104922 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },108056 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
...@@ -104930,15 +108064,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104930,15 +108064,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104930 .dst_temps = .{ .mem, .unused },108064 .dst_temps = .{ .mem, .unused },
104931 .clobbers = .{ .eflags = true },108065 .clobbers = .{ .eflags = true },
104932 .each = .{ .once = &.{108066 .each = .{ .once = &.{
104933 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },108067 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
104934 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108068 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104935 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },108069 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104936 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },108070 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104937 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },108071 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104938 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },108072 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
104939 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },108073 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
104940 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },108074 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
104941 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108075 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104942 } },108076 } },
104943 }, .{108077 }, .{
104944 .required_features = .{ .sse3, .x87, null, null },108078 .required_features = .{ .sse3, .x87, null, null },
...@@ -104949,7 +108083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104949,7 +108083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104949 },108083 },
104950 .extra_temps = .{108084 .extra_temps = .{
104951 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108085 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108086 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104953 .{ .type = .f80, .kind = .{ .reg = .st7 } },108087 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104954 .{ .type = .i16, .kind = .mem },108088 .{ .type = .i16, .kind = .mem },
104955 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },108089 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
...@@ -104963,15 +108097,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104963,15 +108097,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104963 .dst_temps = .{ .mem, .unused },108097 .dst_temps = .{ .mem, .unused },
104964 .clobbers = .{ .eflags = true },108098 .clobbers = .{ .eflags = true },
104965 .each = .{ .once = &.{108099 .each = .{ .once = &.{
104966 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },108100 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
104967 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108101 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104968 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },108102 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104969 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },108103 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104970 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },108104 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104971 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },108105 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
104972 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },108106 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
104973 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },108107 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
104974 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },108108 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
104975 } },108109 } },
104976 }, .{108110 }, .{
104977 .required_features = .{ .x87, .slow_incdec, null, null },108111 .required_features = .{ .x87, .slow_incdec, null, null },
...@@ -104982,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104982,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104982 },108116 },
104983 .extra_temps = .{108117 .extra_temps = .{
104984 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108118 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104985 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108119 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104986 .{ .type = .u16, .kind = .mem },108120 .{ .type = .u16, .kind = .mem },
104987 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },108121 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
104988 .{ .type = .f80, .kind = .{ .reg = .st7 } },108122 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -104996,8 +108130,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104996,8 +108130,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104996 .dst_temps = .{ .mem, .unused },108130 .dst_temps = .{ .mem, .unused },
104997 .clobbers = .{ .eflags = true },108131 .clobbers = .{ .eflags = true },
104998 .each = .{ .once = &.{108132 .each = .{ .once = &.{
104999 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },108133 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
105000 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108134 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105001 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },108135 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
105002 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },108136 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
105003 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },108137 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
...@@ -105006,10 +108140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105006,10 +108140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105006 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },108140 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
105007 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },108141 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
105008 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },108142 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },
105009 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },108143 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
105010 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },108144 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
105011 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },108145 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
105012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108146 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105013 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },108147 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
105014 } },108148 } },
105015 }, .{108149 }, .{
...@@ -105021,7 +108155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105021,7 +108155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105021 },108155 },
105022 .extra_temps = .{108156 .extra_temps = .{
105023 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108157 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105025 .{ .type = .u16, .kind = .mem },108159 .{ .type = .u16, .kind = .mem },
105026 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },108160 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
105027 .{ .type = .f80, .kind = .{ .reg = .st7 } },108161 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -105035,8 +108169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105035,8 +108169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105035 .dst_temps = .{ .mem, .unused },108169 .dst_temps = .{ .mem, .unused },
105036 .clobbers = .{ .eflags = true },108170 .clobbers = .{ .eflags = true },
105037 .each = .{ .once = &.{108171 .each = .{ .once = &.{
105038 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },108172 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
105039 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108173 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105040 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },108174 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
105041 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },108175 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
105042 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },108176 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
...@@ -105045,10 +108179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105045,10 +108179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105045 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },108179 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
105046 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },108180 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
105047 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },108181 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },
105048 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },108182 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
105049 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },108183 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
105050 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },108184 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
105051 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },108185 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
105052 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },108186 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
105053 } },108187 } },
105054 }, .{108188 }, .{
...@@ -105117,7 +108251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105117,7 +108251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105117 .{ .src = .{ .to_mem, .none, .none } },108251 .{ .src = .{ .to_mem, .none, .none } },
105118 },108252 },
105119 .extra_temps = .{108253 .extra_temps = .{
105120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105121 .{ .type = .f80, .kind = .{ .reg = .st7 } },108255 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105122 .unused,108256 .unused,
105123 .unused,108257 .unused,
...@@ -105132,11 +108266,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105132,11 +108266,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105132 .dst_temps = .{ .mem, .unused },108266 .dst_temps = .{ .mem, .unused },
105133 .clobbers = .{ .eflags = true },108267 .clobbers = .{ .eflags = true },
105134 .each = .{ .once = &.{108268 .each = .{ .once = &.{
105135 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108269 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
105136 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },108270 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
105137 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },108271 .{ ._, .fi_p, .stt, .memi(.dst0w, .tmp0), ._, ._, ._ },
105138 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },108272 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
105139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108273 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105140 } },108274 } },
105141 }, .{108275 }, .{
105142 .required_features = .{ .x87, null, null, null },108276 .required_features = .{ .x87, null, null, null },
...@@ -105146,7 +108280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105146,7 +108280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105146 .{ .src = .{ .to_mem, .none, .none } },108280 .{ .src = .{ .to_mem, .none, .none } },
105147 },108281 },
105148 .extra_temps = .{108282 .extra_temps = .{
105149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108283 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105150 .{ .type = .u16, .kind = .mem },108284 .{ .type = .u16, .kind = .mem },
105151 .{ .type = .f80, .kind = .{ .reg = .st7 } },108285 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105152 .unused,108286 .unused,
...@@ -105166,11 +108300,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105166,11 +108300,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105166 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },108300 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105167 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108301 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105168 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },108302 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
105169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108303 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
105170 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },108304 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
105171 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },108305 .{ ._, .fi_p, .st, .memi(.dst0w, .tmp0), ._, ._, ._ },
105172 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },108306 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
105173 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108307 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105174 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108308 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105175 } },108309 } },
105176 }, .{108310 }, .{
...@@ -105181,7 +108315,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105181,7 +108315,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105181 .{ .src = .{ .to_mem, .none, .none } },108315 .{ .src = .{ .to_mem, .none, .none } },
105182 },108316 },
105183 .extra_temps = .{108317 .extra_temps = .{
105184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108318 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105185 .{ .type = .f80, .kind = .{ .reg = .st7 } },108319 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105186 .{ .type = .i32, .kind = .mem },108320 .{ .type = .i32, .kind = .mem },
105187 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },108321 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
...@@ -105196,13 +108330,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105196,13 +108330,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105196 .dst_temps = .{ .mem, .unused },108330 .dst_temps = .{ .mem, .unused },
105197 .clobbers = .{ .eflags = true },108331 .clobbers = .{ .eflags = true },
105198 .each = .{ .once = &.{108332 .each = .{ .once = &.{
105199 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108333 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
105200 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },108334 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
105201 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },108335 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
105202 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },108336 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
105203 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },108337 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
105204 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },108338 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
105205 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108339 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105206 } },108340 } },
105207 }, .{108341 }, .{
105208 .required_features = .{ .x87, null, null, null },108342 .required_features = .{ .x87, null, null, null },
...@@ -105212,7 +108346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105212,7 +108346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105212 .{ .src = .{ .to_mem, .none, .none } },108346 .{ .src = .{ .to_mem, .none, .none } },
105213 },108347 },
105214 .extra_temps = .{108348 .extra_temps = .{
105215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108349 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105216 .{ .type = .u16, .kind = .mem },108350 .{ .type = .u16, .kind = .mem },
105217 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },108351 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
105218 .{ .type = .f80, .kind = .{ .reg = .st7 } },108352 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -105227,18 +108361,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105227,18 +108361,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105227 .dst_temps = .{ .mem, .unused },108361 .dst_temps = .{ .mem, .unused },
105228 .clobbers = .{ .eflags = true },108362 .clobbers = .{ .eflags = true },
105229 .each = .{ .once = &.{108363 .each = .{ .once = &.{
105230 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108364 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
105231 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },108365 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
105232 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },108366 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
105233 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },108367 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105234 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108368 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105235 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },108369 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
105236 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },108370 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
105237 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },108371 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },
105238 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },108372 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
105239 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },108373 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp2w, ._, ._ },
105240 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },108374 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
105241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108375 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105242 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108376 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105243 } },108377 } },
105244 }, .{108378 }, .{
...@@ -105307,7 +108441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105307,7 +108441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105307 .{ .src = .{ .to_mem, .none, .none } },108441 .{ .src = .{ .to_mem, .none, .none } },
105308 },108442 },
105309 .extra_temps = .{108443 .extra_temps = .{
105310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108444 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105311 .{ .type = .f80, .kind = .{ .reg = .st7 } },108445 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105312 .unused,108446 .unused,
105313 .unused,108447 .unused,
...@@ -105322,11 +108456,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105322,11 +108456,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105322 .dst_temps = .{ .mem, .unused },108456 .dst_temps = .{ .mem, .unused },
105323 .clobbers = .{ .eflags = true },108457 .clobbers = .{ .eflags = true },
105324 .each = .{ .once = &.{108458 .each = .{ .once = &.{
105325 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108459 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
105326 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },108460 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
105327 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },108461 .{ ._, .fi_p, .stt, .memi(.dst0d, .tmp0), ._, ._, ._ },
105328 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },108462 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108463 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105330 } },108464 } },
105331 }, .{108465 }, .{
105332 .required_features = .{ .x87, null, null, null },108466 .required_features = .{ .x87, null, null, null },
...@@ -105336,7 +108470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105336,7 +108470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105336 .{ .src = .{ .to_mem, .none, .none } },108470 .{ .src = .{ .to_mem, .none, .none } },
105337 },108471 },
105338 .extra_temps = .{108472 .extra_temps = .{
105339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108473 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105340 .{ .type = .u16, .kind = .mem },108474 .{ .type = .u16, .kind = .mem },
105341 .{ .type = .f80, .kind = .{ .reg = .st7 } },108475 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105342 .unused,108476 .unused,
...@@ -105356,11 +108490,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105356,11 +108490,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105356 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },108490 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105357 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108491 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105358 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },108492 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
105359 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108493 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
105360 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },108494 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
105361 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },108495 .{ ._, .fi_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
105362 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },108496 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108497 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105364 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108498 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105365 } },108499 } },
105366 }, .{108500 }, .{
...@@ -105371,7 +108505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105371,7 +108505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105371 .{ .src = .{ .to_mem, .none, .none } },108505 .{ .src = .{ .to_mem, .none, .none } },
105372 },108506 },
105373 .extra_temps = .{108507 .extra_temps = .{
105374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108508 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105375 .{ .type = .f80, .kind = .{ .reg = .st7 } },108509 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105376 .{ .type = .i64, .kind = .mem },108510 .{ .type = .i64, .kind = .mem },
105377 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },108511 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
...@@ -105386,13 +108520,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105386,13 +108520,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105386 .dst_temps = .{ .mem, .unused },108520 .dst_temps = .{ .mem, .unused },
105387 .clobbers = .{ .eflags = true },108521 .clobbers = .{ .eflags = true },
105388 .each = .{ .once = &.{108522 .each = .{ .once = &.{
105389 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108523 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
105390 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },108524 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
105391 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },108525 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
105392 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },108526 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
105393 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },108527 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
105394 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },108528 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105395 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108529 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105396 } },108530 } },
105397 }, .{108531 }, .{
105398 .required_features = .{ .x87, null, null, null },108532 .required_features = .{ .x87, null, null, null },
...@@ -105402,7 +108536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105402,7 +108536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105402 .{ .src = .{ .to_mem, .none, .none } },108536 .{ .src = .{ .to_mem, .none, .none } },
105403 },108537 },
105404 .extra_temps = .{108538 .extra_temps = .{
105405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108539 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105406 .{ .type = .u16, .kind = .mem },108540 .{ .type = .u16, .kind = .mem },
105407 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },108541 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105408 .{ .type = .f80, .kind = .{ .reg = .st7 } },108542 .{ .type = .f80, .kind = .{ .reg = .st7 } },
...@@ -105417,18 +108551,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105417,18 +108551,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105417 .dst_temps = .{ .mem, .unused },108551 .dst_temps = .{ .mem, .unused },
105418 .clobbers = .{ .eflags = true },108552 .clobbers = .{ .eflags = true },
105419 .each = .{ .once = &.{108553 .each = .{ .once = &.{
105420 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108554 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
105421 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },108555 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
105422 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },108556 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
105423 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },108557 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105424 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108558 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105425 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },108559 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
105426 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },108560 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
105427 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },108561 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
105428 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },108562 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
105429 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },108563 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
105430 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },108564 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108565 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105432 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108566 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105433 } },108567 } },
105434 }, .{108568 }, .{
...@@ -105490,6 +108624,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105490,6 +108624,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105490 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108624 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105491 } },108625 } },
105492 }, .{108626 }, .{
108627 .required_abi = .gnu,
105493 .required_features = .{ .@"64bit", .sse3, .x87, null },108628 .required_features = .{ .@"64bit", .sse3, .x87, null },
105494 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },108629 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105495 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },108630 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
...@@ -105526,6 +108661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105526,6 +108661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105526 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },108661 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
105527 } },108662 } },
105528 }, .{108663 }, .{
108664 .required_abi = .gnu,
105529 .required_features = .{ .@"64bit", .x87, null, null },108665 .required_features = .{ .@"64bit", .x87, null, null },
105530 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },108666 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105531 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },108667 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
...@@ -105567,6 +108703,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105567,6 +108703,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105567 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },108703 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
105568 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },108704 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },
105569 } },108705 } },
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 } },
105570 }, .{108749 }, .{
105571 .required_features = .{ .sse3, .x87, null, null },108750 .required_features = .{ .sse3, .x87, null, null },
105572 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },108751 .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 {...@@ -105575,7 +108754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105575 .{ .src = .{ .to_mem, .none, .none } },108754 .{ .src = .{ .to_mem, .none, .none } },
105576 },108755 },
105577 .extra_temps = .{108756 .extra_temps = .{
105578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108757 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105579 .{ .type = .f80, .kind = .{ .reg = .st7 } },108758 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105580 .unused,108759 .unused,
105581 .unused,108760 .unused,
...@@ -105590,11 +108769,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105590,11 +108769,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105590 .dst_temps = .{ .mem, .unused },108769 .dst_temps = .{ .mem, .unused },
105591 .clobbers = .{ .eflags = true },108770 .clobbers = .{ .eflags = true },
105592 .each = .{ .once = &.{108771 .each = .{ .once = &.{
105593 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108772 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
105594 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },108773 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"2", .tmp0), ._, ._, ._ },
105595 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },108774 .{ ._, .fi_p, .stt, .memi(.dst0q, .tmp0), ._, ._, ._ },
105596 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },108775 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
105597 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108776 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105598 } },108777 } },
105599 }, .{108778 }, .{
105600 .required_features = .{ .x87, null, null, null },108779 .required_features = .{ .x87, null, null, null },
...@@ -105604,7 +108783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105604,7 +108783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105604 .{ .src = .{ .to_mem, .none, .none } },108783 .{ .src = .{ .to_mem, .none, .none } },
105605 },108784 },
105606 .extra_temps = .{108785 .extra_temps = .{
105607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108786 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105608 .{ .type = .u16, .kind = .mem },108787 .{ .type = .u16, .kind = .mem },
105609 .{ .type = .f80, .kind = .{ .reg = .st7 } },108788 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105610 .unused,108789 .unused,
...@@ -105624,15 +108803,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105624,15 +108803,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105624 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },108803 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105625 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108804 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105626 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },108805 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
105627 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108806 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
105628 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },108807 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"2", .tmp0), ._, ._, ._ },
105629 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },108808 .{ ._, .fi_p, .st, .memi(.dst0q, .tmp0), ._, ._, ._ },
105630 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },108809 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
105631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108810 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105632 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },108811 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105633 } },108812 } },
105634 }, .{108813 }, .{
105635 .required_features = .{ .@"64bit", .avx, null, null },108814 .required_cc_abi = .sysv64,
108815 .required_features = .{ .avx, null, null, null },
105636 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },108816 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105637 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },108817 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105638 .patterns = &.{108818 .patterns = &.{
...@@ -105640,11 +108820,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105640,11 +108820,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105640 },108820 },
105641 .call_frame = .{ .size = 16, .alignment = .@"16" },108821 .call_frame = .{ .size = 16, .alignment = .@"16" },
105642 .extra_temps = .{108822 .extra_temps = .{
105643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105644 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },108824 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105645 .{ .type = .f80, .kind = .{ .frame = .call_frame } },108825 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105646 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },108826 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
105647 .{ .type = .u64, .kind = .{ .reg = .rax } },108827 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105648 .unused,108828 .unused,
105649 .unused,108829 .unused,
105650 .unused,108830 .unused,
...@@ -105655,16 +108835,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105655,16 +108835,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105655 .dst_temps = .{ .mem, .unused },108835 .dst_temps = .{ .mem, .unused },
105656 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105657 .each = .{ .once = &.{108837 .each = .{ .once = &.{
105658 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108838 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
105659 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },108839 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
105660 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },108840 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105661 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },108841 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105662 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },108842 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
105663 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },108843 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
105664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108844 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105665 } },108845 } },
105666 }, .{108846 }, .{
105667 .required_features = .{ .@"64bit", .sse2, null, null },108847 .required_cc_abi = .sysv64,
108848 .required_features = .{ .sse2, null, null, null },
105668 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },108849 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105669 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },108850 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105670 .patterns = &.{108851 .patterns = &.{
...@@ -105672,11 +108853,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105672,11 +108853,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105672 },108853 },
105673 .call_frame = .{ .size = 16, .alignment = .@"16" },108854 .call_frame = .{ .size = 16, .alignment = .@"16" },
105674 .extra_temps = .{108855 .extra_temps = .{
105675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108856 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105676 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },108857 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105677 .{ .type = .f80, .kind = .{ .frame = .call_frame } },108858 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105678 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },108859 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
105679 .{ .type = .u64, .kind = .{ .reg = .rax } },108860 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105680 .unused,108861 .unused,
105681 .unused,108862 .unused,
105682 .unused,108863 .unused,
...@@ -105687,16 +108868,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105687,16 +108868,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105687 .dst_temps = .{ .mem, .unused },108868 .dst_temps = .{ .mem, .unused },
105688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108869 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105689 .each = .{ .once = &.{108870 .each = .{ .once = &.{
105690 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108871 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
105691 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },108872 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
105692 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },108873 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105693 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },108874 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105694 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },108875 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
105695 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },108876 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
105696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108877 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105697 } },108878 } },
105698 }, .{108879 }, .{
105699 .required_features = .{ .@"64bit", .sse, null, null },108880 .required_cc_abi = .sysv64,
108881 .required_features = .{ .sse, null, null, null },
105700 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },108882 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105701 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },108883 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105702 .patterns = &.{108884 .patterns = &.{
...@@ -105704,11 +108886,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105704,11 +108886,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105704 },108886 },
105705 .call_frame = .{ .size = 16, .alignment = .@"16" },108887 .call_frame = .{ .size = 16, .alignment = .@"16" },
105706 .extra_temps = .{108888 .extra_temps = .{
105707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108889 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105708 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },108890 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105709 .{ .type = .f80, .kind = .{ .frame = .call_frame } },108891 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105710 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },108892 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
105711 .{ .type = .u64, .kind = .{ .reg = .rax } },108893 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105712 .unused,108894 .unused,
105713 .unused,108895 .unused,
105714 .unused,108896 .unused,
...@@ -105719,16 +108901,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105719,16 +108901,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105719 .dst_temps = .{ .mem, .unused },108901 .dst_temps = .{ .mem, .unused },
105720 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105721 .each = .{ .once = &.{108903 .each = .{ .once = &.{
105722 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },108904 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
105723 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },108905 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
105724 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },108906 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
105725 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },108907 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105726 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },108908 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
105727 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },108909 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
105728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108910 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105729 } },108911 } },
105730 }, .{108912 }, .{
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 },
105732 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },108946 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105733 .dst_constraints = .{ .{ .signed_int = .xword }, .any },108947 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105734 .patterns = &.{108948 .patterns = &.{
...@@ -105736,7 +108950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105736,7 +108950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105736 },108950 },
105737 .call_frame = .{ .size = 16, .alignment = .@"16" },108951 .call_frame = .{ .size = 16, .alignment = .@"16" },
105738 .extra_temps = .{108952 .extra_temps = .{
105739 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },108953 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105740 .{ .type = .f80, .kind = .{ .frame = .call_frame } },108954 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105741 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },108955 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105742 .unused,108956 .unused,
...@@ -105748,7 +108962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105748,7 +108962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105748 .unused,108962 .unused,
105749 .unused,108963 .unused,
105750 },108964 },
105751 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },108965 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108966 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105753 .each = .{ .once = &.{108967 .each = .{ .once = &.{
105754 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },108968 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
...@@ -105756,7 +108970,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105756,7 +108970,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105756 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108970 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105757 } },108971 } },
105758 }, .{108972 }, .{
105759 .required_features = .{ .@"64bit", .avx, null, null },108973 .required_cc_abi = .sysv64,
108974 .required_features = .{ .avx, null, null, null },
105760 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },108975 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105761 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },108976 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105762 .patterns = &.{108977 .patterns = &.{
...@@ -105764,7 +108979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105764,7 +108979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105764 },108979 },
105765 .call_frame = .{ .size = 16, .alignment = .@"16" },108980 .call_frame = .{ .size = 16, .alignment = .@"16" },
105766 .extra_temps = .{108981 .extra_temps = .{
105767 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },108982 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105768 .{ .type = .f80, .kind = .{ .frame = .call_frame } },108983 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105769 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },108984 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105770 .unused,108985 .unused,
...@@ -105776,7 +108991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105776,7 +108991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105776 .unused,108991 .unused,
105777 .unused,108992 .unused,
105778 },108993 },
105779 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },108994 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105780 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108995 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105781 .each = .{ .once = &.{108996 .each = .{ .once = &.{
105782 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },108997 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
...@@ -105784,7 +108999,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105784,7 +108999,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105784 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108999 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105785 } },109000 } },
105786 }, .{109001 }, .{
105787 .required_features = .{ .@"64bit", .sse2, null, null },109002 .required_cc_abi = .sysv64,
109003 .required_features = .{ .sse2, null, null, null },
105788 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109004 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105789 .dst_constraints = .{ .{ .signed_int = .xword }, .any },109005 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105790 .patterns = &.{109006 .patterns = &.{
...@@ -105792,7 +109008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105792,7 +109008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105792 },109008 },
105793 .call_frame = .{ .size = 16, .alignment = .@"16" },109009 .call_frame = .{ .size = 16, .alignment = .@"16" },
105794 .extra_temps = .{109010 .extra_temps = .{
105795 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109011 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105796 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109012 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105797 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },109013 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105798 .unused,109014 .unused,
...@@ -105804,7 +109020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105804,7 +109020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105804 .unused,109020 .unused,
105805 .unused,109021 .unused,
105806 },109022 },
105807 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },109023 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105808 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105809 .each = .{ .once = &.{109025 .each = .{ .once = &.{
105810 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },109026 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
...@@ -105812,7 +109028,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105812,7 +109028,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105812 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109028 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105813 } },109029 } },
105814 }, .{109030 }, .{
105815 .required_features = .{ .@"64bit", .sse2, null, null },109031 .required_cc_abi = .sysv64,
109032 .required_features = .{ .sse2, null, null, null },
105816 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109033 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105817 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },109034 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105818 .patterns = &.{109035 .patterns = &.{
...@@ -105820,7 +109037,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105820,7 +109037,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105820 },109037 },
105821 .call_frame = .{ .size = 16, .alignment = .@"16" },109038 .call_frame = .{ .size = 16, .alignment = .@"16" },
105822 .extra_temps = .{109039 .extra_temps = .{
105823 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109040 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105824 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109041 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105825 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },109042 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105826 .unused,109043 .unused,
...@@ -105832,7 +109049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105832,7 +109049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105832 .unused,109049 .unused,
105833 .unused,109050 .unused,
105834 },109051 },
105835 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },109052 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105837 .each = .{ .once = &.{109054 .each = .{ .once = &.{
105838 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },109055 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
...@@ -105840,7 +109057,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105840,7 +109057,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105840 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109057 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105841 } },109058 } },
105842 }, .{109059 }, .{
105843 .required_features = .{ .@"64bit", .sse, null, null },109060 .required_cc_abi = .sysv64,
109061 .required_features = .{ .sse, null, null, null },
105844 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109062 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105845 .dst_constraints = .{ .{ .signed_int = .xword }, .any },109063 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105846 .patterns = &.{109064 .patterns = &.{
...@@ -105848,7 +109066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105848,7 +109066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105848 },109066 },
105849 .call_frame = .{ .size = 16, .alignment = .@"16" },109067 .call_frame = .{ .size = 16, .alignment = .@"16" },
105850 .extra_temps = .{109068 .extra_temps = .{
105851 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109069 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105852 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109070 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105853 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },109071 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105854 .unused,109072 .unused,
...@@ -105860,7 +109078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105860,7 +109078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105860 .unused,109078 .unused,
105861 .unused,109079 .unused,
105862 },109080 },
105863 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },109081 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105864 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109082 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105865 .each = .{ .once = &.{109083 .each = .{ .once = &.{
105866 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },109084 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
...@@ -105868,7 +109086,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105868,7 +109086,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105868 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109086 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105869 } },109087 } },
105870 }, .{109088 }, .{
105871 .required_features = .{ .@"64bit", .sse, null, null },109089 .required_cc_abi = .sysv64,
109090 .required_features = .{ .sse, null, null, null },
105872 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109091 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105873 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },109092 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105874 .patterns = &.{109093 .patterns = &.{
...@@ -105876,7 +109095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105876,7 +109095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105876 },109095 },
105877 .call_frame = .{ .size = 16, .alignment = .@"16" },109096 .call_frame = .{ .size = 16, .alignment = .@"16" },
105878 .extra_temps = .{109097 .extra_temps = .{
105879 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109098 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105880 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109099 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105881 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },109100 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105882 .unused,109101 .unused,
...@@ -105888,7 +109107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105888,7 +109107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105888 .unused,109107 .unused,
105889 .unused,109108 .unused,
105890 },109109 },
105891 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },109110 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109111 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105893 .each = .{ .once = &.{109112 .each = .{ .once = &.{
105894 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },109113 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
...@@ -105896,7 +109115,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105896,7 +109115,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105896 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105897 } },109116 } },
105898 }, .{109117 }, .{
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 },
105900 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109174 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105901 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },109175 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105902 .patterns = &.{109176 .patterns = &.{
...@@ -105904,12 +109178,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105904,12 +109178,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105904 },109178 },
105905 .call_frame = .{ .size = 16, .alignment = .@"16" },109179 .call_frame = .{ .size = 16, .alignment = .@"16" },
105906 .extra_temps = .{109180 .extra_temps = .{
105907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105908 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109182 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105909 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109183 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105910 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },109184 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105911 .{ .type = .u64, .kind = .{ .reg = .rax } },109185 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105912 .{ .type = .i64, .kind = .{ .reg = .rdx } },109186 .unused,
105913 .unused,109187 .unused,
105914 .unused,109188 .unused,
105915 .unused,109189 .unused,
...@@ -105919,17 +109193,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105919,17 +109193,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105919 .dst_temps = .{ .mem, .unused },109193 .dst_temps = .{ .mem, .unused },
105920 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109194 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105921 .each = .{ .once = &.{109195 .each = .{ .once = &.{
105922 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109196 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
105923 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109197 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
105924 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },109198 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105925 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109199 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105926 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },109200 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
105927 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },109201 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
105928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109202 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
105929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109203 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105930 } },109204 } },
105931 }, .{109205 }, .{
105932 .required_features = .{ .@"64bit", .avx, null, null },109206 .required_cc_abi = .sysv64,
109207 .required_features = .{ .avx, null, null, null },
105933 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105934 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },109209 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
105935 .patterns = &.{109210 .patterns = &.{
...@@ -105937,12 +109212,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105937,12 +109212,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105937 },109212 },
105938 .call_frame = .{ .size = 16, .alignment = .@"16" },109213 .call_frame = .{ .size = 16, .alignment = .@"16" },
105939 .extra_temps = .{109214 .extra_temps = .{
105940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109215 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105941 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109216 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105942 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109217 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105943 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },109218 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105944 .{ .type = .u64, .kind = .{ .reg = .rax } },109219 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105945 .{ .type = .u64, .kind = .{ .reg = .rdx } },109220 .unused,
105946 .unused,109221 .unused,
105947 .unused,109222 .unused,
105948 .unused,109223 .unused,
...@@ -105952,17 +109227,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105952,17 +109227,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105952 .dst_temps = .{ .mem, .unused },109227 .dst_temps = .{ .mem, .unused },
105953 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105954 .each = .{ .once = &.{109229 .each = .{ .once = &.{
105955 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109230 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
105956 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109231 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
105957 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },109232 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105958 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109233 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105959 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },109234 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
105960 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },109235 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
105961 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109236 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
105962 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109237 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105963 } },109238 } },
105964 }, .{109239 }, .{
105965 .required_features = .{ .@"64bit", .sse2, null, null },109240 .required_cc_abi = .sysv64,
109241 .required_features = .{ .sse2, null, null, null },
105966 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109242 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105967 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },109243 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105968 .patterns = &.{109244 .patterns = &.{
...@@ -105970,12 +109246,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105970,12 +109246,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105970 },109246 },
105971 .call_frame = .{ .size = 16, .alignment = .@"16" },109247 .call_frame = .{ .size = 16, .alignment = .@"16" },
105972 .extra_temps = .{109248 .extra_temps = .{
105973 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109249 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105974 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109250 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105975 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109251 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105976 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },109252 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105977 .{ .type = .u64, .kind = .{ .reg = .rax } },109253 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105978 .{ .type = .i64, .kind = .{ .reg = .rdx } },109254 .unused,
105979 .unused,109255 .unused,
105980 .unused,109256 .unused,
105981 .unused,109257 .unused,
...@@ -105985,17 +109261,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105985,17 +109261,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105985 .dst_temps = .{ .mem, .unused },109261 .dst_temps = .{ .mem, .unused },
105986 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109262 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105987 .each = .{ .once = &.{109263 .each = .{ .once = &.{
105988 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109264 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
105989 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109265 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
105990 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },109266 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105991 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109267 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105992 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },109268 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
105993 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },109269 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
105994 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109270 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
105995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109271 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105996 } },109272 } },
105997 }, .{109273 }, .{
105998 .required_features = .{ .@"64bit", .sse2, null, null },109274 .required_cc_abi = .sysv64,
109275 .required_features = .{ .sse2, null, null, null },
105999 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109276 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106000 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },109277 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106001 .patterns = &.{109278 .patterns = &.{
...@@ -106003,12 +109280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106003,12 +109280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106003 },109280 },
106004 .call_frame = .{ .size = 16, .alignment = .@"16" },109281 .call_frame = .{ .size = 16, .alignment = .@"16" },
106005 .extra_temps = .{109282 .extra_temps = .{
106006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109283 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106007 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109284 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106008 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109285 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106009 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },109286 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106010 .{ .type = .u64, .kind = .{ .reg = .rax } },109287 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106011 .{ .type = .u64, .kind = .{ .reg = .rdx } },109288 .unused,
106012 .unused,109289 .unused,
106013 .unused,109290 .unused,
106014 .unused,109291 .unused,
...@@ -106018,17 +109295,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106018,17 +109295,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106018 .dst_temps = .{ .mem, .unused },109295 .dst_temps = .{ .mem, .unused },
106019 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109296 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106020 .each = .{ .once = &.{109297 .each = .{ .once = &.{
106021 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109298 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106022 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109299 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
106023 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },109300 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
106024 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109301 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106025 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },109302 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
106026 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },109303 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
106027 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109304 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109305 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106029 } },109306 } },
106030 }, .{109307 }, .{
106031 .required_features = .{ .@"64bit", .sse, null, null },109308 .required_cc_abi = .sysv64,
109309 .required_features = .{ .sse, null, null, null },
106032 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109310 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106033 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },109311 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
106034 .patterns = &.{109312 .patterns = &.{
...@@ -106036,12 +109314,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106036,12 +109314,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106036 },109314 },
106037 .call_frame = .{ .size = 16, .alignment = .@"16" },109315 .call_frame = .{ .size = 16, .alignment = .@"16" },
106038 .extra_temps = .{109316 .extra_temps = .{
106039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109317 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106040 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109318 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106041 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109319 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106042 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },109320 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
106043 .{ .type = .u64, .kind = .{ .reg = .rax } },109321 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106044 .{ .type = .i64, .kind = .{ .reg = .rdx } },109322 .unused,
106045 .unused,109323 .unused,
106046 .unused,109324 .unused,
106047 .unused,109325 .unused,
...@@ -106051,17 +109329,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106051,17 +109329,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106051 .dst_temps = .{ .mem, .unused },109329 .dst_temps = .{ .mem, .unused },
106052 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106053 .each = .{ .once = &.{109331 .each = .{ .once = &.{
106054 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109332 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106055 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109333 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
106056 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },109334 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
106057 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109335 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106058 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },109336 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
106059 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },109337 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
106060 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109338 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106061 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109339 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106062 } },109340 } },
106063 }, .{109341 }, .{
106064 .required_features = .{ .@"64bit", .sse, null, null },109342 .required_cc_abi = .sysv64,
109343 .required_features = .{ .sse, null, null, null },
106065 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109344 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106066 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },109345 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106067 .patterns = &.{109346 .patterns = &.{
...@@ -106069,12 +109348,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106069,12 +109348,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106069 },109348 },
106070 .call_frame = .{ .size = 16, .alignment = .@"16" },109349 .call_frame = .{ .size = 16, .alignment = .@"16" },
106071 .extra_temps = .{109350 .extra_temps = .{
106072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109351 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106073 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109352 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106074 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109353 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106075 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },109354 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106076 .{ .type = .u64, .kind = .{ .reg = .rax } },109355 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106077 .{ .type = .u64, .kind = .{ .reg = .rdx } },109356 .unused,
106078 .unused,109357 .unused,
106079 .unused,109358 .unused,
106080 .unused,109359 .unused,
...@@ -106084,17 +109363,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106084,17 +109363,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106084 .dst_temps = .{ .mem, .unused },109363 .dst_temps = .{ .mem, .unused },
106085 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109364 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106086 .each = .{ .once = &.{109365 .each = .{ .once = &.{
106087 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109366 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106088 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109367 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
106089 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },109368 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
106090 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109369 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106091 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },109370 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
106092 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },109371 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
106093 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109372 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109373 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106095 } },109374 } },
106096 }, .{109375 }, .{
106097 .required_features = .{ .@"64bit", .avx, null, null },109376 .required_cc_abi = .sysv64,
109377 .required_features = .{ .avx, null, null, null },
106098 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109378 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106099 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },109379 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106100 .patterns = &.{109380 .patterns = &.{
...@@ -106102,9 +109382,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106102,9 +109382,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106102 },109382 },
106103 .call_frame = .{ .size = 16, .alignment = .@"16" },109383 .call_frame = .{ .size = 16, .alignment = .@"16" },
106104 .extra_temps = .{109384 .extra_temps = .{
106105 .{ .type = .usize, .kind = .{ .reg = .rdi } },109385 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106106 .{ .type = .usize, .kind = .{ .reg = .rsi } },109386 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106107 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109387 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106108 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109388 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106109 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },109389 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106110 .unused,109390 .unused,
...@@ -106124,7 +109404,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106124,7 +109404,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106124 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },109404 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106125 } },109405 } },
106126 }, .{109406 }, .{
106127 .required_features = .{ .@"64bit", .avx, null, null },109407 .required_cc_abi = .sysv64,
109408 .required_features = .{ .avx, null, null, null },
106128 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109409 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106129 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },109410 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106130 .patterns = &.{109411 .patterns = &.{
...@@ -106132,9 +109413,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106132,9 +109413,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106132 },109413 },
106133 .call_frame = .{ .size = 16, .alignment = .@"16" },109414 .call_frame = .{ .size = 16, .alignment = .@"16" },
106134 .extra_temps = .{109415 .extra_temps = .{
106135 .{ .type = .usize, .kind = .{ .reg = .rdi } },109416 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106136 .{ .type = .usize, .kind = .{ .reg = .rsi } },109417 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106137 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109418 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106138 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109419 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106139 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },109420 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106140 .unused,109421 .unused,
...@@ -106154,7 +109435,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106154,7 +109435,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106154 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },109435 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106155 } },109436 } },
106156 }, .{109437 }, .{
106157 .required_features = .{ .@"64bit", .sse2, null, null },109438 .required_cc_abi = .sysv64,
109439 .required_features = .{ .sse2, null, null, null },
106158 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109440 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106159 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },109441 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106160 .patterns = &.{109442 .patterns = &.{
...@@ -106162,9 +109444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106162,9 +109444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106162 },109444 },
106163 .call_frame = .{ .size = 16, .alignment = .@"16" },109445 .call_frame = .{ .size = 16, .alignment = .@"16" },
106164 .extra_temps = .{109446 .extra_temps = .{
106165 .{ .type = .usize, .kind = .{ .reg = .rdi } },109447 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106166 .{ .type = .usize, .kind = .{ .reg = .rsi } },109448 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106167 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109449 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106168 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109450 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106169 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },109451 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106170 .unused,109452 .unused,
...@@ -106184,7 +109466,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106184,7 +109466,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106184 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },109466 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106185 } },109467 } },
106186 }, .{109468 }, .{
106187 .required_features = .{ .@"64bit", .sse2, null, null },109469 .required_cc_abi = .sysv64,
109470 .required_features = .{ .sse2, null, null, null },
106188 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109471 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106189 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },109472 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106190 .patterns = &.{109473 .patterns = &.{
...@@ -106192,9 +109475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106192,9 +109475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106192 },109475 },
106193 .call_frame = .{ .size = 16, .alignment = .@"16" },109476 .call_frame = .{ .size = 16, .alignment = .@"16" },
106194 .extra_temps = .{109477 .extra_temps = .{
106195 .{ .type = .usize, .kind = .{ .reg = .rdi } },109478 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106196 .{ .type = .usize, .kind = .{ .reg = .rsi } },109479 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106197 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109480 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106198 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109481 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106199 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },109482 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106200 .unused,109483 .unused,
...@@ -106214,7 +109497,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106214,7 +109497,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106214 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },109497 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106215 } },109498 } },
106216 }, .{109499 }, .{
106217 .required_features = .{ .@"64bit", .sse, null, null },109500 .required_cc_abi = .sysv64,
109501 .required_features = .{ .sse, null, null, null },
106218 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109502 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106219 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },109503 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106220 .patterns = &.{109504 .patterns = &.{
...@@ -106222,9 +109506,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106222,9 +109506,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106222 },109506 },
106223 .call_frame = .{ .size = 16, .alignment = .@"16" },109507 .call_frame = .{ .size = 16, .alignment = .@"16" },
106224 .extra_temps = .{109508 .extra_temps = .{
106225 .{ .type = .usize, .kind = .{ .reg = .rdi } },109509 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106226 .{ .type = .usize, .kind = .{ .reg = .rsi } },109510 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106227 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109511 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106228 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109512 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106229 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },109513 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106230 .unused,109514 .unused,
...@@ -106244,7 +109528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106244,7 +109528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106244 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },109528 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106245 } },109529 } },
106246 }, .{109530 }, .{
106247 .required_features = .{ .@"64bit", .sse, null, null },109531 .required_cc_abi = .sysv64,
109532 .required_features = .{ .sse, null, null, null },
106248 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },109533 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106249 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },109534 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106250 .patterns = &.{109535 .patterns = &.{
...@@ -106252,9 +109537,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106252,9 +109537,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106252 },109537 },
106253 .call_frame = .{ .size = 16, .alignment = .@"16" },109538 .call_frame = .{ .size = 16, .alignment = .@"16" },
106254 .extra_temps = .{109539 .extra_temps = .{
106255 .{ .type = .usize, .kind = .{ .reg = .rdi } },109540 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106256 .{ .type = .usize, .kind = .{ .reg = .rsi } },109541 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106257 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109542 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106258 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109543 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106259 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },109544 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106260 .unused,109545 .unused,
...@@ -106274,7 +109559,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106274,7 +109559,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106274 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },109559 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106275 } },109560 } },
106276 }, .{109561 }, .{
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 },
106278 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109622 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106279 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },109623 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106280 .patterns = &.{109624 .patterns = &.{
...@@ -106282,11 +109626,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106282,11 +109626,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106282 },109626 },
106283 .call_frame = .{ .size = 16, .alignment = .@"16" },109627 .call_frame = .{ .size = 16, .alignment = .@"16" },
106284 .extra_temps = .{109628 .extra_temps = .{
106285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109629 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106286 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109630 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106287 .{ .type = .usize, .kind = .{ .reg = .rdi } },109631 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106288 .{ .type = .usize, .kind = .{ .reg = .rsi } },109632 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106289 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109633 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106290 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109634 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106291 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },109635 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106292 .unused,109636 .unused,
...@@ -106297,19 +109641,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106297,19 +109641,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106297 .dst_temps = .{ .mem, .unused },109641 .dst_temps = .{ .mem, .unused },
106298 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109642 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106299 .each = .{ .once = &.{109643 .each = .{ .once = &.{
106300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109644 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106301 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },109645 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
106302 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109646 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106303 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },109647 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106304 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },109648 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106305 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },109649 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106306 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },109650 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106307 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },109651 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
106308 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109652 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106309 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109653 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106310 } },109654 } },
106311 }, .{109655 }, .{
106312 .required_features = .{ .@"64bit", .avx, null, null },109656 .required_cc_abi = .sysv64,
109657 .required_features = .{ .avx, null, null, null },
106313 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109658 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106314 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },109659 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106315 .patterns = &.{109660 .patterns = &.{
...@@ -106317,11 +109662,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106317,11 +109662,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106317 },109662 },
106318 .call_frame = .{ .size = 16, .alignment = .@"16" },109663 .call_frame = .{ .size = 16, .alignment = .@"16" },
106319 .extra_temps = .{109664 .extra_temps = .{
106320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109665 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106321 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109666 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106322 .{ .type = .usize, .kind = .{ .reg = .rdi } },109667 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106323 .{ .type = .usize, .kind = .{ .reg = .rsi } },109668 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106324 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109669 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106325 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109670 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106326 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },109671 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106327 .unused,109672 .unused,
...@@ -106332,19 +109677,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106332,19 +109677,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106332 .dst_temps = .{ .mem, .unused },109677 .dst_temps = .{ .mem, .unused },
106333 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109678 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106334 .each = .{ .once = &.{109679 .each = .{ .once = &.{
106335 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109680 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106336 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },109681 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
106337 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109682 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106338 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },109683 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106339 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },109684 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106340 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },109685 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106341 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },109686 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106342 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },109687 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
106343 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109688 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106344 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109689 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106345 } },109690 } },
106346 }, .{109691 }, .{
106347 .required_features = .{ .@"64bit", .sse2, null, null },109692 .required_cc_abi = .sysv64,
109693 .required_features = .{ .sse2, null, null, null },
106348 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109694 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106349 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },109695 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106350 .patterns = &.{109696 .patterns = &.{
...@@ -106352,11 +109698,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106352,11 +109698,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106352 },109698 },
106353 .call_frame = .{ .size = 16, .alignment = .@"16" },109699 .call_frame = .{ .size = 16, .alignment = .@"16" },
106354 .extra_temps = .{109700 .extra_temps = .{
106355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109701 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106356 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109702 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106357 .{ .type = .usize, .kind = .{ .reg = .rdi } },109703 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106358 .{ .type = .usize, .kind = .{ .reg = .rsi } },109704 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106359 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109705 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106360 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109706 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106361 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },109707 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106362 .unused,109708 .unused,
...@@ -106367,19 +109713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106367,19 +109713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106367 .dst_temps = .{ .mem, .unused },109713 .dst_temps = .{ .mem, .unused },
106368 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106369 .each = .{ .once = &.{109715 .each = .{ .once = &.{
106370 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109716 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106371 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },109717 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
106372 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109718 .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106373 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },109719 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106374 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },109720 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106375 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },109721 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106376 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },109722 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106377 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },109723 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
106378 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109724 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106379 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109725 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106380 } },109726 } },
106381 }, .{109727 }, .{
106382 .required_features = .{ .@"64bit", .sse2, null, null },109728 .required_cc_abi = .sysv64,
109729 .required_features = .{ .sse2, null, null, null },
106383 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109730 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106384 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },109731 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106385 .patterns = &.{109732 .patterns = &.{
...@@ -106387,11 +109734,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106387,11 +109734,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106387 },109734 },
106388 .call_frame = .{ .size = 16, .alignment = .@"16" },109735 .call_frame = .{ .size = 16, .alignment = .@"16" },
106389 .extra_temps = .{109736 .extra_temps = .{
106390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106391 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109738 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106392 .{ .type = .usize, .kind = .{ .reg = .rdi } },109739 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106393 .{ .type = .usize, .kind = .{ .reg = .rsi } },109740 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106394 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109741 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106395 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109742 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106396 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },109743 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106397 .unused,109744 .unused,
...@@ -106402,19 +109749,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106402,19 +109749,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106402 .dst_temps = .{ .mem, .unused },109749 .dst_temps = .{ .mem, .unused },
106403 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109750 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106404 .each = .{ .once = &.{109751 .each = .{ .once = &.{
106405 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109752 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106406 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },109753 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
106407 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109754 .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106408 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },109755 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106409 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },109756 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106410 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },109757 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106411 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },109758 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106412 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },109759 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
106413 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109760 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106414 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109761 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106415 } },109762 } },
106416 }, .{109763 }, .{
106417 .required_features = .{ .@"64bit", .sse, null, null },109764 .required_cc_abi = .sysv64,
109765 .required_features = .{ .sse, null, null, null },
106418 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109766 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106419 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },109767 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106420 .patterns = &.{109768 .patterns = &.{
...@@ -106422,11 +109770,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106422,11 +109770,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106422 },109770 },
106423 .call_frame = .{ .size = 16, .alignment = .@"16" },109771 .call_frame = .{ .size = 16, .alignment = .@"16" },
106424 .extra_temps = .{109772 .extra_temps = .{
106425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106426 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109774 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106427 .{ .type = .usize, .kind = .{ .reg = .rdi } },109775 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106428 .{ .type = .usize, .kind = .{ .reg = .rsi } },109776 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106429 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109777 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106430 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109778 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106431 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },109779 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106432 .unused,109780 .unused,
...@@ -106437,19 +109785,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106437,19 +109785,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106437 .dst_temps = .{ .mem, .unused },109785 .dst_temps = .{ .mem, .unused },
106438 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109786 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106439 .each = .{ .once = &.{109787 .each = .{ .once = &.{
106440 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109788 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106441 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },109789 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
106442 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109790 .{ .@"0:", ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106443 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },109791 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106444 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },109792 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106445 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },109793 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
106446 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },109794 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106447 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },109795 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
106448 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109796 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109797 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106450 } },109798 } },
106451 }, .{109799 }, .{
106452 .required_features = .{ .@"64bit", .sse, null, null },109800 .required_cc_abi = .sysv64,
109801 .required_features = .{ .sse, null, null, null },
106453 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },109802 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106454 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },109803 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106455 .patterns = &.{109804 .patterns = &.{
...@@ -106457,11 +109806,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106457,11 +109806,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106457 },109806 },
106458 .call_frame = .{ .size = 16, .alignment = .@"16" },109807 .call_frame = .{ .size = 16, .alignment = .@"16" },
106459 .extra_temps = .{109808 .extra_temps = .{
106460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109809 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106461 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109810 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106462 .{ .type = .usize, .kind = .{ .reg = .rdi } },109811 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106463 .{ .type = .usize, .kind = .{ .reg = .rsi } },109812 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
106464 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },109813 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106465 .{ .type = .f80, .kind = .{ .frame = .call_frame } },109814 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106466 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },109815 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106467 .unused,109816 .unused,
...@@ -106472,16 +109821,84 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106472,16 +109821,84 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106472 .dst_temps = .{ .mem, .unused },109821 .dst_temps = .{ .mem, .unused },
106473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109822 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106474 .each = .{ .once = &.{109823 .each = .{ .once = &.{
106475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109824 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
106476 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },109825 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
106477 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },109826 .{ .@"0:", ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106478 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },109827 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106479 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },109828 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106480 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },109829 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
106481 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },109830 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106482 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },109831 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
106483 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109832 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
106485 } },109902 } },
106486 }, .{109903 }, .{
106487 .required_features = .{ .avx, .slow_incdec, null, null },109904 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -106493,10 +109910,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106493,10 +109910,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106493 .call_frame = .{ .alignment = .@"16" },109910 .call_frame = .{ .alignment = .@"16" },
106494 .extra_temps = .{109911 .extra_temps = .{
106495 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109912 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109913 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106497 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },109914 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106498 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },109915 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106499 .{ .type = .i32, .kind = .{ .reg = .eax } },109916 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106500 .unused,109917 .unused,
106501 .unused,109918 .unused,
106502 .unused,109919 .unused,
...@@ -106507,14 +109924,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106507,14 +109924,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106507 .dst_temps = .{ .mem, .unused },109924 .dst_temps = .{ .mem, .unused },
106508 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109925 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106509 .each = .{ .once = &.{109926 .each = .{ .once = &.{
106510 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },109927 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
106511 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },109928 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106512 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },109929 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106513 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109930 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106514 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },109931 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
106515 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },109932 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
106516 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },109933 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
106517 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109934 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106518 } },109935 } },
106519 }, .{109936 }, .{
106520 .required_features = .{ .avx, null, null, null },109937 .required_features = .{ .avx, null, null, null },
...@@ -106526,10 +109943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106526,10 +109943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106526 .call_frame = .{ .alignment = .@"16" },109943 .call_frame = .{ .alignment = .@"16" },
106527 .extra_temps = .{109944 .extra_temps = .{
106528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109945 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106530 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },109947 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106531 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },109948 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106532 .{ .type = .i32, .kind = .{ .reg = .eax } },109949 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106533 .unused,109950 .unused,
106534 .unused,109951 .unused,
106535 .unused,109952 .unused,
...@@ -106540,14 +109957,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106540,14 +109957,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106540 .dst_temps = .{ .mem, .unused },109957 .dst_temps = .{ .mem, .unused },
106541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109958 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106542 .each = .{ .once = &.{109959 .each = .{ .once = &.{
106543 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },109960 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
106544 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },109961 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106545 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },109962 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106546 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109963 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106547 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },109964 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
106548 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },109965 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
106549 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },109966 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
106550 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },109967 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
106551 } },109968 } },
106552 }, .{109969 }, .{
106553 .required_features = .{ .sse2, .slow_incdec, null, null },109970 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -106559,10 +109976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106559,10 +109976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106559 .call_frame = .{ .alignment = .@"16" },109976 .call_frame = .{ .alignment = .@"16" },
106560 .extra_temps = .{109977 .extra_temps = .{
106561 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },109978 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109979 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106563 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },109980 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106564 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },109981 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106565 .{ .type = .i32, .kind = .{ .reg = .eax } },109982 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106566 .unused,109983 .unused,
106567 .unused,109984 .unused,
106568 .unused,109985 .unused,
...@@ -106573,14 +109990,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106573,14 +109990,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106573 .dst_temps = .{ .mem, .unused },109990 .dst_temps = .{ .mem, .unused },
106574 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109991 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106575 .each = .{ .once = &.{109992 .each = .{ .once = &.{
106576 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },109993 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
106577 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },109994 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106578 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },109995 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106579 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },109996 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106580 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },109997 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
106581 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },109998 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
106582 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },109999 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
106583 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110000 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106584 } },110001 } },
106585 }, .{110002 }, .{
106586 .required_features = .{ .sse2, null, null, null },110003 .required_features = .{ .sse2, null, null, null },
...@@ -106592,10 +110009,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106592,10 +110009,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106592 .call_frame = .{ .alignment = .@"16" },110009 .call_frame = .{ .alignment = .@"16" },
106593 .extra_temps = .{110010 .extra_temps = .{
106594 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },110011 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110012 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106596 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110013 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106597 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110014 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106598 .{ .type = .i32, .kind = .{ .reg = .eax } },110015 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106599 .unused,110016 .unused,
106600 .unused,110017 .unused,
106601 .unused,110018 .unused,
...@@ -106606,14 +110023,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106606,14 +110023,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106606 .dst_temps = .{ .mem, .unused },110023 .dst_temps = .{ .mem, .unused },
106607 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106608 .each = .{ .once = &.{110025 .each = .{ .once = &.{
106609 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },110026 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
106610 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110027 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106611 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },110028 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106612 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },110029 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106613 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },110030 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
106614 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },110031 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
106615 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },110032 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
106616 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },110033 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
106617 } },110034 } },
106618 }, .{110035 }, .{
106619 .required_features = .{ .sse, .slow_incdec, null, null },110036 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -106625,10 +110042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106625,10 +110042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106625 .call_frame = .{ .alignment = .@"16" },110042 .call_frame = .{ .alignment = .@"16" },
106626 .extra_temps = .{110043 .extra_temps = .{
106627 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },110044 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110045 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106629 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110046 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106630 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110047 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106631 .{ .type = .i32, .kind = .{ .reg = .eax } },110048 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106632 .unused,110049 .unused,
106633 .unused,110050 .unused,
106634 .unused,110051 .unused,
...@@ -106639,14 +110056,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106639,14 +110056,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106639 .dst_temps = .{ .mem, .unused },110056 .dst_temps = .{ .mem, .unused },
106640 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106641 .each = .{ .once = &.{110058 .each = .{ .once = &.{
106642 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },110059 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
106643 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110060 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106644 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },110061 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
106645 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },110062 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106646 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },110063 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
106647 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },110064 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
106648 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },110065 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
106649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110066 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106650 } },110067 } },
106651 }, .{110068 }, .{
106652 .required_features = .{ .sse, null, null, null },110069 .required_features = .{ .sse, null, null, null },
...@@ -106658,10 +110075,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106658,10 +110075,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106658 .call_frame = .{ .alignment = .@"16" },110075 .call_frame = .{ .alignment = .@"16" },
106659 .extra_temps = .{110076 .extra_temps = .{
106660 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },110077 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110078 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106662 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110079 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106663 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110080 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106664 .{ .type = .i32, .kind = .{ .reg = .eax } },110081 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106665 .unused,110082 .unused,
106666 .unused,110083 .unused,
106667 .unused,110084 .unused,
...@@ -106672,14 +110089,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106672,14 +110089,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106672 .dst_temps = .{ .mem, .unused },110089 .dst_temps = .{ .mem, .unused },
106673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110090 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106674 .each = .{ .once = &.{110091 .each = .{ .once = &.{
106675 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },110092 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
106676 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110093 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106677 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },110094 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
106678 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },110095 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106679 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },110096 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
106680 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },110097 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
106681 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },110098 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
106682 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },110099 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
106683 } },110100 } },
106684 }, .{110101 }, .{
106685 .required_features = .{ .avx, null, null, null },110102 .required_features = .{ .avx, null, null, null },
...@@ -106690,10 +110107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106690,10 +110107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106690 },110107 },
106691 .call_frame = .{ .alignment = .@"16" },110108 .call_frame = .{ .alignment = .@"16" },
106692 .extra_temps = .{110109 .extra_temps = .{
106693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110110 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106694 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110111 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106695 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110112 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106696 .{ .type = .i32, .kind = .{ .reg = .eax } },110113 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106697 .unused,110114 .unused,
106698 .unused,110115 .unused,
106699 .unused,110116 .unused,
...@@ -106705,12 +110122,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106705,12 +110122,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106705 .dst_temps = .{ .mem, .unused },110122 .dst_temps = .{ .mem, .unused },
106706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110123 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106707 .each = .{ .once = &.{110124 .each = .{ .once = &.{
106708 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110125 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106709 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },110126 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
106710 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110127 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106711 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },110128 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
106712 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110129 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110130 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106714 } },110131 } },
106715 }, .{110132 }, .{
106716 .required_features = .{ .sse2, null, null, null },110133 .required_features = .{ .sse2, null, null, null },
...@@ -106721,10 +110138,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106721,10 +110138,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106721 },110138 },
106722 .call_frame = .{ .alignment = .@"16" },110139 .call_frame = .{ .alignment = .@"16" },
106723 .extra_temps = .{110140 .extra_temps = .{
106724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110141 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106725 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110142 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106726 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110143 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106727 .{ .type = .i32, .kind = .{ .reg = .eax } },110144 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106728 .unused,110145 .unused,
106729 .unused,110146 .unused,
106730 .unused,110147 .unused,
...@@ -106736,12 +110153,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106736,12 +110153,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106736 .dst_temps = .{ .mem, .unused },110153 .dst_temps = .{ .mem, .unused },
106737 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110154 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106738 .each = .{ .once = &.{110155 .each = .{ .once = &.{
106739 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110156 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106740 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },110157 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
106741 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110158 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106742 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },110159 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
106743 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110160 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106744 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110161 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106745 } },110162 } },
106746 }, .{110163 }, .{
106747 .required_features = .{ .sse, null, null, null },110164 .required_features = .{ .sse, null, null, null },
...@@ -106752,10 +110169,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106752,10 +110169,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106752 },110169 },
106753 .call_frame = .{ .alignment = .@"16" },110170 .call_frame = .{ .alignment = .@"16" },
106754 .extra_temps = .{110171 .extra_temps = .{
106755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110173 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106757 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110174 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106758 .{ .type = .i32, .kind = .{ .reg = .eax } },110175 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106759 .unused,110176 .unused,
106760 .unused,110177 .unused,
106761 .unused,110178 .unused,
...@@ -106767,19 +110184,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106767,19 +110184,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106767 .dst_temps = .{ .mem, .unused },110184 .dst_temps = .{ .mem, .unused },
106768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106769 .each = .{ .once = &.{110186 .each = .{ .once = &.{
106770 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110187 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106771 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },110188 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
106772 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110189 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106773 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },110190 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
106774 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110191 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106775 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110192 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106776 } },110193 } },
106777 }, .{110194 }, .{
106778 .required_features = .{ .sse, null, null, null },110195 .required_features = .{ .sse, null, null, null },
106779 .src_constraints = .{ .{ .float = .xword }, .any, .any },110196 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106780 .dst_constraints = .{ .{ .signed_int = .dword }, .any },110197 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
106781 .patterns = &.{110198 .patterns = &.{
106782 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },110199 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
106783 },110200 },
106784 .call_frame = .{ .alignment = .@"16" },110201 .call_frame = .{ .alignment = .@"16" },
106785 .extra_temps = .{110202 .extra_temps = .{
...@@ -106795,7 +110212,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106795,7 +110212,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106795 .unused,110212 .unused,
106796 .unused,110213 .unused,
106797 },110214 },
106798 .dst_temps = .{ .{ .reg = .eax }, .unused },110215 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
106799 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110216 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106800 .each = .{ .once = &.{110217 .each = .{ .once = &.{
106801 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },110218 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -106805,7 +110222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106805,7 +110222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106805 .src_constraints = .{ .{ .float = .xword }, .any, .any },110222 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106806 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },110223 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
106807 .patterns = &.{110224 .patterns = &.{
106808 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },110225 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
106809 },110226 },
106810 .call_frame = .{ .alignment = .@"16" },110227 .call_frame = .{ .alignment = .@"16" },
106811 .extra_temps = .{110228 .extra_temps = .{
...@@ -106821,7 +110238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106821,7 +110238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106821 .unused,110238 .unused,
106822 .unused,110239 .unused,
106823 },110240 },
106824 .dst_temps = .{ .{ .reg = .eax }, .unused },110241 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
106825 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110242 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106826 .each = .{ .once = &.{110243 .each = .{ .once = &.{
106827 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },110244 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -106835,10 +110252,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106835,10 +110252,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106835 },110252 },
106836 .call_frame = .{ .alignment = .@"16" },110253 .call_frame = .{ .alignment = .@"16" },
106837 .extra_temps = .{110254 .extra_temps = .{
106838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106839 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110256 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106840 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110257 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106841 .{ .type = .i32, .kind = .{ .reg = .eax } },110258 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106842 .unused,110259 .unused,
106843 .unused,110260 .unused,
106844 .unused,110261 .unused,
...@@ -106850,12 +110267,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106850,12 +110267,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106850 .dst_temps = .{ .mem, .unused },110267 .dst_temps = .{ .mem, .unused },
106851 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106852 .each = .{ .once = &.{110269 .each = .{ .once = &.{
106853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110270 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106854 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110271 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106855 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110272 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106856 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },110273 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106857 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },110274 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110275 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106859 } },110276 } },
106860 }, .{110277 }, .{
106861 .required_features = .{ .avx, null, null, null },110278 .required_features = .{ .avx, null, null, null },
...@@ -106866,10 +110283,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106866,10 +110283,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106866 },110283 },
106867 .call_frame = .{ .alignment = .@"16" },110284 .call_frame = .{ .alignment = .@"16" },
106868 .extra_temps = .{110285 .extra_temps = .{
106869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110286 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110287 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106871 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },110288 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106872 .{ .type = .u32, .kind = .{ .reg = .eax } },110289 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106873 .unused,110290 .unused,
106874 .unused,110291 .unused,
106875 .unused,110292 .unused,
...@@ -106881,12 +110298,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106881,12 +110298,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106881 .dst_temps = .{ .mem, .unused },110298 .dst_temps = .{ .mem, .unused },
106882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110299 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106883 .each = .{ .once = &.{110300 .each = .{ .once = &.{
106884 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110301 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106885 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110302 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106886 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110303 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106887 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },110304 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106888 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },110305 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110306 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106890 } },110307 } },
106891 }, .{110308 }, .{
106892 .required_features = .{ .sse2, null, null, null },110309 .required_features = .{ .sse2, null, null, null },
...@@ -106897,10 +110314,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106897,10 +110314,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106897 },110314 },
106898 .call_frame = .{ .alignment = .@"16" },110315 .call_frame = .{ .alignment = .@"16" },
106899 .extra_temps = .{110316 .extra_temps = .{
106900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110317 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110318 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106902 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110319 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106903 .{ .type = .i32, .kind = .{ .reg = .eax } },110320 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106904 .unused,110321 .unused,
106905 .unused,110322 .unused,
106906 .unused,110323 .unused,
...@@ -106912,12 +110329,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106912,12 +110329,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106912 .dst_temps = .{ .mem, .unused },110329 .dst_temps = .{ .mem, .unused },
106913 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106914 .each = .{ .once = &.{110331 .each = .{ .once = &.{
106915 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110332 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106916 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110333 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106917 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110334 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106918 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },110335 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106919 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },110336 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110337 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106921 } },110338 } },
106922 }, .{110339 }, .{
106923 .required_features = .{ .sse2, null, null, null },110340 .required_features = .{ .sse2, null, null, null },
...@@ -106928,10 +110345,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106928,10 +110345,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106928 },110345 },
106929 .call_frame = .{ .alignment = .@"16" },110346 .call_frame = .{ .alignment = .@"16" },
106930 .extra_temps = .{110347 .extra_temps = .{
106931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110348 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106932 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110349 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106933 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },110350 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106934 .{ .type = .u32, .kind = .{ .reg = .eax } },110351 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106935 .unused,110352 .unused,
106936 .unused,110353 .unused,
106937 .unused,110354 .unused,
...@@ -106943,12 +110360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106943,12 +110360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106943 .dst_temps = .{ .mem, .unused },110360 .dst_temps = .{ .mem, .unused },
106944 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110361 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106945 .each = .{ .once = &.{110362 .each = .{ .once = &.{
106946 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110363 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106947 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110364 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106948 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110365 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106949 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },110366 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106950 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },110367 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110368 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106952 } },110369 } },
106953 }, .{110370 }, .{
106954 .required_features = .{ .sse, null, null, null },110371 .required_features = .{ .sse, null, null, null },
...@@ -106959,10 +110376,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106959,10 +110376,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106959 },110376 },
106960 .call_frame = .{ .alignment = .@"16" },110377 .call_frame = .{ .alignment = .@"16" },
106961 .extra_temps = .{110378 .extra_temps = .{
106962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110379 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106963 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110380 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106964 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },110381 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106965 .{ .type = .i32, .kind = .{ .reg = .eax } },110382 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106966 .unused,110383 .unused,
106967 .unused,110384 .unused,
106968 .unused,110385 .unused,
...@@ -106974,12 +110391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106974,12 +110391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106974 .dst_temps = .{ .mem, .unused },110391 .dst_temps = .{ .mem, .unused },
106975 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110392 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106976 .each = .{ .once = &.{110393 .each = .{ .once = &.{
106977 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110394 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106978 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110395 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106979 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110396 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106980 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },110397 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106981 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },110398 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110399 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106983 } },110400 } },
106984 }, .{110401 }, .{
106985 .required_features = .{ .sse, null, null, null },110402 .required_features = .{ .sse, null, null, null },
...@@ -106990,10 +110407,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106990,10 +110407,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106990 },110407 },
106991 .call_frame = .{ .alignment = .@"16" },110408 .call_frame = .{ .alignment = .@"16" },
106992 .extra_temps = .{110409 .extra_temps = .{
106993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110410 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106994 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110411 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106995 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },110412 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106996 .{ .type = .u32, .kind = .{ .reg = .eax } },110413 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106997 .unused,110414 .unused,
106998 .unused,110415 .unused,
106999 .unused,110416 .unused,
...@@ -107005,19 +110422,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107005,19 +110422,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107005 .dst_temps = .{ .mem, .unused },110422 .dst_temps = .{ .mem, .unused },
107006 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110423 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107007 .each = .{ .once = &.{110424 .each = .{ .once = &.{
107008 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110425 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
107009 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110426 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
107010 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110427 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107011 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },110428 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
107012 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },110429 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
107013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110430 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107014 } },110431 } },
107015 }, .{110432 }, .{
107016 .required_features = .{ .@"64bit", .sse, null, null },110433 .required_features = .{ .@"64bit", .sse, null, null },
107017 .src_constraints = .{ .{ .float = .xword }, .any, .any },110434 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107018 .dst_constraints = .{ .{ .signed_int = .qword }, .any },110435 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
107019 .patterns = &.{110436 .patterns = &.{
107020 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },110437 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107021 },110438 },
107022 .call_frame = .{ .alignment = .@"16" },110439 .call_frame = .{ .alignment = .@"16" },
107023 .extra_temps = .{110440 .extra_temps = .{
...@@ -107033,7 +110450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107033,7 +110450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107033 .unused,110450 .unused,
107034 .unused,110451 .unused,
107035 },110452 },
107036 .dst_temps = .{ .{ .reg = .rax }, .unused },110453 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107037 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110454 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107038 .each = .{ .once = &.{110455 .each = .{ .once = &.{
107039 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },110456 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -107043,7 +110460,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107043,7 +110460,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107043 .src_constraints = .{ .{ .float = .xword }, .any, .any },110460 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107044 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },110461 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
107045 .patterns = &.{110462 .patterns = &.{
107046 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },110463 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107047 },110464 },
107048 .call_frame = .{ .alignment = .@"16" },110465 .call_frame = .{ .alignment = .@"16" },
107049 .extra_temps = .{110466 .extra_temps = .{
...@@ -107059,7 +110476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107059,7 +110476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107059 .unused,110476 .unused,
107060 .unused,110477 .unused,
107061 },110478 },
107062 .dst_temps = .{ .{ .reg = .rax }, .unused },110479 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107063 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110480 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107064 .each = .{ .once = &.{110481 .each = .{ .once = &.{
107065 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },110482 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -107073,10 +110490,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107073,10 +110490,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107073 },110490 },
107074 .call_frame = .{ .alignment = .@"16" },110491 .call_frame = .{ .alignment = .@"16" },
107075 .extra_temps = .{110492 .extra_temps = .{
107076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110493 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107077 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110494 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107078 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },110495 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107079 .{ .type = .i64, .kind = .{ .reg = .rax } },110496 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107080 .unused,110497 .unused,
107081 .unused,110498 .unused,
107082 .unused,110499 .unused,
...@@ -107088,12 +110505,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107088,12 +110505,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107088 .dst_temps = .{ .mem, .unused },110505 .dst_temps = .{ .mem, .unused },
107089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110506 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107090 .each = .{ .once = &.{110507 .each = .{ .once = &.{
107091 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110508 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
107092 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110509 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107093 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110510 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107094 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110511 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107095 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110512 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110513 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107097 } },110514 } },
107098 }, .{110515 }, .{
107099 .required_features = .{ .@"64bit", .avx, null, null },110516 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -107104,10 +110521,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107104,10 +110521,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107104 },110521 },
107105 .call_frame = .{ .alignment = .@"16" },110522 .call_frame = .{ .alignment = .@"16" },
107106 .extra_temps = .{110523 .extra_temps = .{
107107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110524 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107108 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110525 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107109 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },110526 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107110 .{ .type = .u64, .kind = .{ .reg = .rax } },110527 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107111 .unused,110528 .unused,
107112 .unused,110529 .unused,
107113 .unused,110530 .unused,
...@@ -107119,12 +110536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107119,12 +110536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107119 .dst_temps = .{ .mem, .unused },110536 .dst_temps = .{ .mem, .unused },
107120 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107121 .each = .{ .once = &.{110538 .each = .{ .once = &.{
107122 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110539 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
107123 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110540 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107124 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110541 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107125 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110542 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107126 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110543 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110544 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107128 } },110545 } },
107129 }, .{110546 }, .{
107130 .required_features = .{ .@"64bit", .sse2, null, null },110547 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -107135,10 +110552,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107135,10 +110552,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107135 },110552 },
107136 .call_frame = .{ .alignment = .@"16" },110553 .call_frame = .{ .alignment = .@"16" },
107137 .extra_temps = .{110554 .extra_temps = .{
107138 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110555 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107139 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110556 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107140 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },110557 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107141 .{ .type = .i64, .kind = .{ .reg = .rax } },110558 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107142 .unused,110559 .unused,
107143 .unused,110560 .unused,
107144 .unused,110561 .unused,
...@@ -107150,12 +110567,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107150,12 +110567,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107150 .dst_temps = .{ .mem, .unused },110567 .dst_temps = .{ .mem, .unused },
107151 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107152 .each = .{ .once = &.{110569 .each = .{ .once = &.{
107153 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110570 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
107154 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110571 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107155 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110572 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107156 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110573 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107157 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110574 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110575 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107159 } },110576 } },
107160 }, .{110577 }, .{
107161 .required_features = .{ .@"64bit", .sse2, null, null },110578 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -107166,10 +110583,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107166,10 +110583,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107166 },110583 },
107167 .call_frame = .{ .alignment = .@"16" },110584 .call_frame = .{ .alignment = .@"16" },
107168 .extra_temps = .{110585 .extra_temps = .{
107169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110586 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107170 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110587 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107171 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },110588 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107172 .{ .type = .u64, .kind = .{ .reg = .rax } },110589 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107173 .unused,110590 .unused,
107174 .unused,110591 .unused,
107175 .unused,110592 .unused,
...@@ -107181,12 +110598,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107181,12 +110598,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107181 .dst_temps = .{ .mem, .unused },110598 .dst_temps = .{ .mem, .unused },
107182 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107183 .each = .{ .once = &.{110600 .each = .{ .once = &.{
107184 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110601 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
107185 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110602 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107186 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110603 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107187 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110604 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107188 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110605 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110606 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107190 } },110607 } },
107191 }, .{110608 }, .{
107192 .required_features = .{ .@"64bit", .sse, null, null },110609 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -107197,10 +110614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107197,10 +110614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107197 },110614 },
107198 .call_frame = .{ .alignment = .@"16" },110615 .call_frame = .{ .alignment = .@"16" },
107199 .extra_temps = .{110616 .extra_temps = .{
107200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110617 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107201 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110618 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107202 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },110619 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107203 .{ .type = .i64, .kind = .{ .reg = .rax } },110620 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107204 .unused,110621 .unused,
107205 .unused,110622 .unused,
107206 .unused,110623 .unused,
...@@ -107212,12 +110629,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107212,12 +110629,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107212 .dst_temps = .{ .mem, .unused },110629 .dst_temps = .{ .mem, .unused },
107213 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107214 .each = .{ .once = &.{110631 .each = .{ .once = &.{
107215 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110632 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
107216 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110633 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107217 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110634 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107218 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110635 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107219 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110636 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107220 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110637 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107221 } },110638 } },
107222 }, .{110639 }, .{
107223 .required_features = .{ .@"64bit", .sse, null, null },110640 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -107228,10 +110645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107228,10 +110645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107228 },110645 },
107229 .call_frame = .{ .alignment = .@"16" },110646 .call_frame = .{ .alignment = .@"16" },
107230 .extra_temps = .{110647 .extra_temps = .{
107231 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110648 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107232 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110649 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107233 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },110650 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107234 .{ .type = .u64, .kind = .{ .reg = .rax } },110651 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107235 .unused,110652 .unused,
107236 .unused,110653 .unused,
107237 .unused,110654 .unused,
...@@ -107243,19 +110660,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107243,19 +110660,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107243 .dst_temps = .{ .mem, .unused },110660 .dst_temps = .{ .mem, .unused },
107244 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110661 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107245 .each = .{ .once = &.{110662 .each = .{ .once = &.{
107246 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110663 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
107247 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110664 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107248 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110665 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107249 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110666 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107250 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110667 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107251 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110668 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107252 } },110669 } },
107253 }, .{110670 }, .{
107254 .required_features = .{ .@"64bit", .sse, null, null },110671 .required_cc_abi = .sysv64,
110672 .required_features = .{ .sse, null, null, null },
107255 .src_constraints = .{ .{ .float = .xword }, .any, .any },110673 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107256 .dst_constraints = .{ .{ .signed_int = .xword }, .any },110674 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
107257 .patterns = &.{110675 .patterns = &.{
107258 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },110676 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107259 },110677 },
107260 .call_frame = .{ .alignment = .@"16" },110678 .call_frame = .{ .alignment = .@"16" },
107261 .extra_temps = .{110679 .extra_temps = .{
...@@ -107271,17 +110689,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107271,17 +110689,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107271 .unused,110689 .unused,
107272 .unused,110690 .unused,
107273 },110691 },
107274 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },110692 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107275 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110693 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107276 .each = .{ .once = &.{110694 .each = .{ .once = &.{
107277 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },110695 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107278 } },110696 } },
107279 }, .{110697 }, .{
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 },
107281 .src_constraints = .{ .{ .float = .xword }, .any, .any },110727 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107282 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },110728 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
107283 .patterns = &.{110729 .patterns = &.{
107284 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },110730 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107285 },110731 },
107286 .call_frame = .{ .alignment = .@"16" },110732 .call_frame = .{ .alignment = .@"16" },
107287 .extra_temps = .{110733 .extra_temps = .{
...@@ -107297,13 +110743,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107297,13 +110743,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107297 .unused,110743 .unused,
107298 .unused,110744 .unused,
107299 },110745 },
107300 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },110746 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107301 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110747 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107302 .each = .{ .once = &.{110748 .each = .{ .once = &.{
107303 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },110749 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107304 } },110750 } },
107305 }, .{110751 }, .{
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 },
107307 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },110781 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107308 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },110782 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107309 .patterns = &.{110783 .patterns = &.{
...@@ -107311,11 +110785,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107311,11 +110785,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107311 },110785 },
107312 .call_frame = .{ .alignment = .@"16" },110786 .call_frame = .{ .alignment = .@"16" },
107313 .extra_temps = .{110787 .extra_temps = .{
107314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110788 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107315 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110789 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107316 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },110790 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107317 .{ .type = .u64, .kind = .{ .reg = .rax } },110791 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107318 .{ .type = .i64, .kind = .{ .reg = .rdx } },110792 .unused,
107319 .unused,110793 .unused,
107320 .unused,110794 .unused,
107321 .unused,110795 .unused,
...@@ -107326,16 +110800,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107326,16 +110800,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107326 .dst_temps = .{ .mem, .unused },110800 .dst_temps = .{ .mem, .unused },
107327 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110801 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107328 .each = .{ .once = &.{110802 .each = .{ .once = &.{
107329 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110803 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107330 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },110804 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107331 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110805 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107332 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110806 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
107333 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },110807 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
107334 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },110808 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110809 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107336 } },110810 } },
107337 }, .{110811 }, .{
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 },
107339 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },110846 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107340 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },110847 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107341 .patterns = &.{110848 .patterns = &.{
...@@ -107343,11 +110850,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107343,11 +110850,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107343 },110850 },
107344 .call_frame = .{ .alignment = .@"16" },110851 .call_frame = .{ .alignment = .@"16" },
107345 .extra_temps = .{110852 .extra_temps = .{
107346 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110853 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107347 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110854 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107348 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },110855 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107349 .{ .type = .u64, .kind = .{ .reg = .rax } },110856 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107350 .{ .type = .u64, .kind = .{ .reg = .rdx } },110857 .unused,
107351 .unused,110858 .unused,
107352 .unused,110859 .unused,
107353 .unused,110860 .unused,
...@@ -107358,16 +110865,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107358,16 +110865,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107358 .dst_temps = .{ .mem, .unused },110865 .dst_temps = .{ .mem, .unused },
107359 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110866 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107360 .each = .{ .once = &.{110867 .each = .{ .once = &.{
107361 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110868 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107362 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },110869 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107363 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110870 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107364 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110871 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
107365 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },110872 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
107366 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },110873 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107367 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107368 } },110875 } },
107369 }, .{110876 }, .{
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 },
107371 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },110911 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107372 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },110912 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107373 .patterns = &.{110913 .patterns = &.{
...@@ -107375,11 +110915,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107375,11 +110915,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107375 },110915 },
107376 .call_frame = .{ .alignment = .@"16" },110916 .call_frame = .{ .alignment = .@"16" },
107377 .extra_temps = .{110917 .extra_temps = .{
107378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110918 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107379 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110919 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107380 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },110920 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107381 .{ .type = .u64, .kind = .{ .reg = .rax } },110921 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107382 .{ .type = .i64, .kind = .{ .reg = .rdx } },110922 .unused,
107383 .unused,110923 .unused,
107384 .unused,110924 .unused,
107385 .unused,110925 .unused,
...@@ -107390,16 +110930,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107390,16 +110930,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107390 .dst_temps = .{ .mem, .unused },110930 .dst_temps = .{ .mem, .unused },
107391 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110931 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107392 .each = .{ .once = &.{110932 .each = .{ .once = &.{
107393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110933 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107394 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },110934 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107395 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107396 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },110936 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
107397 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },110937 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
107398 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },110938 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107399 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110939 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107400 } },110940 } },
107401 }, .{110941 }, .{
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 },
107403 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },110976 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107404 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },110977 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107405 .patterns = &.{110978 .patterns = &.{
...@@ -107407,11 +110980,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107407,11 +110980,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107407 },110980 },
107408 .call_frame = .{ .alignment = .@"16" },110981 .call_frame = .{ .alignment = .@"16" },
107409 .extra_temps = .{110982 .extra_temps = .{
107410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110983 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107411 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },110984 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107412 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },110985 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107413 .{ .type = .u64, .kind = .{ .reg = .rax } },110986 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107414 .{ .type = .u64, .kind = .{ .reg = .rdx } },110987 .unused,
107415 .unused,110988 .unused,
107416 .unused,110989 .unused,
107417 .unused,110990 .unused,
...@@ -107422,16 +110995,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107422,16 +110995,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107422 .dst_temps = .{ .mem, .unused },110995 .dst_temps = .{ .mem, .unused },
107423 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107424 .each = .{ .once = &.{110997 .each = .{ .once = &.{
107425 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110998 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107426 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },110999 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107427 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },111000 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107428 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },111001 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
107429 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },111002 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
107430 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111003 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111004 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107432 } },111005 } },
107433 }, .{111006 }, .{
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 },
107435 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },111041 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107436 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },111042 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107437 .patterns = &.{111043 .patterns = &.{
...@@ -107439,11 +111045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107439,11 +111045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107439 },111045 },
107440 .call_frame = .{ .alignment = .@"16" },111046 .call_frame = .{ .alignment = .@"16" },
107441 .extra_temps = .{111047 .extra_temps = .{
107442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111048 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107443 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111049 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107444 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },111050 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107445 .{ .type = .u64, .kind = .{ .reg = .rax } },111051 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107446 .{ .type = .i64, .kind = .{ .reg = .rdx } },111052 .unused,
107447 .unused,111053 .unused,
107448 .unused,111054 .unused,
107449 .unused,111055 .unused,
...@@ -107454,16 +111060,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107454,16 +111060,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107454 .dst_temps = .{ .mem, .unused },111060 .dst_temps = .{ .mem, .unused },
107455 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111061 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107456 .each = .{ .once = &.{111062 .each = .{ .once = &.{
107457 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111063 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107458 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },111064 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107459 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },111065 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107460 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },111066 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
107461 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },111067 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
107462 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111068 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111069 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107464 } },111070 } },
107465 }, .{111071 }, .{
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 },
107467 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },111106 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107468 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },111107 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107469 .patterns = &.{111108 .patterns = &.{
...@@ -107471,11 +111110,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107471,11 +111110,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107471 },111110 },
107472 .call_frame = .{ .alignment = .@"16" },111111 .call_frame = .{ .alignment = .@"16" },
107473 .extra_temps = .{111112 .extra_temps = .{
107474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111113 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107475 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111114 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107476 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },111115 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107477 .{ .type = .u64, .kind = .{ .reg = .rax } },111116 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107478 .{ .type = .u64, .kind = .{ .reg = .rdx } },111117 .unused,
107479 .unused,111118 .unused,
107480 .unused,111119 .unused,
107481 .unused,111120 .unused,
...@@ -107486,25 +111125,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107486,25 +111125,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107486 .dst_temps = .{ .mem, .unused },111125 .dst_temps = .{ .mem, .unused },
107487 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107488 .each = .{ .once = &.{111127 .each = .{ .once = &.{
107489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111128 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107490 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },111129 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107491 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },111130 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107492 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },111131 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
107493 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },111132 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
107494 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111133 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
107496 } },111167 } },
107497 }, .{111168 }, .{
107498 .required_features = .{ .@"64bit", .sse, null, null },111169 .required_features = .{ .@"64bit", .sse, null, null },
107499 .src_constraints = .{ .{ .float = .xword }, .any, .any },111170 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107500 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },111171 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107501 .patterns = &.{111172 .patterns = &.{
107502 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },111173 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
107503 },111174 },
107504 .call_frame = .{ .alignment = .@"16" },111175 .call_frame = .{ .alignment = .@"16" },
107505 .extra_temps = .{111176 .extra_temps = .{
107506 .{ .type = .usize, .kind = .{ .reg = .rdi } },111177 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107507 .{ .type = .usize, .kind = .{ .reg = .rsi } },111178 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107508 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },111179 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107509 .unused,111180 .unused,
107510 .unused,111181 .unused,
...@@ -107527,12 +111198,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107527,12 +111198,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107527 .src_constraints = .{ .{ .float = .xword }, .any, .any },111198 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107528 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },111199 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107529 .patterns = &.{111200 .patterns = &.{
107530 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },111201 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
107531 },111202 },
107532 .call_frame = .{ .alignment = .@"16" },111203 .call_frame = .{ .alignment = .@"16" },
107533 .extra_temps = .{111204 .extra_temps = .{
107534 .{ .type = .usize, .kind = .{ .reg = .rdi } },111205 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107535 .{ .type = .usize, .kind = .{ .reg = .rsi } },111206 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107536 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },111207 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107537 .unused,111208 .unused,
107538 .unused,111209 .unused,
...@@ -107559,11 +111230,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107559,11 +111230,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107559 },111230 },
107560 .call_frame = .{ .alignment = .@"16" },111231 .call_frame = .{ .alignment = .@"16" },
107561 .extra_temps = .{111232 .extra_temps = .{
107562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111233 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107563 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },111234 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107564 .{ .type = .usize, .kind = .{ .reg = .rdi } },111235 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107565 .{ .type = .usize, .kind = .{ .reg = .rsi } },111236 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107566 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111237 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107567 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },111238 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107568 .unused,111239 .unused,
107569 .unused,111240 .unused,
...@@ -107574,15 +111245,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107574,15 +111245,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107574 .dst_temps = .{ .mem, .unused },111245 .dst_temps = .{ .mem, .unused },
107575 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111246 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107576 .each = .{ .once = &.{111247 .each = .{ .once = &.{
107577 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111248 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107578 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },111249 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107579 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },111250 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107580 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },111251 .{ ._, ._, .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), ._, ._ },
107582 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },111253 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107583 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },111254 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107584 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111255 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111256 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107586 } },111257 } },
107587 }, .{111258 }, .{
107588 .required_features = .{ .@"64bit", .avx, null, null },111259 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -107593,11 +111264,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107593,11 +111264,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107593 },111264 },
107594 .call_frame = .{ .alignment = .@"16" },111265 .call_frame = .{ .alignment = .@"16" },
107595 .extra_temps = .{111266 .extra_temps = .{
107596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111267 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107597 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },111268 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107598 .{ .type = .usize, .kind = .{ .reg = .rdi } },111269 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107599 .{ .type = .usize, .kind = .{ .reg = .rsi } },111270 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107600 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111271 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107601 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },111272 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107602 .unused,111273 .unused,
107603 .unused,111274 .unused,
...@@ -107608,15 +111279,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107608,15 +111279,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107608 .dst_temps = .{ .mem, .unused },111279 .dst_temps = .{ .mem, .unused },
107609 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111280 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107610 .each = .{ .once = &.{111281 .each = .{ .once = &.{
107611 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111282 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107612 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },111283 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107613 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },111284 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107614 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },111285 .{ ._, ._, .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), ._, ._ },
107616 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },111287 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107617 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },111288 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107618 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111289 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111290 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107620 } },111291 } },
107621 }, .{111292 }, .{
107622 .required_features = .{ .@"64bit", .sse2, null, null },111293 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -107627,11 +111298,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107627,11 +111298,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107627 },111298 },
107628 .call_frame = .{ .alignment = .@"16" },111299 .call_frame = .{ .alignment = .@"16" },
107629 .extra_temps = .{111300 .extra_temps = .{
107630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111301 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107631 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },111302 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107632 .{ .type = .usize, .kind = .{ .reg = .rdi } },111303 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107633 .{ .type = .usize, .kind = .{ .reg = .rsi } },111304 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107634 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111305 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107635 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },111306 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107636 .unused,111307 .unused,
107637 .unused,111308 .unused,
...@@ -107642,15 +111313,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107642,15 +111313,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107642 .dst_temps = .{ .mem, .unused },111313 .dst_temps = .{ .mem, .unused },
107643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111314 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107644 .each = .{ .once = &.{111315 .each = .{ .once = &.{
107645 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111316 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107646 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },111317 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107647 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },111318 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107648 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },111319 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107649 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },111320 .{ ._, ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107650 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },111321 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107651 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },111322 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107652 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111323 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107654 } },111325 } },
107655 }, .{111326 }, .{
107656 .required_features = .{ .@"64bit", .sse2, null, null },111327 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -107661,11 +111332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107661,11 +111332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107661 },111332 },
107662 .call_frame = .{ .alignment = .@"16" },111333 .call_frame = .{ .alignment = .@"16" },
107663 .extra_temps = .{111334 .extra_temps = .{
107664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111335 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107665 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },111336 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107666 .{ .type = .usize, .kind = .{ .reg = .rdi } },111337 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107667 .{ .type = .usize, .kind = .{ .reg = .rsi } },111338 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107668 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111339 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107669 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },111340 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107670 .unused,111341 .unused,
107671 .unused,111342 .unused,
...@@ -107676,15 +111347,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107676,15 +111347,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107676 .dst_temps = .{ .mem, .unused },111347 .dst_temps = .{ .mem, .unused },
107677 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111348 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107678 .each = .{ .once = &.{111349 .each = .{ .once = &.{
107679 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111350 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107680 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },111351 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107681 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },111352 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107682 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },111353 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107683 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },111354 .{ ._, ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107684 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },111355 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107685 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },111356 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107686 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111357 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107687 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111358 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107688 } },111359 } },
107689 }, .{111360 }, .{
107690 .required_features = .{ .@"64bit", .sse, null, null },111361 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -107695,11 +111366,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107695,11 +111366,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107695 },111366 },
107696 .call_frame = .{ .alignment = .@"16" },111367 .call_frame = .{ .alignment = .@"16" },
107697 .extra_temps = .{111368 .extra_temps = .{
107698 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111369 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107699 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },111370 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107700 .{ .type = .usize, .kind = .{ .reg = .rdi } },111371 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107701 .{ .type = .usize, .kind = .{ .reg = .rsi } },111372 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107702 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111373 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107703 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },111374 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107704 .unused,111375 .unused,
107705 .unused,111376 .unused,
...@@ -107710,15 +111381,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107710,15 +111381,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107710 .dst_temps = .{ .mem, .unused },111381 .dst_temps = .{ .mem, .unused },
107711 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107712 .each = .{ .once = &.{111383 .each = .{ .once = &.{
107713 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111384 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107714 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },111385 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107715 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },111386 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107716 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },111387 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107717 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },111388 .{ ._, ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107718 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },111389 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107719 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },111390 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107720 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111391 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111392 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107722 } },111393 } },
107723 }, .{111394 }, .{
107724 .required_features = .{ .@"64bit", .sse, null, null },111395 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -107729,11 +111400,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107729,11 +111400,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107729 },111400 },
107730 .call_frame = .{ .alignment = .@"16" },111401 .call_frame = .{ .alignment = .@"16" },
107731 .extra_temps = .{111402 .extra_temps = .{
107732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111403 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107733 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },111404 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107734 .{ .type = .usize, .kind = .{ .reg = .rdi } },111405 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107735 .{ .type = .usize, .kind = .{ .reg = .rsi } },111406 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107736 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },111407 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107737 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },111408 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107738 .unused,111409 .unused,
107739 .unused,111410 .unused,
...@@ -107744,15 +111415,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107744,15 +111415,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107744 .dst_temps = .{ .mem, .unused },111415 .dst_temps = .{ .mem, .unused },
107745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107746 .each = .{ .once = &.{111417 .each = .{ .once = &.{
107747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111418 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
107748 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },111419 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107749 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },111420 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107750 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },111421 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107751 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },111422 .{ ._, ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107752 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },111423 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107753 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },111424 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107754 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },111425 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
107755 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111426 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107756 } },111427 } },
107757 } }) catch |err| switch (err) {111428 } }) catch |err| switch (err) {
107758 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{111429 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
...@@ -107767,7 +111438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107767,7 +111438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107767 },111438 },
107768 .int_from_float_safe => unreachable,111439 .int_from_float_safe => unreachable,
107769 .int_from_float_optimized_safe => unreachable,111440 .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| {
107771 const ty_op = air_datas[@intFromEnum(inst)].ty_op;111442 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
107772 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});111443 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
107773 var res: [1]Temp = undefined;111444 var res: [1]Temp = undefined;
...@@ -107980,7 +111651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107980,7 +111651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107980 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },111651 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
107981 .dst_constraints = .{ .{ .float = .word }, .any },111652 .dst_constraints = .{ .{ .float = .word }, .any },
107982 .patterns = &.{111653 .patterns = &.{
107983 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },111654 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107984 },111655 },
107985 .call_frame = .{ .alignment = .@"16" },111656 .call_frame = .{ .alignment = .@"16" },
107986 .extra_temps = .{111657 .extra_temps = .{
...@@ -107996,7 +111667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107996,7 +111667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107996 .unused,111667 .unused,
107997 .unused,111668 .unused,
107998 },111669 },
107999 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111670 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111671 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108001 .each = .{ .once = &.{111672 .each = .{ .once = &.{
108002 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },111673 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },
...@@ -108007,7 +111678,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108007,7 +111678,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108007 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },111678 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
108008 .dst_constraints = .{ .{ .float = .word }, .any },111679 .dst_constraints = .{ .{ .float = .word }, .any },
108009 .patterns = &.{111680 .patterns = &.{
108010 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },111681 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108011 },111682 },
108012 .call_frame = .{ .alignment = .@"16" },111683 .call_frame = .{ .alignment = .@"16" },
108013 .extra_temps = .{111684 .extra_temps = .{
...@@ -108023,7 +111694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108023,7 +111694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108023 .unused,111694 .unused,
108024 .unused,111695 .unused,
108025 },111696 },
108026 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111697 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108028 .each = .{ .once = &.{111699 .each = .{ .once = &.{
108029 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },111700 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },
...@@ -108034,7 +111705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108034,7 +111705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108034 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },111705 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
108035 .dst_constraints = .{ .{ .float = .word }, .any },111706 .dst_constraints = .{ .{ .float = .word }, .any },
108036 .patterns = &.{111707 .patterns = &.{
108037 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },111708 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108038 },111709 },
108039 .call_frame = .{ .alignment = .@"16" },111710 .call_frame = .{ .alignment = .@"16" },
108040 .extra_temps = .{111711 .extra_temps = .{
...@@ -108050,7 +111721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108050,7 +111721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108050 .unused,111721 .unused,
108051 .unused,111722 .unused,
108052 },111723 },
108053 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111724 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108054 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111725 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108055 .each = .{ .once = &.{111726 .each = .{ .once = &.{
108056 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },111727 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },
...@@ -108061,7 +111732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108061,7 +111732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108061 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },111732 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
108062 .dst_constraints = .{ .{ .float = .word }, .any },111733 .dst_constraints = .{ .{ .float = .word }, .any },
108063 .patterns = &.{111734 .patterns = &.{
108064 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },111735 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108065 },111736 },
108066 .call_frame = .{ .alignment = .@"16" },111737 .call_frame = .{ .alignment = .@"16" },
108067 .extra_temps = .{111738 .extra_temps = .{
...@@ -108077,7 +111748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108077,7 +111748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108077 .unused,111748 .unused,
108078 .unused,111749 .unused,
108079 },111750 },
108080 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111751 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108081 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108082 .each = .{ .once = &.{111753 .each = .{ .once = &.{
108083 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },111754 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },
...@@ -108088,7 +111759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108088,7 +111759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108088 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },111759 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
108089 .dst_constraints = .{ .{ .float = .word }, .any },111760 .dst_constraints = .{ .{ .float = .word }, .any },
108090 .patterns = &.{111761 .patterns = &.{
108091 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },111762 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108092 },111763 },
108093 .call_frame = .{ .alignment = .@"16" },111764 .call_frame = .{ .alignment = .@"16" },
108094 .extra_temps = .{111765 .extra_temps = .{
...@@ -108104,7 +111775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108104,7 +111775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108104 .unused,111775 .unused,
108105 .unused,111776 .unused,
108106 },111777 },
108107 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111778 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108108 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111779 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108109 .each = .{ .once = &.{111780 .each = .{ .once = &.{
108110 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111781 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -108114,7 +111785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108114,7 +111785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108114 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },111785 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
108115 .dst_constraints = .{ .{ .float = .word }, .any },111786 .dst_constraints = .{ .{ .float = .word }, .any },
108116 .patterns = &.{111787 .patterns = &.{
108117 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },111788 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108118 },111789 },
108119 .call_frame = .{ .alignment = .@"16" },111790 .call_frame = .{ .alignment = .@"16" },
108120 .extra_temps = .{111791 .extra_temps = .{
...@@ -108130,7 +111801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108130,7 +111801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108130 .unused,111801 .unused,
108131 .unused,111802 .unused,
108132 },111803 },
108133 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111804 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111805 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108135 .each = .{ .once = &.{111806 .each = .{ .once = &.{
108136 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111807 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -108140,7 +111811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108140,7 +111811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108140 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },111811 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
108141 .dst_constraints = .{ .{ .float = .word }, .any },111812 .dst_constraints = .{ .{ .float = .word }, .any },
108142 .patterns = &.{111813 .patterns = &.{
108143 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },111814 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108144 },111815 },
108145 .call_frame = .{ .alignment = .@"16" },111816 .call_frame = .{ .alignment = .@"16" },
108146 .extra_temps = .{111817 .extra_temps = .{
...@@ -108156,7 +111827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108156,7 +111827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108156 .unused,111827 .unused,
108157 .unused,111828 .unused,
108158 },111829 },
108159 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111830 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111831 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108161 .each = .{ .once = &.{111832 .each = .{ .once = &.{
108162 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111833 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -108166,7 +111837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108166,7 +111837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108166 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },111837 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
108167 .dst_constraints = .{ .{ .float = .word }, .any },111838 .dst_constraints = .{ .{ .float = .word }, .any },
108168 .patterns = &.{111839 .patterns = &.{
108169 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },111840 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108170 },111841 },
108171 .call_frame = .{ .alignment = .@"16" },111842 .call_frame = .{ .alignment = .@"16" },
108172 .extra_temps = .{111843 .extra_temps = .{
...@@ -108182,17 +111853,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108182,17 +111853,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108182 .unused,111853 .unused,
108183 .unused,111854 .unused,
108184 },111855 },
108185 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111856 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108186 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108187 .each = .{ .once = &.{111858 .each = .{ .once = &.{
108188 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111859 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108189 } },111860 } },
108190 }, .{111861 }, .{
108191 .required_features = .{ .@"64bit", .sse, null, null },111862 .required_cc_abi = .sysv64,
111863 .required_features = .{ .sse, null, null, null },
108192 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },111864 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
108193 .dst_constraints = .{ .{ .float = .word }, .any },111865 .dst_constraints = .{ .{ .float = .word }, .any },
108194 .patterns = &.{111866 .patterns = &.{
108195 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },111867 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108196 },111868 },
108197 .call_frame = .{ .alignment = .@"16" },111869 .call_frame = .{ .alignment = .@"16" },
108198 .extra_temps = .{111870 .extra_temps = .{
...@@ -108208,17 +111880,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108208,17 +111880,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108208 .unused,111880 .unused,
108209 .unused,111881 .unused,
108210 },111882 },
108211 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111883 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108212 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111884 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108213 .each = .{ .once = &.{111885 .each = .{ .once = &.{
108214 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111886 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108215 } },111887 } },
108216 }, .{111888 }, .{
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 },
108218 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },111919 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
108219 .dst_constraints = .{ .{ .float = .word }, .any },111920 .dst_constraints = .{ .{ .float = .word }, .any },
108220 .patterns = &.{111921 .patterns = &.{
108221 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },111922 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108222 },111923 },
108223 .call_frame = .{ .alignment = .@"16" },111924 .call_frame = .{ .alignment = .@"16" },
108224 .extra_temps = .{111925 .extra_temps = .{
...@@ -108234,11 +111935,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108234,11 +111935,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108234 .unused,111935 .unused,
108235 .unused,111936 .unused,
108236 },111937 },
108237 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111938 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111939 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108239 .each = .{ .once = &.{111940 .each = .{ .once = &.{
108240 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111941 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108241 } },111942 } },
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 } },
108242 }, .{111971 }, .{
108243 .required_features = .{ .@"64bit", .sse, null, null },111972 .required_features = .{ .@"64bit", .sse, null, null },
108244 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },111973 .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 {...@@ -108248,8 +111977,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108248 },111977 },
108249 .call_frame = .{ .alignment = .@"16" },111978 .call_frame = .{ .alignment = .@"16" },
108250 .extra_temps = .{111979 .extra_temps = .{
108251 .{ .type = .usize, .kind = .{ .reg = .rdi } },111980 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108252 .{ .type = .usize, .kind = .{ .reg = .rsi } },111981 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
108253 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },111982 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
108254 .unused,111983 .unused,
108255 .unused,111984 .unused,
...@@ -108260,7 +111989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108260,7 +111989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108260 .unused,111989 .unused,
108261 .unused,111990 .unused,
108262 },111991 },
108263 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111992 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108264 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111993 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108265 .each = .{ .once = &.{111994 .each = .{ .once = &.{
108266 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },111995 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -108276,8 +112005,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108276,8 +112005,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108276 },112005 },
108277 .call_frame = .{ .alignment = .@"16" },112006 .call_frame = .{ .alignment = .@"16" },
108278 .extra_temps = .{112007 .extra_temps = .{
108279 .{ .type = .usize, .kind = .{ .reg = .rdi } },112008 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108280 .{ .type = .usize, .kind = .{ .reg = .rsi } },112009 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
108281 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },112010 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
108282 .unused,112011 .unused,
108283 .unused,112012 .unused,
...@@ -108288,7 +112017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108288,7 +112017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108288 .unused,112017 .unused,
108289 .unused,112018 .unused,
108290 },112019 },
108291 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },112020 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112021 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108293 .each = .{ .once = &.{112022 .each = .{ .once = &.{
108294 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },112023 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -108359,7 +112088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108359,7 +112088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108359 .{ .src = .{ .to_mem, .none, .none } },112088 .{ .src = .{ .to_mem, .none, .none } },
108360 },112089 },
108361 .extra_temps = .{112090 .extra_temps = .{
108362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108363 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },112092 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108364 .unused,112093 .unused,
108365 .unused,112094 .unused,
...@@ -108374,12 +112103,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108374,12 +112103,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108374 .dst_temps = .{ .mem, .unused },112103 .dst_temps = .{ .mem, .unused },
108375 .clobbers = .{ .eflags = true },112104 .clobbers = .{ .eflags = true },
108376 .each = .{ .once = &.{112105 .each = .{ .once = &.{
108377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112106 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
108378 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112107 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
108379 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },112108 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
108380 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },112109 .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ },
108381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112110 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112111 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108383 } },112112 } },
108384 }, .{112113 }, .{
108385 .required_features = .{ .f16c, null, null, null },112114 .required_features = .{ .f16c, null, null, null },
...@@ -108389,7 +112118,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108389,7 +112118,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108389 .{ .src = .{ .to_mem, .none, .none } },112118 .{ .src = .{ .to_mem, .none, .none } },
108390 },112119 },
108391 .extra_temps = .{112120 .extra_temps = .{
108392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112121 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108393 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },112122 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108394 .unused,112123 .unused,
108395 .unused,112124 .unused,
...@@ -108404,12 +112133,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108404,12 +112133,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108404 .dst_temps = .{ .mem, .unused },112133 .dst_temps = .{ .mem, .unused },
108405 .clobbers = .{ .eflags = true },112134 .clobbers = .{ .eflags = true },
108406 .each = .{ .once = &.{112135 .each = .{ .once = &.{
108407 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112136 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
108408 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112137 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
108409 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112138 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108410 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },112139 .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ },
108411 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112140 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
108412 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112141 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108413 } },112142 } },
108414 }, .{112143 }, .{
108415 .required_features = .{ .f16c, .avx2, null, null },112144 .required_features = .{ .f16c, .avx2, null, null },
...@@ -108419,7 +112148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108419,7 +112148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108419 .{ .src = .{ .to_mem, .none, .none } },112148 .{ .src = .{ .to_mem, .none, .none } },
108420 },112149 },
108421 .extra_temps = .{112150 .extra_temps = .{
108422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108423 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },112152 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108424 .unused,112153 .unused,
108425 .unused,112154 .unused,
...@@ -108434,12 +112163,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108434,12 +112163,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108434 .dst_temps = .{ .mem, .unused },112163 .dst_temps = .{ .mem, .unused },
108435 .clobbers = .{ .eflags = true },112164 .clobbers = .{ .eflags = true },
108436 .each = .{ .once = &.{112165 .each = .{ .once = &.{
108437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112166 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
108438 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112167 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
108439 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },112168 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
108440 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },112169 .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ },
108441 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112170 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108442 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112171 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108443 } },112172 } },
108444 }, .{112173 }, .{
108445 .required_features = .{ .f16c, null, null, null },112174 .required_features = .{ .f16c, null, null, null },
...@@ -108449,7 +112178,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108449,7 +112178,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108449 .{ .src = .{ .to_mem, .none, .none } },112178 .{ .src = .{ .to_mem, .none, .none } },
108450 },112179 },
108451 .extra_temps = .{112180 .extra_temps = .{
108452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108453 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },112182 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108454 .unused,112183 .unused,
108455 .unused,112184 .unused,
...@@ -108464,12 +112193,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108464,12 +112193,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108464 .dst_temps = .{ .mem, .unused },112193 .dst_temps = .{ .mem, .unused },
108465 .clobbers = .{ .eflags = true },112194 .clobbers = .{ .eflags = true },
108466 .each = .{ .once = &.{112195 .each = .{ .once = &.{
108467 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112196 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
108468 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112197 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
108469 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112198 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108470 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },112199 .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ },
108471 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112200 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
108472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112201 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108473 } },112202 } },
108474 }, .{112203 }, .{
108475 .required_features = .{ .avx, .slow_incdec, null, null },112204 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -108480,10 +112209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108480,10 +112209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108480 },112209 },
108481 .call_frame = .{ .alignment = .@"16" },112210 .call_frame = .{ .alignment = .@"16" },
108482 .extra_temps = .{112211 .extra_temps = .{
108483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108484 .{ .type = .i32, .kind = .{ .reg = .edi } },112213 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108485 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112214 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108486 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112215 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108487 .unused,112216 .unused,
108488 .unused,112217 .unused,
108489 .unused,112218 .unused,
...@@ -108495,12 +112224,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108495,12 +112224,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108495 .dst_temps = .{ .mem, .unused },112224 .dst_temps = .{ .mem, .unused },
108496 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108497 .each = .{ .once = &.{112226 .each = .{ .once = &.{
108498 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112227 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108499 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112228 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108500 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112229 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108501 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112230 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108502 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112231 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112232 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108504 } },112233 } },
108505 }, .{112234 }, .{
108506 .required_features = .{ .avx, null, null, null },112235 .required_features = .{ .avx, null, null, null },
...@@ -108511,10 +112240,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108511,10 +112240,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108511 },112240 },
108512 .call_frame = .{ .alignment = .@"16" },112241 .call_frame = .{ .alignment = .@"16" },
108513 .extra_temps = .{112242 .extra_temps = .{
108514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112243 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108515 .{ .type = .i32, .kind = .{ .reg = .edi } },112244 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108516 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112245 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108517 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112246 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108518 .unused,112247 .unused,
108519 .unused,112248 .unused,
108520 .unused,112249 .unused,
...@@ -108526,12 +112255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108526,12 +112255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108526 .dst_temps = .{ .mem, .unused },112255 .dst_temps = .{ .mem, .unused },
108527 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112256 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108528 .each = .{ .once = &.{112257 .each = .{ .once = &.{
108529 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112258 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108530 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112259 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108531 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112260 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108532 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112261 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108533 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112262 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108534 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112263 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108535 } },112264 } },
108536 }, .{112265 }, .{
108537 .required_features = .{ .sse4_1, .slow_incdec, null, null },112266 .required_features = .{ .sse4_1, .slow_incdec, null, null },
...@@ -108542,10 +112271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108542,10 +112271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108542 },112271 },
108543 .call_frame = .{ .alignment = .@"16" },112272 .call_frame = .{ .alignment = .@"16" },
108544 .extra_temps = .{112273 .extra_temps = .{
108545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112274 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108546 .{ .type = .i32, .kind = .{ .reg = .edi } },112275 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108547 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112276 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108548 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112277 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108549 .unused,112278 .unused,
108550 .unused,112279 .unused,
108551 .unused,112280 .unused,
...@@ -108557,12 +112286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108557,12 +112286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108557 .dst_temps = .{ .mem, .unused },112286 .dst_temps = .{ .mem, .unused },
108558 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112287 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108559 .each = .{ .once = &.{112288 .each = .{ .once = &.{
108560 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112289 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108561 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112290 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108562 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112291 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108563 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112292 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108564 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112293 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108565 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112294 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108566 } },112295 } },
108567 }, .{112296 }, .{
108568 .required_features = .{ .sse4_1, null, null, null },112297 .required_features = .{ .sse4_1, null, null, null },
...@@ -108573,10 +112302,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108573,10 +112302,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108573 },112302 },
108574 .call_frame = .{ .alignment = .@"16" },112303 .call_frame = .{ .alignment = .@"16" },
108575 .extra_temps = .{112304 .extra_temps = .{
108576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108577 .{ .type = .i32, .kind = .{ .reg = .edi } },112306 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108578 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112307 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108579 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112308 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108580 .unused,112309 .unused,
108581 .unused,112310 .unused,
108582 .unused,112311 .unused,
...@@ -108588,12 +112317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108588,12 +112317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108588 .dst_temps = .{ .mem, .unused },112317 .dst_temps = .{ .mem, .unused },
108589 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112318 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108590 .each = .{ .once = &.{112319 .each = .{ .once = &.{
108591 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112320 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108592 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112321 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108593 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112322 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108594 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112323 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108595 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112324 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108596 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112325 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108597 } },112326 } },
108598 }, .{112327 }, .{
108599 .required_features = .{ .sse2, .slow_incdec, null, null },112328 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -108604,10 +112333,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108604,10 +112333,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108604 },112333 },
108605 .call_frame = .{ .alignment = .@"16" },112334 .call_frame = .{ .alignment = .@"16" },
108606 .extra_temps = .{112335 .extra_temps = .{
108607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108608 .{ .type = .i32, .kind = .{ .reg = .edi } },112337 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108609 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112338 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108610 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112339 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108611 .unused,112340 .unused,
108612 .unused,112341 .unused,
108613 .unused,112342 .unused,
...@@ -108619,13 +112348,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108619,13 +112348,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108619 .dst_temps = .{ .mem, .unused },112348 .dst_temps = .{ .mem, .unused },
108620 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112349 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108621 .each = .{ .once = &.{112350 .each = .{ .once = &.{
108622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112351 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108623 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112352 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108624 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112353 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108625 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },112354 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108626 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112355 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108627 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112356 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112357 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108629 } },112358 } },
108630 }, .{112359 }, .{
108631 .required_features = .{ .sse2, null, null, null },112360 .required_features = .{ .sse2, null, null, null },
...@@ -108636,10 +112365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108636,10 +112365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108636 },112365 },
108637 .call_frame = .{ .alignment = .@"16" },112366 .call_frame = .{ .alignment = .@"16" },
108638 .extra_temps = .{112367 .extra_temps = .{
108639 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108640 .{ .type = .i32, .kind = .{ .reg = .edi } },112369 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108641 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112370 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108642 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112371 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108643 .unused,112372 .unused,
108644 .unused,112373 .unused,
108645 .unused,112374 .unused,
...@@ -108651,13 +112380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108651,13 +112380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108651 .dst_temps = .{ .mem, .unused },112380 .dst_temps = .{ .mem, .unused },
108652 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108653 .each = .{ .once = &.{112382 .each = .{ .once = &.{
108654 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112383 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108655 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112384 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108656 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112385 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108657 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },112386 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108658 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112387 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108659 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112388 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108660 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112389 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108661 } },112390 } },
108662 }, .{112391 }, .{
108663 .required_features = .{ .sse, .slow_incdec, null, null },112392 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -108668,10 +112397,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108668,10 +112397,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108668 },112397 },
108669 .call_frame = .{ .alignment = .@"16" },112398 .call_frame = .{ .alignment = .@"16" },
108670 .extra_temps = .{112399 .extra_temps = .{
108671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112400 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108672 .{ .type = .i32, .kind = .{ .reg = .edi } },112401 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108673 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112402 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108674 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112403 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108675 .{ .type = .f32, .kind = .mem },112404 .{ .type = .f32, .kind = .mem },
108676 .unused,112405 .unused,
108677 .unused,112406 .unused,
...@@ -108683,14 +112412,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108683,14 +112412,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108683 .dst_temps = .{ .mem, .unused },112412 .dst_temps = .{ .mem, .unused },
108684 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112413 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108685 .each = .{ .once = &.{112414 .each = .{ .once = &.{
108686 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112415 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108687 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112416 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108688 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112417 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108689 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },112418 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108690 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },112419 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108691 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112420 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108692 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112421 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112422 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108694 } },112423 } },
108695 }, .{112424 }, .{
108696 .required_features = .{ .sse, null, null, null },112425 .required_features = .{ .sse, null, null, null },
...@@ -108701,10 +112430,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108701,10 +112430,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108701 },112430 },
108702 .call_frame = .{ .alignment = .@"16" },112431 .call_frame = .{ .alignment = .@"16" },
108703 .extra_temps = .{112432 .extra_temps = .{
108704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112433 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108705 .{ .type = .i32, .kind = .{ .reg = .edi } },112434 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108706 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112435 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108707 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112436 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108708 .{ .type = .f32, .kind = .mem },112437 .{ .type = .f32, .kind = .mem },
108709 .unused,112438 .unused,
108710 .unused,112439 .unused,
...@@ -108716,14 +112445,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108716,14 +112445,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108716 .dst_temps = .{ .mem, .unused },112445 .dst_temps = .{ .mem, .unused },
108717 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112446 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108718 .each = .{ .once = &.{112447 .each = .{ .once = &.{
108719 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112448 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108720 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112449 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108721 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112450 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108722 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },112451 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108723 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },112452 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108724 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112453 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108725 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112454 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108726 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112455 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108727 } },112456 } },
108728 }, .{112457 }, .{
108729 .required_features = .{ .avx, .slow_incdec, null, null },112458 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -108734,10 +112463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108734,10 +112463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108734 },112463 },
108735 .call_frame = .{ .alignment = .@"16" },112464 .call_frame = .{ .alignment = .@"16" },
108736 .extra_temps = .{112465 .extra_temps = .{
108737 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112466 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108738 .{ .type = .u32, .kind = .{ .reg = .edi } },112467 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108739 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112468 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108740 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112469 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108741 .unused,112470 .unused,
108742 .unused,112471 .unused,
108743 .unused,112472 .unused,
...@@ -108749,12 +112478,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108749,12 +112478,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108749 .dst_temps = .{ .mem, .unused },112478 .dst_temps = .{ .mem, .unused },
108750 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108751 .each = .{ .once = &.{112480 .each = .{ .once = &.{
108752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112481 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108753 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112482 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108754 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112483 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108755 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112484 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108756 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112485 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108757 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112486 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108758 } },112487 } },
108759 }, .{112488 }, .{
108760 .required_features = .{ .avx, null, null, null },112489 .required_features = .{ .avx, null, null, null },
...@@ -108765,10 +112494,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108765,10 +112494,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108765 },112494 },
108766 .call_frame = .{ .alignment = .@"16" },112495 .call_frame = .{ .alignment = .@"16" },
108767 .extra_temps = .{112496 .extra_temps = .{
108768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112497 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108769 .{ .type = .u32, .kind = .{ .reg = .edi } },112498 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108770 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112499 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108771 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112500 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108772 .unused,112501 .unused,
108773 .unused,112502 .unused,
108774 .unused,112503 .unused,
...@@ -108780,12 +112509,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108780,12 +112509,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108780 .dst_temps = .{ .mem, .unused },112509 .dst_temps = .{ .mem, .unused },
108781 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112510 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108782 .each = .{ .once = &.{112511 .each = .{ .once = &.{
108783 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112512 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108784 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112513 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108785 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112514 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108786 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112515 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108787 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112516 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108788 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112517 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108789 } },112518 } },
108790 }, .{112519 }, .{
108791 .required_features = .{ .sse4_1, .slow_incdec, null, null },112520 .required_features = .{ .sse4_1, .slow_incdec, null, null },
...@@ -108796,10 +112525,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108796,10 +112525,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108796 },112525 },
108797 .call_frame = .{ .alignment = .@"16" },112526 .call_frame = .{ .alignment = .@"16" },
108798 .extra_temps = .{112527 .extra_temps = .{
108799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112528 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108800 .{ .type = .u32, .kind = .{ .reg = .edi } },112529 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108801 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112530 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108802 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112531 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108803 .unused,112532 .unused,
108804 .unused,112533 .unused,
108805 .unused,112534 .unused,
...@@ -108811,12 +112540,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108811,12 +112540,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108811 .dst_temps = .{ .mem, .unused },112540 .dst_temps = .{ .mem, .unused },
108812 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108813 .each = .{ .once = &.{112542 .each = .{ .once = &.{
108814 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112543 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108815 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112544 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108816 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112545 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108817 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112546 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108818 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112547 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108819 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112548 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108820 } },112549 } },
108821 }, .{112550 }, .{
108822 .required_features = .{ .sse4_1, null, null, null },112551 .required_features = .{ .sse4_1, null, null, null },
...@@ -108827,10 +112556,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108827,10 +112556,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108827 },112556 },
108828 .call_frame = .{ .alignment = .@"16" },112557 .call_frame = .{ .alignment = .@"16" },
108829 .extra_temps = .{112558 .extra_temps = .{
108830 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112559 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108831 .{ .type = .u32, .kind = .{ .reg = .edi } },112560 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108832 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112561 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108833 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112562 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108834 .unused,112563 .unused,
108835 .unused,112564 .unused,
108836 .unused,112565 .unused,
...@@ -108842,12 +112571,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108842,12 +112571,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108842 .dst_temps = .{ .mem, .unused },112571 .dst_temps = .{ .mem, .unused },
108843 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108844 .each = .{ .once = &.{112573 .each = .{ .once = &.{
108845 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112574 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108846 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112575 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108847 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112576 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108848 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112577 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
108849 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112578 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108850 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112579 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108851 } },112580 } },
108852 }, .{112581 }, .{
108853 .required_features = .{ .sse2, .slow_incdec, null, null },112582 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -108858,10 +112587,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108858,10 +112587,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108858 },112587 },
108859 .call_frame = .{ .alignment = .@"16" },112588 .call_frame = .{ .alignment = .@"16" },
108860 .extra_temps = .{112589 .extra_temps = .{
108861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112590 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108862 .{ .type = .u32, .kind = .{ .reg = .edi } },112591 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108863 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112592 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108864 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112593 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108865 .unused,112594 .unused,
108866 .unused,112595 .unused,
108867 .unused,112596 .unused,
...@@ -108873,13 +112602,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108873,13 +112602,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108873 .dst_temps = .{ .mem, .unused },112602 .dst_temps = .{ .mem, .unused },
108874 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112603 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108875 .each = .{ .once = &.{112604 .each = .{ .once = &.{
108876 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112605 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108877 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112606 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108878 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112607 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108879 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },112608 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108880 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112609 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108881 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112610 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108882 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112611 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108883 } },112612 } },
108884 }, .{112613 }, .{
108885 .required_features = .{ .sse2, null, null, null },112614 .required_features = .{ .sse2, null, null, null },
...@@ -108890,10 +112619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108890,10 +112619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108890 },112619 },
108891 .call_frame = .{ .alignment = .@"16" },112620 .call_frame = .{ .alignment = .@"16" },
108892 .extra_temps = .{112621 .extra_temps = .{
108893 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112622 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108894 .{ .type = .u32, .kind = .{ .reg = .edi } },112623 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108895 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112624 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108896 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112625 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108897 .unused,112626 .unused,
108898 .unused,112627 .unused,
108899 .unused,112628 .unused,
...@@ -108905,13 +112634,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108905,13 +112634,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108905 .dst_temps = .{ .mem, .unused },112634 .dst_temps = .{ .mem, .unused },
108906 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112635 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108907 .each = .{ .once = &.{112636 .each = .{ .once = &.{
108908 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112637 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108909 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112638 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108910 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112639 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108911 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },112640 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108912 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112641 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108913 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112642 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108914 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112643 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108915 } },112644 } },
108916 }, .{112645 }, .{
108917 .required_features = .{ .sse, .slow_incdec, null, null },112646 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -108922,10 +112651,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108922,10 +112651,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108922 },112651 },
108923 .call_frame = .{ .alignment = .@"16" },112652 .call_frame = .{ .alignment = .@"16" },
108924 .extra_temps = .{112653 .extra_temps = .{
108925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112654 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108926 .{ .type = .u32, .kind = .{ .reg = .edi } },112655 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108927 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112656 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108928 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112657 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108929 .{ .type = .f32, .kind = .mem },112658 .{ .type = .f32, .kind = .mem },
108930 .unused,112659 .unused,
108931 .unused,112660 .unused,
...@@ -108937,14 +112666,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108937,14 +112666,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108937 .dst_temps = .{ .mem, .unused },112666 .dst_temps = .{ .mem, .unused },
108938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108939 .each = .{ .once = &.{112668 .each = .{ .once = &.{
108940 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112669 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108941 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112670 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108942 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108943 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },112672 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108944 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },112673 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108945 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112674 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108946 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },112675 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
108947 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112676 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108948 } },112677 } },
108949 }, .{112678 }, .{
108950 .required_features = .{ .sse, null, null, null },112679 .required_features = .{ .sse, null, null, null },
...@@ -108955,10 +112684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108955,10 +112684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108955 },112684 },
108956 .call_frame = .{ .alignment = .@"16" },112685 .call_frame = .{ .alignment = .@"16" },
108957 .extra_temps = .{112686 .extra_temps = .{
108958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112687 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108959 .{ .type = .u32, .kind = .{ .reg = .edi } },112688 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108960 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },112689 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108961 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112690 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108962 .{ .type = .f32, .kind = .mem },112691 .{ .type = .f32, .kind = .mem },
108963 .unused,112692 .unused,
108964 .unused,112693 .unused,
...@@ -108970,14 +112699,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108970,14 +112699,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108970 .dst_temps = .{ .mem, .unused },112699 .dst_temps = .{ .mem, .unused },
108971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108972 .each = .{ .once = &.{112701 .each = .{ .once = &.{
108973 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112702 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
108974 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112703 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112704 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108976 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },112705 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108977 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },112706 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108978 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112707 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
108979 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112708 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
108980 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },112709 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108981 } },112710 } },
108982 }, .{112711 }, .{
108983 .required_features = .{ .f16c, null, null, null },112712 .required_features = .{ .f16c, null, null, null },
...@@ -109043,7 +112772,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109043,7 +112772,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109043 .{ .src = .{ .to_mem, .none, .none } },112772 .{ .src = .{ .to_mem, .none, .none } },
109044 },112773 },
109045 .extra_temps = .{112774 .extra_temps = .{
109046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109047 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },112776 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109048 .unused,112777 .unused,
109049 .unused,112778 .unused,
...@@ -109058,12 +112787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109058,12 +112787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109058 .dst_temps = .{ .mem, .unused },112787 .dst_temps = .{ .mem, .unused },
109059 .clobbers = .{ .eflags = true },112788 .clobbers = .{ .eflags = true },
109060 .each = .{ .once = &.{112789 .each = .{ .once = &.{
109061 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112790 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
109062 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },112791 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
109063 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },112792 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
109064 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },112793 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
109065 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },112794 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109066 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112795 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109067 } },112796 } },
109068 }, .{112797 }, .{
109069 .required_features = .{ .f16c, null, null, null },112798 .required_features = .{ .f16c, null, null, null },
...@@ -109073,7 +112802,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109073,7 +112802,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109073 .{ .src = .{ .to_mem, .none, .none } },112802 .{ .src = .{ .to_mem, .none, .none } },
109074 },112803 },
109075 .extra_temps = .{112804 .extra_temps = .{
109076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112805 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109077 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },112806 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109078 .unused,112807 .unused,
109079 .unused,112808 .unused,
...@@ -109088,12 +112817,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109088,12 +112817,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109088 .dst_temps = .{ .mem, .unused },112817 .dst_temps = .{ .mem, .unused },
109089 .clobbers = .{ .eflags = true },112818 .clobbers = .{ .eflags = true },
109090 .each = .{ .once = &.{112819 .each = .{ .once = &.{
109091 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112820 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
109092 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112821 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
109093 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112822 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109094 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },112823 .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ },
109095 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112824 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
109096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112825 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109097 } },112826 } },
109098 }, .{112827 }, .{
109099 .required_features = .{ .f16c, .avx2, null, null },112828 .required_features = .{ .f16c, .avx2, null, null },
...@@ -109103,7 +112832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109103,7 +112832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109103 .{ .src = .{ .to_mem, .none, .none } },112832 .{ .src = .{ .to_mem, .none, .none } },
109104 },112833 },
109105 .extra_temps = .{112834 .extra_temps = .{
109106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112835 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109107 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },112836 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109108 .unused,112837 .unused,
109109 .unused,112838 .unused,
...@@ -109118,12 +112847,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109118,12 +112847,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109118 .dst_temps = .{ .mem, .unused },112847 .dst_temps = .{ .mem, .unused },
109119 .clobbers = .{ .eflags = true },112848 .clobbers = .{ .eflags = true },
109120 .each = .{ .once = &.{112849 .each = .{ .once = &.{
109121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112850 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
109122 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },112851 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
109123 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },112852 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
109124 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },112853 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
109125 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },112854 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112855 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109127 } },112856 } },
109128 }, .{112857 }, .{
109129 .required_features = .{ .f16c, null, null, null },112858 .required_features = .{ .f16c, null, null, null },
...@@ -109133,7 +112862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109133,7 +112862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109133 .{ .src = .{ .to_mem, .none, .none } },112862 .{ .src = .{ .to_mem, .none, .none } },
109134 },112863 },
109135 .extra_temps = .{112864 .extra_temps = .{
109136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112865 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109137 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },112866 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109138 .unused,112867 .unused,
109139 .unused,112868 .unused,
...@@ -109148,12 +112877,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109148,12 +112877,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109148 .dst_temps = .{ .mem, .unused },112877 .dst_temps = .{ .mem, .unused },
109149 .clobbers = .{ .eflags = true },112878 .clobbers = .{ .eflags = true },
109150 .each = .{ .once = &.{112879 .each = .{ .once = &.{
109151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112880 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
109152 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112881 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
109153 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112882 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109154 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },112883 .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ },
109155 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112884 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
109156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112885 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109157 } },112886 } },
109158 }, .{112887 }, .{
109159 .required_features = .{ .avx, null, null, null },112888 .required_features = .{ .avx, null, null, null },
...@@ -109164,10 +112893,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109164,10 +112893,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109164 },112893 },
109165 .call_frame = .{ .alignment = .@"16" },112894 .call_frame = .{ .alignment = .@"16" },
109166 .extra_temps = .{112895 .extra_temps = .{
109167 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112896 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109168 .{ .type = .i32, .kind = .{ .reg = .edi } },112897 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109169 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112898 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109170 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112899 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109171 .unused,112900 .unused,
109172 .unused,112901 .unused,
109173 .unused,112902 .unused,
...@@ -109179,12 +112908,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109179,12 +112908,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109179 .dst_temps = .{ .mem, .unused },112908 .dst_temps = .{ .mem, .unused },
109180 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109181 .each = .{ .once = &.{112910 .each = .{ .once = &.{
109182 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112911 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109183 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },112912 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109184 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109185 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112914 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109186 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112915 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109187 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112916 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109188 } },112917 } },
109189 }, .{112918 }, .{
109190 .required_features = .{ .sse4_1, null, null, null },112919 .required_features = .{ .sse4_1, null, null, null },
...@@ -109195,10 +112924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109195,10 +112924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109195 },112924 },
109196 .call_frame = .{ .alignment = .@"16" },112925 .call_frame = .{ .alignment = .@"16" },
109197 .extra_temps = .{112926 .extra_temps = .{
109198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112927 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109199 .{ .type = .i32, .kind = .{ .reg = .edi } },112928 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109200 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112929 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109201 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112930 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109202 .unused,112931 .unused,
109203 .unused,112932 .unused,
109204 .unused,112933 .unused,
...@@ -109210,12 +112939,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109210,12 +112939,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109210 .dst_temps = .{ .mem, .unused },112939 .dst_temps = .{ .mem, .unused },
109211 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109212 .each = .{ .once = &.{112941 .each = .{ .once = &.{
109213 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112942 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109214 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },112943 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109215 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112944 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109216 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },112945 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109217 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112946 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109218 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112947 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109219 } },112948 } },
109220 }, .{112949 }, .{
109221 .required_features = .{ .sse2, null, null, null },112950 .required_features = .{ .sse2, null, null, null },
...@@ -109226,10 +112955,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109226,10 +112955,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109226 },112955 },
109227 .call_frame = .{ .alignment = .@"16" },112956 .call_frame = .{ .alignment = .@"16" },
109228 .extra_temps = .{112957 .extra_temps = .{
109229 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112958 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109230 .{ .type = .i32, .kind = .{ .reg = .edi } },112959 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109231 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112960 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109232 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112961 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109233 .unused,112962 .unused,
109234 .unused,112963 .unused,
109235 .unused,112964 .unused,
...@@ -109241,13 +112970,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109241,13 +112970,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109241 .dst_temps = .{ .mem, .unused },112970 .dst_temps = .{ .mem, .unused },
109242 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109243 .each = .{ .once = &.{112972 .each = .{ .once = &.{
109244 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112973 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109245 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },112974 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109246 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109247 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },112976 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109248 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },112977 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109249 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112978 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112979 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109251 } },112980 } },
109252 }, .{112981 }, .{
109253 .required_features = .{ .sse, null, null, null },112982 .required_features = .{ .sse, null, null, null },
...@@ -109258,10 +112987,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109258,10 +112987,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109258 },112987 },
109259 .call_frame = .{ .alignment = .@"16" },112988 .call_frame = .{ .alignment = .@"16" },
109260 .extra_temps = .{112989 .extra_temps = .{
109261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109262 .{ .type = .i32, .kind = .{ .reg = .edi } },112991 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109263 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },112992 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109264 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },112993 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109265 .{ .type = .f32, .kind = .mem },112994 .{ .type = .f32, .kind = .mem },
109266 .unused,112995 .unused,
109267 .unused,112996 .unused,
...@@ -109273,14 +113002,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109273,14 +113002,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109273 .dst_temps = .{ .mem, .unused },113002 .dst_temps = .{ .mem, .unused },
109274 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109275 .each = .{ .once = &.{113004 .each = .{ .once = &.{
109276 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113005 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109277 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },113006 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109278 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109279 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },113008 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109280 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },113009 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109281 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113010 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109282 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113011 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109283 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113012 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109284 } },113013 } },
109285 }, .{113014 }, .{
109286 .required_features = .{ .avx, null, null, null },113015 .required_features = .{ .avx, null, null, null },
...@@ -109291,10 +113020,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109291,10 +113020,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109291 },113020 },
109292 .call_frame = .{ .alignment = .@"16" },113021 .call_frame = .{ .alignment = .@"16" },
109293 .extra_temps = .{113022 .extra_temps = .{
109294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113023 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109295 .{ .type = .u32, .kind = .{ .reg = .edi } },113024 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109296 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113025 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113026 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109298 .unused,113027 .unused,
109299 .unused,113028 .unused,
109300 .unused,113029 .unused,
...@@ -109306,12 +113035,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109306,12 +113035,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109306 .dst_temps = .{ .mem, .unused },113035 .dst_temps = .{ .mem, .unused },
109307 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109308 .each = .{ .once = &.{113037 .each = .{ .once = &.{
109309 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113038 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109310 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },113039 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109311 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113040 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109312 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113041 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109313 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113042 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113043 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109315 } },113044 } },
109316 }, .{113045 }, .{
109317 .required_features = .{ .sse4_1, null, null, null },113046 .required_features = .{ .sse4_1, null, null, null },
...@@ -109322,10 +113051,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109322,10 +113051,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109322 },113051 },
109323 .call_frame = .{ .alignment = .@"16" },113052 .call_frame = .{ .alignment = .@"16" },
109324 .extra_temps = .{113053 .extra_temps = .{
109325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113054 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109326 .{ .type = .u32, .kind = .{ .reg = .edi } },113055 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109327 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113056 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113057 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109329 .unused,113058 .unused,
109330 .unused,113059 .unused,
109331 .unused,113060 .unused,
...@@ -109337,12 +113066,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109337,12 +113066,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109337 .dst_temps = .{ .mem, .unused },113066 .dst_temps = .{ .mem, .unused },
109338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113067 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109339 .each = .{ .once = &.{113068 .each = .{ .once = &.{
109340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113069 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109341 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },113070 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109342 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113071 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109343 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113072 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109344 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113073 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113074 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109346 } },113075 } },
109347 }, .{113076 }, .{
109348 .required_features = .{ .sse2, null, null, null },113077 .required_features = .{ .sse2, null, null, null },
...@@ -109353,10 +113082,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109353,10 +113082,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109353 },113082 },
109354 .call_frame = .{ .alignment = .@"16" },113083 .call_frame = .{ .alignment = .@"16" },
109355 .extra_temps = .{113084 .extra_temps = .{
109356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109357 .{ .type = .u32, .kind = .{ .reg = .edi } },113086 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109358 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113087 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109359 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113088 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109360 .unused,113089 .unused,
109361 .unused,113090 .unused,
109362 .unused,113091 .unused,
...@@ -109368,13 +113097,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109368,13 +113097,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109368 .dst_temps = .{ .mem, .unused },113097 .dst_temps = .{ .mem, .unused },
109369 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109370 .each = .{ .once = &.{113099 .each = .{ .once = &.{
109371 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113100 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109372 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },113101 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109373 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109374 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },113103 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109375 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113104 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109376 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113105 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109377 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113106 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109378 } },113107 } },
109379 }, .{113108 }, .{
109380 .required_features = .{ .sse, null, null, null },113109 .required_features = .{ .sse, null, null, null },
...@@ -109385,10 +113114,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109385,10 +113114,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109385 },113114 },
109386 .call_frame = .{ .alignment = .@"16" },113115 .call_frame = .{ .alignment = .@"16" },
109387 .extra_temps = .{113116 .extra_temps = .{
109388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113117 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109389 .{ .type = .u32, .kind = .{ .reg = .edi } },113118 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109390 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113119 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109391 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113120 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109392 .{ .type = .f32, .kind = .mem },113121 .{ .type = .f32, .kind = .mem },
109393 .unused,113122 .unused,
109394 .unused,113123 .unused,
...@@ -109400,14 +113129,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109400,14 +113129,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109400 .dst_temps = .{ .mem, .unused },113129 .dst_temps = .{ .mem, .unused },
109401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113130 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109402 .each = .{ .once = &.{113131 .each = .{ .once = &.{
109403 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113132 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
109404 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },113133 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109405 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113134 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109406 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },113135 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109407 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },113136 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109408 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113137 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109409 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113138 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113139 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109411 } },113140 } },
109412 }, .{113141 }, .{
109413 .required_features = .{ .f16c, null, null, null },113142 .required_features = .{ .f16c, null, null, null },
...@@ -109443,7 +113172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109443,7 +113172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109443 .{ .src = .{ .to_mem, .none, .none } },113172 .{ .src = .{ .to_mem, .none, .none } },
109444 },113173 },
109445 .extra_temps = .{113174 .extra_temps = .{
109446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113175 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109447 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },113176 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109448 .unused,113177 .unused,
109449 .unused,113178 .unused,
...@@ -109458,11 +113187,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109458,11 +113187,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109458 .dst_temps = .{ .mem, .unused },113187 .dst_temps = .{ .mem, .unused },
109459 .clobbers = .{ .eflags = true },113188 .clobbers = .{ .eflags = true },
109460 .each = .{ .once = &.{113189 .each = .{ .once = &.{
109461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113190 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
109462 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113191 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
109463 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },113192 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
109464 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },113193 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113194 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109466 } },113195 } },
109467 }, .{113196 }, .{
109468 .required_features = .{ .f16c, null, null, null },113197 .required_features = .{ .f16c, null, null, null },
...@@ -109472,7 +113201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109472,7 +113201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109472 .{ .src = .{ .to_mem, .none, .none } },113201 .{ .src = .{ .to_mem, .none, .none } },
109473 },113202 },
109474 .extra_temps = .{113203 .extra_temps = .{
109475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113204 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109476 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },113205 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109477 .unused,113206 .unused,
109478 .unused,113207 .unused,
...@@ -109487,11 +113216,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109487,11 +113216,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109487 .dst_temps = .{ .mem, .unused },113216 .dst_temps = .{ .mem, .unused },
109488 .clobbers = .{ .eflags = true },113217 .clobbers = .{ .eflags = true },
109489 .each = .{ .once = &.{113218 .each = .{ .once = &.{
109490 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113219 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
109491 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113220 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
109492 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },113221 .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ },
109493 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },113222 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
109494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113223 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109495 } },113224 } },
109496 }, .{113225 }, .{
109497 .required_features = .{ .avx, null, null, null },113226 .required_features = .{ .avx, null, null, null },
...@@ -109502,10 +113231,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109502,10 +113231,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109502 },113231 },
109503 .call_frame = .{ .alignment = .@"16" },113232 .call_frame = .{ .alignment = .@"16" },
109504 .extra_temps = .{113233 .extra_temps = .{
109505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113234 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109506 .{ .type = .i32, .kind = .{ .reg = .edi } },113235 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109507 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },113236 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109508 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113237 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109509 .unused,113238 .unused,
109510 .unused,113239 .unused,
109511 .unused,113240 .unused,
...@@ -109517,12 +113246,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109517,12 +113246,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109517 .dst_temps = .{ .mem, .unused },113246 .dst_temps = .{ .mem, .unused },
109518 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109519 .each = .{ .once = &.{113248 .each = .{ .once = &.{
109520 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113249 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109521 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113250 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109522 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113251 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109523 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113252 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109524 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113253 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113254 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109526 } },113255 } },
109527 }, .{113256 }, .{
109528 .required_features = .{ .sse4_1, null, null, null },113257 .required_features = .{ .sse4_1, null, null, null },
...@@ -109533,10 +113262,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109533,10 +113262,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109533 },113262 },
109534 .call_frame = .{ .alignment = .@"16" },113263 .call_frame = .{ .alignment = .@"16" },
109535 .extra_temps = .{113264 .extra_temps = .{
109536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113265 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109537 .{ .type = .i32, .kind = .{ .reg = .edi } },113266 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109538 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },113267 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109539 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113268 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109540 .unused,113269 .unused,
109541 .unused,113270 .unused,
109542 .unused,113271 .unused,
...@@ -109548,12 +113277,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109548,12 +113277,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109548 .dst_temps = .{ .mem, .unused },113277 .dst_temps = .{ .mem, .unused },
109549 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113278 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109550 .each = .{ .once = &.{113279 .each = .{ .once = &.{
109551 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113280 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109552 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113281 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109553 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113282 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109554 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113283 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109555 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113284 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109556 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113285 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109557 } },113286 } },
109558 }, .{113287 }, .{
109559 .required_features = .{ .sse2, null, null, null },113288 .required_features = .{ .sse2, null, null, null },
...@@ -109564,10 +113293,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109564,10 +113293,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109564 },113293 },
109565 .call_frame = .{ .alignment = .@"16" },113294 .call_frame = .{ .alignment = .@"16" },
109566 .extra_temps = .{113295 .extra_temps = .{
109567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113296 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109568 .{ .type = .i32, .kind = .{ .reg = .edi } },113297 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109569 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },113298 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109570 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113299 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109571 .unused,113300 .unused,
109572 .unused,113301 .unused,
109573 .unused,113302 .unused,
...@@ -109579,13 +113308,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109579,13 +113308,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109579 .dst_temps = .{ .mem, .unused },113308 .dst_temps = .{ .mem, .unused },
109580 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113309 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109581 .each = .{ .once = &.{113310 .each = .{ .once = &.{
109582 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113311 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109583 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113312 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109584 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113313 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109585 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },113314 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109586 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113315 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109587 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113316 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113317 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109589 } },113318 } },
109590 }, .{113319 }, .{
109591 .required_features = .{ .sse, null, null, null },113320 .required_features = .{ .sse, null, null, null },
...@@ -109596,10 +113325,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109596,10 +113325,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109596 },113325 },
109597 .call_frame = .{ .alignment = .@"16" },113326 .call_frame = .{ .alignment = .@"16" },
109598 .extra_temps = .{113327 .extra_temps = .{
109599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113328 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109600 .{ .type = .i32, .kind = .{ .reg = .edi } },113329 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109601 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },113330 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109602 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113331 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109603 .{ .type = .f32, .kind = .mem },113332 .{ .type = .f32, .kind = .mem },
109604 .unused,113333 .unused,
109605 .unused,113334 .unused,
...@@ -109611,14 +113340,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109611,14 +113340,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109611 .dst_temps = .{ .mem, .unused },113340 .dst_temps = .{ .mem, .unused },
109612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113341 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109613 .each = .{ .once = &.{113342 .each = .{ .once = &.{
109614 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113343 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109615 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113344 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109616 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113345 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109617 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },113346 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109618 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },113347 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109619 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113348 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109620 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113349 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109621 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113350 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109622 } },113351 } },
109623 }, .{113352 }, .{
109624 .required_features = .{ .avx, null, null, null },113353 .required_features = .{ .avx, null, null, null },
...@@ -109629,10 +113358,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109629,10 +113358,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109629 },113358 },
109630 .call_frame = .{ .alignment = .@"16" },113359 .call_frame = .{ .alignment = .@"16" },
109631 .extra_temps = .{113360 .extra_temps = .{
109632 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113361 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109633 .{ .type = .u32, .kind = .{ .reg = .edi } },113362 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109634 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113363 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109635 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113364 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109636 .unused,113365 .unused,
109637 .unused,113366 .unused,
109638 .unused,113367 .unused,
...@@ -109644,12 +113373,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109644,12 +113373,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109644 .dst_temps = .{ .mem, .unused },113373 .dst_temps = .{ .mem, .unused },
109645 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113374 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109646 .each = .{ .once = &.{113375 .each = .{ .once = &.{
109647 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113376 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109648 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113377 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109649 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113378 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109650 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113379 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109651 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113380 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113381 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109653 } },113382 } },
109654 }, .{113383 }, .{
109655 .required_features = .{ .sse4_1, null, null, null },113384 .required_features = .{ .sse4_1, null, null, null },
...@@ -109660,10 +113389,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109660,10 +113389,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109660 },113389 },
109661 .call_frame = .{ .alignment = .@"16" },113390 .call_frame = .{ .alignment = .@"16" },
109662 .extra_temps = .{113391 .extra_temps = .{
109663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113392 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109664 .{ .type = .u32, .kind = .{ .reg = .edi } },113393 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109665 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113394 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113395 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109667 .unused,113396 .unused,
109668 .unused,113397 .unused,
109669 .unused,113398 .unused,
...@@ -109675,12 +113404,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109675,12 +113404,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109675 .dst_temps = .{ .mem, .unused },113404 .dst_temps = .{ .mem, .unused },
109676 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113405 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109677 .each = .{ .once = &.{113406 .each = .{ .once = &.{
109678 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113407 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109679 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113408 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109680 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113409 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109681 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113410 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113411 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113412 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109684 } },113413 } },
109685 }, .{113414 }, .{
109686 .required_features = .{ .sse2, null, null, null },113415 .required_features = .{ .sse2, null, null, null },
...@@ -109691,10 +113420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109691,10 +113420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109691 },113420 },
109692 .call_frame = .{ .alignment = .@"16" },113421 .call_frame = .{ .alignment = .@"16" },
109693 .extra_temps = .{113422 .extra_temps = .{
109694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109695 .{ .type = .u32, .kind = .{ .reg = .edi } },113424 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109696 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113425 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109697 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113426 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109698 .unused,113427 .unused,
109699 .unused,113428 .unused,
109700 .unused,113429 .unused,
...@@ -109706,13 +113435,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109706,13 +113435,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109706 .dst_temps = .{ .mem, .unused },113435 .dst_temps = .{ .mem, .unused },
109707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113436 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109708 .each = .{ .once = &.{113437 .each = .{ .once = &.{
109709 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113438 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109710 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113439 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109711 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113440 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109712 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },113441 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109713 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113442 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109714 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113443 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113444 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109716 } },113445 } },
109717 }, .{113446 }, .{
109718 .required_features = .{ .sse, null, null, null },113447 .required_features = .{ .sse, null, null, null },
...@@ -109723,10 +113452,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109723,10 +113452,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109723 },113452 },
109724 .call_frame = .{ .alignment = .@"16" },113453 .call_frame = .{ .alignment = .@"16" },
109725 .extra_temps = .{113454 .extra_temps = .{
109726 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113455 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109727 .{ .type = .u32, .kind = .{ .reg = .edi } },113456 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109728 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },113457 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109729 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113458 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109730 .{ .type = .f32, .kind = .mem },113459 .{ .type = .f32, .kind = .mem },
109731 .unused,113460 .unused,
109732 .unused,113461 .unused,
...@@ -109738,14 +113467,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109738,14 +113467,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109738 .dst_temps = .{ .mem, .unused },113467 .dst_temps = .{ .mem, .unused },
109739 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109740 .each = .{ .once = &.{113469 .each = .{ .once = &.{
109741 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113470 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109742 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },113471 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109743 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113472 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109744 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },113473 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109745 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },113474 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109746 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113475 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109747 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113476 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113477 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109749 } },113478 } },
109750 }, .{113479 }, .{
109751 .required_features = .{ .@"64bit", .f16c, null, null },113480 .required_features = .{ .@"64bit", .f16c, null, null },
...@@ -109755,7 +113484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109755,7 +113484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109755 .{ .src = .{ .to_mem, .none, .none } },113484 .{ .src = .{ .to_mem, .none, .none } },
109756 },113485 },
109757 .extra_temps = .{113486 .extra_temps = .{
109758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113487 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109759 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },113488 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
109760 .unused,113489 .unused,
109761 .unused,113490 .unused,
...@@ -109770,13 +113499,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109770,13 +113499,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109770 .dst_temps = .{ .mem, .unused },113499 .dst_temps = .{ .mem, .unused },
109771 .clobbers = .{ .eflags = true },113500 .clobbers = .{ .eflags = true },
109772 .each = .{ .once = &.{113501 .each = .{ .once = &.{
109773 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113502 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109774 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },113503 .{ .@"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), ._ },
109776 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },113505 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },
109777 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },113506 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
109778 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113507 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109779 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113508 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109780 } },113509 } },
109781 }, .{113510 }, .{
109782 .required_features = .{ .@"64bit", .avx, null, null },113511 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -109787,10 +113516,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109787,10 +113516,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109787 },113516 },
109788 .call_frame = .{ .alignment = .@"16" },113517 .call_frame = .{ .alignment = .@"16" },
109789 .extra_temps = .{113518 .extra_temps = .{
109790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113519 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109791 .{ .type = .i64, .kind = .{ .reg = .rdi } },113520 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109792 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },113521 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109793 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113522 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109794 .unused,113523 .unused,
109795 .unused,113524 .unused,
109796 .unused,113525 .unused,
...@@ -109802,12 +113531,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109802,12 +113531,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109802 .dst_temps = .{ .mem, .unused },113531 .dst_temps = .{ .mem, .unused },
109803 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113532 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109804 .each = .{ .once = &.{113533 .each = .{ .once = &.{
109805 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113534 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109806 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113535 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109807 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113536 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109808 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113537 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109809 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113538 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109810 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113539 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109811 } },113540 } },
109812 }, .{113541 }, .{
109813 .required_features = .{ .@"64bit", .sse4_1, null, null },113542 .required_features = .{ .@"64bit", .sse4_1, null, null },
...@@ -109818,10 +113547,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109818,10 +113547,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109818 },113547 },
109819 .call_frame = .{ .alignment = .@"16" },113548 .call_frame = .{ .alignment = .@"16" },
109820 .extra_temps = .{113549 .extra_temps = .{
109821 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113550 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109822 .{ .type = .i64, .kind = .{ .reg = .rdi } },113551 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109823 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },113552 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109824 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113553 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109825 .unused,113554 .unused,
109826 .unused,113555 .unused,
109827 .unused,113556 .unused,
...@@ -109833,12 +113562,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109833,12 +113562,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109833 .dst_temps = .{ .mem, .unused },113562 .dst_temps = .{ .mem, .unused },
109834 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109835 .each = .{ .once = &.{113564 .each = .{ .once = &.{
109836 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113565 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109837 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113566 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109838 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113567 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109839 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113568 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109840 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113569 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113570 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109842 } },113571 } },
109843 }, .{113572 }, .{
109844 .required_features = .{ .@"64bit", .sse2, null, null },113573 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -109849,10 +113578,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109849,10 +113578,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109849 },113578 },
109850 .call_frame = .{ .alignment = .@"16" },113579 .call_frame = .{ .alignment = .@"16" },
109851 .extra_temps = .{113580 .extra_temps = .{
109852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113581 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109853 .{ .type = .i64, .kind = .{ .reg = .rdi } },113582 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109854 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },113583 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109855 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113584 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109856 .unused,113585 .unused,
109857 .unused,113586 .unused,
109858 .unused,113587 .unused,
...@@ -109864,13 +113593,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109864,13 +113593,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109864 .dst_temps = .{ .mem, .unused },113593 .dst_temps = .{ .mem, .unused },
109865 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109866 .each = .{ .once = &.{113595 .each = .{ .once = &.{
109867 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113596 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109868 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113597 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109869 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113598 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109870 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },113599 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109871 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113600 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109872 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113601 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113602 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109874 } },113603 } },
109875 }, .{113604 }, .{
109876 .required_features = .{ .@"64bit", .sse, null, null },113605 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -109881,10 +113610,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109881,10 +113610,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109881 },113610 },
109882 .call_frame = .{ .alignment = .@"16" },113611 .call_frame = .{ .alignment = .@"16" },
109883 .extra_temps = .{113612 .extra_temps = .{
109884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113613 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109885 .{ .type = .i64, .kind = .{ .reg = .rdi } },113614 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109886 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },113615 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109887 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113616 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109888 .{ .type = .f32, .kind = .mem },113617 .{ .type = .f32, .kind = .mem },
109889 .unused,113618 .unused,
109890 .unused,113619 .unused,
...@@ -109896,14 +113625,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109896,14 +113625,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109896 .dst_temps = .{ .mem, .unused },113625 .dst_temps = .{ .mem, .unused },
109897 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113626 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109898 .each = .{ .once = &.{113627 .each = .{ .once = &.{
109899 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113628 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109900 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113629 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109901 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113630 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109902 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },113631 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109903 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },113632 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109904 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113633 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109905 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113634 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109906 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113635 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109907 } },113636 } },
109908 }, .{113637 }, .{
109909 .required_features = .{ .@"64bit", .avx, null, null },113638 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -109914,10 +113643,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109914,10 +113643,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109914 },113643 },
109915 .call_frame = .{ .alignment = .@"16" },113644 .call_frame = .{ .alignment = .@"16" },
109916 .extra_temps = .{113645 .extra_temps = .{
109917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113646 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109918 .{ .type = .u64, .kind = .{ .reg = .rdi } },113647 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109919 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },113648 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109920 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113649 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109921 .unused,113650 .unused,
109922 .unused,113651 .unused,
109923 .unused,113652 .unused,
...@@ -109929,12 +113658,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109929,12 +113658,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109929 .dst_temps = .{ .mem, .unused },113658 .dst_temps = .{ .mem, .unused },
109930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113659 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109931 .each = .{ .once = &.{113660 .each = .{ .once = &.{
109932 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113661 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109933 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113662 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109934 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113663 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109935 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113664 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109936 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113665 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113666 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109938 } },113667 } },
109939 }, .{113668 }, .{
109940 .required_features = .{ .@"64bit", .sse4_1, null, null },113669 .required_features = .{ .@"64bit", .sse4_1, null, null },
...@@ -109945,10 +113674,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109945,10 +113674,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109945 },113674 },
109946 .call_frame = .{ .alignment = .@"16" },113675 .call_frame = .{ .alignment = .@"16" },
109947 .extra_temps = .{113676 .extra_temps = .{
109948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113677 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109949 .{ .type = .u64, .kind = .{ .reg = .rdi } },113678 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109950 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },113679 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109951 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113680 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109952 .unused,113681 .unused,
109953 .unused,113682 .unused,
109954 .unused,113683 .unused,
...@@ -109960,12 +113689,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109960,12 +113689,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109960 .dst_temps = .{ .mem, .unused },113689 .dst_temps = .{ .mem, .unused },
109961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113690 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109962 .each = .{ .once = &.{113691 .each = .{ .once = &.{
109963 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113692 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109964 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113693 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109965 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113694 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109966 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },113695 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
109967 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113696 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
109968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113697 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109969 } },113698 } },
109970 }, .{113699 }, .{
109971 .required_features = .{ .@"64bit", .sse2, null, null },113700 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -109976,10 +113705,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109976,10 +113705,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109976 },113705 },
109977 .call_frame = .{ .alignment = .@"16" },113706 .call_frame = .{ .alignment = .@"16" },
109978 .extra_temps = .{113707 .extra_temps = .{
109979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113708 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109980 .{ .type = .u64, .kind = .{ .reg = .rdi } },113709 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109981 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },113710 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109982 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113711 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109983 .unused,113712 .unused,
109984 .unused,113713 .unused,
109985 .unused,113714 .unused,
...@@ -109991,13 +113720,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109991,13 +113720,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109991 .dst_temps = .{ .mem, .unused },113720 .dst_temps = .{ .mem, .unused },
109992 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113721 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109993 .each = .{ .once = &.{113722 .each = .{ .once = &.{
109994 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113723 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109995 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113724 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109996 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113725 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109997 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },113726 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109998 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113727 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
109999 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113728 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110000 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113729 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110001 } },113730 } },
110002 }, .{113731 }, .{
110003 .required_features = .{ .@"64bit", .sse, null, null },113732 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -110008,10 +113737,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110008,10 +113737,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110008 },113737 },
110009 .call_frame = .{ .alignment = .@"16" },113738 .call_frame = .{ .alignment = .@"16" },
110010 .extra_temps = .{113739 .extra_temps = .{
110011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113740 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110012 .{ .type = .u64, .kind = .{ .reg = .rdi } },113741 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110013 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },113742 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110014 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },113743 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110015 .{ .type = .f32, .kind = .mem },113744 .{ .type = .f32, .kind = .mem },
110016 .unused,113745 .unused,
110017 .unused,113746 .unused,
...@@ -110023,17 +113752,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110023,17 +113752,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110023 .dst_temps = .{ .mem, .unused },113752 .dst_temps = .{ .mem, .unused },
110024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113753 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110025 .each = .{ .once = &.{113754 .each = .{ .once = &.{
110026 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113755 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110027 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },113756 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
110028 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113757 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110029 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },113758 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
110030 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },113759 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
110031 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113760 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
110032 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113761 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113762 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110034 } },113763 } },
110035 }, .{113764 }, .{
110036 .required_features = .{ .@"64bit", .avx, null, null },113765 .required_cc_abi = .sysv64,
113766 .required_features = .{ .avx, null, null, null },
110037 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },113767 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110038 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },113768 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110039 .patterns = &.{113769 .patterns = &.{
...@@ -110041,11 +113771,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110041,11 +113771,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110041 },113771 },
110042 .call_frame = .{ .alignment = .@"16" },113772 .call_frame = .{ .alignment = .@"16" },
110043 .extra_temps = .{113773 .extra_temps = .{
110044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113774 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110045 .{ .type = .u64, .kind = .{ .reg = .rdi } },113775 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110046 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110047 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },113776 .{ .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,
110049 .unused,113779 .unused,
110050 .unused,113780 .unused,
110051 .unused,113781 .unused,
...@@ -110056,16 +113786,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110056,16 +113786,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110056 .dst_temps = .{ .mem, .unused },113786 .dst_temps = .{ .mem, .unused },
110057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110058 .each = .{ .once = &.{113788 .each = .{ .once = &.{
110059 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113789 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110060 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },113790 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
110061 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },113791 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
110062 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },113792 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110063 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },113793 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
110064 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113794 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113795 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110066 } },113796 } },
110067 }, .{113797 }, .{
110068 .required_features = .{ .@"64bit", .sse4_1, null, null },113798 .required_cc_abi = .win64,
113799 .required_features = .{ .avx, null, null, null },
110069 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },113800 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110070 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },113801 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110071 .patterns = &.{113802 .patterns = &.{
...@@ -110073,11 +113804,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110073,11 +113804,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110073 },113804 },
110074 .call_frame = .{ .alignment = .@"16" },113805 .call_frame = .{ .alignment = .@"16" },
110075 .extra_temps = .{113806 .extra_temps = .{
110076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113807 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110077 .{ .type = .u64, .kind = .{ .reg = .rdi } },113808 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110078 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110079 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },113809 .{ .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,
110081 .unused,113812 .unused,
110082 .unused,113813 .unused,
110083 .unused,113814 .unused,
...@@ -110088,16 +113819,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110088,16 +113819,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110088 .dst_temps = .{ .mem, .unused },113819 .dst_temps = .{ .mem, .unused },
110089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113820 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110090 .each = .{ .once = &.{113821 .each = .{ .once = &.{
110091 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113822 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110092 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },113823 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
110093 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },113824 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110094 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },113825 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
110095 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },113826 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113827 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110097 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110098 } },113828 } },
110099 }, .{113829 }, .{
110100 .required_features = .{ .@"64bit", .sse2, null, null },113830 .required_cc_abi = .sysv64,
113831 .required_features = .{ .sse4_1, null, null, null },
110101 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },113832 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110102 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },113833 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110103 .patterns = &.{113834 .patterns = &.{
...@@ -110105,11 +113836,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110105,11 +113836,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110105 },113836 },
110106 .call_frame = .{ .alignment = .@"16" },113837 .call_frame = .{ .alignment = .@"16" },
110107 .extra_temps = .{113838 .extra_temps = .{
110108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113839 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110109 .{ .type = .u64, .kind = .{ .reg = .rdi } },113840 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110110 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110111 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },113841 .{ .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,
110113 .unused,113844 .unused,
110114 .unused,113845 .unused,
110115 .unused,113846 .unused,
...@@ -110120,17 +113851,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110120,17 +113851,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110120 .dst_temps = .{ .mem, .unused },113851 .dst_temps = .{ .mem, .unused },
110121 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110122 .each = .{ .once = &.{113853 .each = .{ .once = &.{
110123 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113854 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110124 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },113855 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
110125 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },113856 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
110126 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },113857 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110127 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },113858 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
110128 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113859 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110129 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113860 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110131 } },113861 } },
110132 }, .{113862 }, .{
110133 .required_features = .{ .@"64bit", .sse, null, null },113863 .required_cc_abi = .win64,
113864 .required_features = .{ .sse4_1, null, null, null },
110134 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },113865 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110135 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },113866 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110136 .patterns = &.{113867 .patterns = &.{
...@@ -110138,33 +113869,167 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110138,33 +113869,167 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110138 },113869 },
110139 .call_frame = .{ .alignment = .@"16" },113870 .call_frame = .{ .alignment = .@"16" },
110140 .extra_temps = .{113871 .extra_temps = .{
110141 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113872 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110142 .{ .type = .u64, .kind = .{ .reg = .rdi } },113873 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110143 .{ .type = .i64, .kind = .{ .reg = .rsi } },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 } } },
110144 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },113906 .{ .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 } } },
110146 .{ .type = .f32, .kind = .mem },113975 .{ .type = .f32, .kind = .mem },
110147 .unused,113976 .unused,
110148 .unused,113977 .unused,
110149 .unused,113978 .unused,
110150 .unused,113979 .unused,
110151 .unused,113980 .unused,
113981 .unused,
110152 },113982 },
110153 .dst_temps = .{ .mem, .unused },113983 .dst_temps = .{ .mem, .unused },
110154 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113984 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110155 .each = .{ .once = &.{113985 .each = .{ .once = &.{
110156 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },113986 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110157 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },113987 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
110158 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },113988 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
110159 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },113989 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110160 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },113990 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
110161 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },113991 .{ ._, ._, .mov, .tmp1d0, .mem(.tmp4d), ._, ._ },
110162 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },113992 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w0, ._, ._ },
110163 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },113993 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113994 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110165 } },113995 } },
110166 }, .{113996 }, .{
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 },
110168 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },114033 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110169 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },114034 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110170 .patterns = &.{114035 .patterns = &.{
...@@ -110172,11 +114037,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110172,11 +114037,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110172 },114037 },
110173 .call_frame = .{ .alignment = .@"16" },114038 .call_frame = .{ .alignment = .@"16" },
110174 .extra_temps = .{114039 .extra_temps = .{
110175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114040 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110176 .{ .type = .u64, .kind = .{ .reg = .rdi } },114041 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110177 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110178 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },114042 .{ .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,
110180 .unused,114045 .unused,
110181 .unused,114046 .unused,
110182 .unused,114047 .unused,
...@@ -110187,16 +114052,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110187,16 +114052,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110187 .dst_temps = .{ .mem, .unused },114052 .dst_temps = .{ .mem, .unused },
110188 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110189 .each = .{ .once = &.{114054 .each = .{ .once = &.{
110190 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114055 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110191 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },114056 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
110192 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },114057 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
110193 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },114058 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110194 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },114059 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
110195 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114060 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114061 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110197 } },114062 } },
110198 }, .{114063 }, .{
110199 .required_features = .{ .@"64bit", .sse4_1, null, null },114064 .required_cc_abi = .win64,
114065 .required_features = .{ .avx, null, null, null },
110200 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },114066 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110201 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },114067 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110202 .patterns = &.{114068 .patterns = &.{
...@@ -110204,11 +114070,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110204,11 +114070,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110204 },114070 },
110205 .call_frame = .{ .alignment = .@"16" },114071 .call_frame = .{ .alignment = .@"16" },
110206 .extra_temps = .{114072 .extra_temps = .{
110207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114073 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110208 .{ .type = .u64, .kind = .{ .reg = .rdi } },114074 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110209 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110210 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },114075 .{ .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,
110212 .unused,114078 .unused,
110213 .unused,114079 .unused,
110214 .unused,114080 .unused,
...@@ -110219,16 +114085,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110219,16 +114085,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110219 .dst_temps = .{ .mem, .unused },114085 .dst_temps = .{ .mem, .unused },
110220 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114086 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110221 .each = .{ .once = &.{114087 .each = .{ .once = &.{
110222 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114088 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110223 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },114089 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
110224 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },114090 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110225 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },114091 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
110226 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },114092 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110227 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114093 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110228 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110229 } },114094 } },
110230 }, .{114095 }, .{
110231 .required_features = .{ .@"64bit", .sse2, null, null },114096 .required_cc_abi = .sysv64,
114097 .required_features = .{ .sse4_1, null, null, null },
110232 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },114098 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110233 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },114099 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110234 .patterns = &.{114100 .patterns = &.{
...@@ -110236,11 +114102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110236,11 +114102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110236 },114102 },
110237 .call_frame = .{ .alignment = .@"16" },114103 .call_frame = .{ .alignment = .@"16" },
110238 .extra_temps = .{114104 .extra_temps = .{
110239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114105 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110240 .{ .type = .u64, .kind = .{ .reg = .rdi } },114106 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110241 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110242 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },114107 .{ .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,
110244 .unused,114110 .unused,
110245 .unused,114111 .unused,
110246 .unused,114112 .unused,
...@@ -110251,17 +114117,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110251,17 +114117,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110251 .dst_temps = .{ .mem, .unused },114117 .dst_temps = .{ .mem, .unused },
110252 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114118 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110253 .each = .{ .once = &.{114119 .each = .{ .once = &.{
110254 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114120 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110255 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },114121 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
110256 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },114122 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
110257 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },114123 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110258 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },114124 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
110259 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },114125 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110260 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114126 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110262 } },114127 } },
110263 }, .{114128 }, .{
110264 .required_features = .{ .@"64bit", .sse, null, null },114129 .required_cc_abi = .win64,
114130 .required_features = .{ .sse4_1, null, null, null },
110265 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },114131 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110266 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },114132 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110267 .patterns = &.{114133 .patterns = &.{
...@@ -110269,30 +114135,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110269,30 +114135,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110269 },114135 },
110270 .call_frame = .{ .alignment = .@"16" },114136 .call_frame = .{ .alignment = .@"16" },
110271 .extra_temps = .{114137 .extra_temps = .{
110272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114138 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110273 .{ .type = .u64, .kind = .{ .reg = .rdi } },114139 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110274 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110275 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },114140 .{ .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 } } },
110277 .{ .type = .f32, .kind = .mem },114241 .{ .type = .f32, .kind = .mem },
110278 .unused,114242 .unused,
110279 .unused,114243 .unused,
110280 .unused,114244 .unused,
110281 .unused,114245 .unused,
110282 .unused,114246 .unused,
114247 .unused,
110283 },114248 },
110284 .dst_temps = .{ .mem, .unused },114249 .dst_temps = .{ .mem, .unused },
110285 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114250 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110286 .each = .{ .once = &.{114251 .each = .{ .once = &.{
110287 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114252 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110288 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },114253 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
110289 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },114254 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
110290 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },114255 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110291 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },114256 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
110292 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },114257 .{ ._, ._, .mov, .tmp1d0, .mem(.tmp4d), ._, ._ },
110293 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },114258 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w0, ._, ._ },
110294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114259 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
110296 } },114295 } },
110297 }, .{114296 }, .{
110298 .required_features = .{ .@"64bit", .avx, null, null },114297 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -110304,11 +114303,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110304,11 +114303,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110304 .call_frame = .{ .alignment = .@"16" },114303 .call_frame = .{ .alignment = .@"16" },
110305 .extra_temps = .{114304 .extra_temps = .{
110306 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114305 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114306 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110308 .{ .type = .usize, .kind = .{ .reg = .rdi } },114307 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110309 .{ .type = .usize, .kind = .{ .reg = .rsi } },114308 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110310 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },114309 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110311 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114310 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110312 .unused,114311 .unused,
110313 .unused,114312 .unused,
110314 .unused,114313 .unused,
...@@ -110318,15 +114317,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110318,15 +114317,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110318 .dst_temps = .{ .mem, .unused },114317 .dst_temps = .{ .mem, .unused },
110319 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114318 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110320 .each = .{ .once = &.{114319 .each = .{ .once = &.{
110321 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114320 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110322 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114321 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110323 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114322 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110324 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114323 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110325 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114324 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110326 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },114325 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
110327 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114326 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110328 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114327 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114328 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110330 } },114329 } },
110331 }, .{114330 }, .{
110332 .required_features = .{ .@"64bit", .sse4_1, null, null },114331 .required_features = .{ .@"64bit", .sse4_1, null, null },
...@@ -110338,11 +114337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110338,11 +114337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110338 .call_frame = .{ .alignment = .@"16" },114337 .call_frame = .{ .alignment = .@"16" },
110339 .extra_temps = .{114338 .extra_temps = .{
110340 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114339 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114340 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110342 .{ .type = .usize, .kind = .{ .reg = .rdi } },114341 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110343 .{ .type = .usize, .kind = .{ .reg = .rsi } },114342 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110344 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },114343 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110345 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114344 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110346 .unused,114345 .unused,
110347 .unused,114346 .unused,
110348 .unused,114347 .unused,
...@@ -110352,15 +114351,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110352,15 +114351,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110352 .dst_temps = .{ .mem, .unused },114351 .dst_temps = .{ .mem, .unused },
110353 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110354 .each = .{ .once = &.{114353 .each = .{ .once = &.{
110355 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114354 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110356 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114355 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110357 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114356 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110358 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114357 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110359 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114358 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110360 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },114359 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
110361 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114360 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110362 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114361 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114362 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110364 } },114363 } },
110365 }, .{114364 }, .{
110366 .required_features = .{ .@"64bit", .sse2, null, null },114365 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -110372,11 +114371,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110372,11 +114371,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110372 .call_frame = .{ .alignment = .@"16" },114371 .call_frame = .{ .alignment = .@"16" },
110373 .extra_temps = .{114372 .extra_temps = .{
110374 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114373 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114374 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110376 .{ .type = .usize, .kind = .{ .reg = .rdi } },114375 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110377 .{ .type = .usize, .kind = .{ .reg = .rsi } },114376 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110378 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },114377 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110379 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114378 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110380 .unused,114379 .unused,
110381 .unused,114380 .unused,
110382 .unused,114381 .unused,
...@@ -110386,16 +114385,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110386,16 +114385,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110386 .dst_temps = .{ .mem, .unused },114385 .dst_temps = .{ .mem, .unused },
110387 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114386 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110388 .each = .{ .once = &.{114387 .each = .{ .once = &.{
110389 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114388 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110390 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114389 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110391 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114390 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110392 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114391 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110393 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114392 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110394 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },114393 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
110395 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },114394 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
110396 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114395 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110397 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114396 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110398 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114397 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110399 } },114398 } },
110400 }, .{114399 }, .{
110401 .required_features = .{ .@"64bit", .sse, null, null },114400 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -110407,11 +114406,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110407,11 +114406,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110407 .call_frame = .{ .alignment = .@"16" },114406 .call_frame = .{ .alignment = .@"16" },
110408 .extra_temps = .{114407 .extra_temps = .{
110409 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114408 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110411 .{ .type = .usize, .kind = .{ .reg = .rdi } },114410 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110412 .{ .type = .usize, .kind = .{ .reg = .rsi } },114411 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110413 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },114412 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110414 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114413 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110415 .{ .type = .f32, .kind = .mem },114414 .{ .type = .f32, .kind = .mem },
110416 .unused,114415 .unused,
110417 .unused,114416 .unused,
...@@ -110421,17 +114420,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110421,17 +114420,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110421 .dst_temps = .{ .mem, .unused },114420 .dst_temps = .{ .mem, .unused },
110422 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114421 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110423 .each = .{ .once = &.{114422 .each = .{ .once = &.{
110424 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114423 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110425 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114424 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110426 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114425 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110427 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114426 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110428 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114427 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110429 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },114428 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
110430 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },114429 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
110431 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },114430 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
110432 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114431 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110433 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114432 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110434 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114433 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110435 } },114434 } },
110436 }, .{114435 }, .{
110437 .required_features = .{ .@"64bit", .avx, null, null },114436 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -110443,11 +114442,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110443,11 +114442,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110443 .call_frame = .{ .alignment = .@"16" },114442 .call_frame = .{ .alignment = .@"16" },
110444 .extra_temps = .{114443 .extra_temps = .{
110445 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114444 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114445 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110447 .{ .type = .usize, .kind = .{ .reg = .rdi } },114446 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110448 .{ .type = .usize, .kind = .{ .reg = .rsi } },114447 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110449 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },114448 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110450 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114449 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110451 .unused,114450 .unused,
110452 .unused,114451 .unused,
110453 .unused,114452 .unused,
...@@ -110457,15 +114456,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110457,15 +114456,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110457 .dst_temps = .{ .mem, .unused },114456 .dst_temps = .{ .mem, .unused },
110458 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110459 .each = .{ .once = &.{114458 .each = .{ .once = &.{
110460 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114459 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110461 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114460 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110462 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114461 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110463 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114462 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110464 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114463 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110465 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },114464 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
110466 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114465 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110467 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114466 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110468 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114467 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110469 } },114468 } },
110470 }, .{114469 }, .{
110471 .required_features = .{ .@"64bit", .sse4_1, null, null },114470 .required_features = .{ .@"64bit", .sse4_1, null, null },
...@@ -110477,11 +114476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110477,11 +114476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110477 .call_frame = .{ .alignment = .@"16" },114476 .call_frame = .{ .alignment = .@"16" },
110478 .extra_temps = .{114477 .extra_temps = .{
110479 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114478 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110480 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114479 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110481 .{ .type = .usize, .kind = .{ .reg = .rdi } },114480 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110482 .{ .type = .usize, .kind = .{ .reg = .rsi } },114481 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110483 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },114482 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110484 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114483 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110485 .unused,114484 .unused,
110486 .unused,114485 .unused,
110487 .unused,114486 .unused,
...@@ -110491,15 +114490,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110491,15 +114490,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110491 .dst_temps = .{ .mem, .unused },114490 .dst_temps = .{ .mem, .unused },
110492 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114491 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110493 .each = .{ .once = &.{114492 .each = .{ .once = &.{
110494 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114493 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110495 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114494 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110496 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114495 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110497 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114496 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110498 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114497 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110499 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },114498 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
110500 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114499 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110501 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114500 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110502 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114501 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110503 } },114502 } },
110504 }, .{114503 }, .{
110505 .required_features = .{ .@"64bit", .sse2, null, null },114504 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -110511,11 +114510,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110511,11 +114510,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110511 .call_frame = .{ .alignment = .@"16" },114510 .call_frame = .{ .alignment = .@"16" },
110512 .extra_temps = .{114511 .extra_temps = .{
110513 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114512 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114513 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110515 .{ .type = .usize, .kind = .{ .reg = .rdi } },114514 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110516 .{ .type = .usize, .kind = .{ .reg = .rsi } },114515 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110517 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },114516 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110518 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114517 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110519 .unused,114518 .unused,
110520 .unused,114519 .unused,
110521 .unused,114520 .unused,
...@@ -110525,16 +114524,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110525,16 +114524,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110525 .dst_temps = .{ .mem, .unused },114524 .dst_temps = .{ .mem, .unused },
110526 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114525 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110527 .each = .{ .once = &.{114526 .each = .{ .once = &.{
110528 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114527 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110529 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114528 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110530 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114529 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110531 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114530 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110532 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114531 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110533 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },114532 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
110534 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },114533 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
110535 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114534 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110536 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114535 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114536 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110538 } },114537 } },
110539 }, .{114538 }, .{
110540 .required_features = .{ .@"64bit", .sse, null, null },114539 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -110546,11 +114545,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110546,11 +114545,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110546 .call_frame = .{ .alignment = .@"16" },114545 .call_frame = .{ .alignment = .@"16" },
110547 .extra_temps = .{114546 .extra_temps = .{
110548 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },114547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110550 .{ .type = .usize, .kind = .{ .reg = .rdi } },114549 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110551 .{ .type = .usize, .kind = .{ .reg = .rsi } },114550 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110552 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },114551 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },114552 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110554 .{ .type = .f32, .kind = .mem },114553 .{ .type = .f32, .kind = .mem },
110555 .unused,114554 .unused,
110556 .unused,114555 .unused,
...@@ -110560,17 +114559,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110560,17 +114559,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110560 .dst_temps = .{ .mem, .unused },114559 .dst_temps = .{ .mem, .unused },
110561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114560 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110562 .each = .{ .once = &.{114561 .each = .{ .once = &.{
110563 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },114562 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
110564 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },114563 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110565 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },114564 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110566 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },114565 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110567 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },114566 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110568 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },114567 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
110569 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },114568 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
110570 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },114569 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
110571 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },114570 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
110572 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },114571 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
110573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114572 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110574 } },114573 } },
110575 }, .{114574 }, .{
110576 .required_features = .{ .avx, null, null, null },114575 .required_features = .{ .avx, null, null, null },
...@@ -110965,11 +114964,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110965,11 +114964,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110965 .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },114964 .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
110966 } },114965 } },
110967 }, .{114966 }, .{
110968 .required_features = .{ .@"64bit", .sse, null, null },114967 .required_cc_abi = .sysv64,
114968 .required_features = .{ .sse, null, null, null },
110969 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },114969 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
110970 .dst_constraints = .{ .{ .float = .dword }, .any },114970 .dst_constraints = .{ .{ .float = .dword }, .any },
110971 .patterns = &.{114971 .patterns = &.{
110972 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },114972 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
110973 },114973 },
110974 .call_frame = .{ .alignment = .@"16" },114974 .call_frame = .{ .alignment = .@"16" },
110975 .extra_temps = .{114975 .extra_temps = .{
...@@ -110985,17 +114985,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110985,17 +114985,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110985 .unused,114985 .unused,
110986 .unused,114986 .unused,
110987 },114987 },
110988 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },114988 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
110989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110990 .each = .{ .once = &.{114990 .each = .{ .once = &.{
110991 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },114991 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
110992 } },114992 } },
110993 }, .{114993 }, .{
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 },
110995 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },115024 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
110996 .dst_constraints = .{ .{ .float = .dword }, .any },115025 .dst_constraints = .{ .{ .float = .dword }, .any },
110997 .patterns = &.{115026 .patterns = &.{
110998 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },115027 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
110999 },115028 },
111000 .call_frame = .{ .alignment = .@"16" },115029 .call_frame = .{ .alignment = .@"16" },
111001 .extra_temps = .{115030 .extra_temps = .{
...@@ -111011,11 +115040,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111011,11 +115040,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111011 .unused,115040 .unused,
111012 .unused,115041 .unused,
111013 },115042 },
111014 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },115043 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111015 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115044 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111016 .each = .{ .once = &.{115045 .each = .{ .once = &.{
111017 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },115046 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
111018 } },115047 } },
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 } },
111019 }, .{115076 }, .{
111020 .required_features = .{ .@"64bit", .sse, null, null },115077 .required_features = .{ .@"64bit", .sse, null, null },
111021 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },115078 .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 {...@@ -111025,8 +115082,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111025 },115082 },
111026 .call_frame = .{ .alignment = .@"16" },115083 .call_frame = .{ .alignment = .@"16" },
111027 .extra_temps = .{115084 .extra_temps = .{
111028 .{ .type = .usize, .kind = .{ .reg = .rdi } },115085 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111029 .{ .type = .usize, .kind = .{ .reg = .rsi } },115086 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111030 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },115087 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
111031 .unused,115088 .unused,
111032 .unused,115089 .unused,
...@@ -111037,7 +115094,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111037,7 +115094,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111037 .unused,115094 .unused,
111038 .unused,115095 .unused,
111039 },115096 },
111040 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },115097 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111042 .each = .{ .once = &.{115099 .each = .{ .once = &.{
111043 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115100 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -111053,8 +115110,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111053,8 +115110,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111053 },115110 },
111054 .call_frame = .{ .alignment = .@"16" },115111 .call_frame = .{ .alignment = .@"16" },
111055 .extra_temps = .{115112 .extra_temps = .{
111056 .{ .type = .usize, .kind = .{ .reg = .rdi } },115113 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111057 .{ .type = .usize, .kind = .{ .reg = .rsi } },115114 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111058 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },115115 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
111059 .unused,115116 .unused,
111060 .unused,115117 .unused,
...@@ -111065,7 +115122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111065,7 +115122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111065 .unused,115122 .unused,
111066 .unused,115123 .unused,
111067 },115124 },
111068 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },115125 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111069 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111070 .each = .{ .once = &.{115127 .each = .{ .once = &.{
111071 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115128 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -111158,7 +115215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111158,7 +115215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111158 .{ .src = .{ .to_mem, .none, .none } },115215 .{ .src = .{ .to_mem, .none, .none } },
111159 },115216 },
111160 .extra_temps = .{115217 .extra_temps = .{
111161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115218 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111162 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },115219 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111163 .unused,115220 .unused,
111164 .unused,115221 .unused,
...@@ -111173,12 +115230,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111173,12 +115230,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111173 .dst_temps = .{ .mem, .unused },115230 .dst_temps = .{ .mem, .unused },
111174 .clobbers = .{ .eflags = true },115231 .clobbers = .{ .eflags = true },
111175 .each = .{ .once = &.{115232 .each = .{ .once = &.{
111176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115233 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
111177 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115234 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
111178 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },115235 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111179 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },115236 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
111180 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115237 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
111181 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115238 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111182 } },115239 } },
111183 }, .{115240 }, .{
111184 .required_features = .{ .avx, null, null, null },115241 .required_features = .{ .avx, null, null, null },
...@@ -111188,7 +115245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111188,7 +115245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111188 .{ .src = .{ .to_mem, .none, .none } },115245 .{ .src = .{ .to_mem, .none, .none } },
111189 },115246 },
111190 .extra_temps = .{115247 .extra_temps = .{
111191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115248 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111192 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115249 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111193 .unused,115250 .unused,
111194 .unused,115251 .unused,
...@@ -111203,12 +115260,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111203,12 +115260,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111203 .dst_temps = .{ .mem, .unused },115260 .dst_temps = .{ .mem, .unused },
111204 .clobbers = .{ .eflags = true },115261 .clobbers = .{ .eflags = true },
111205 .each = .{ .once = &.{115262 .each = .{ .once = &.{
111206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115263 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
111207 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },115264 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111208 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115265 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111209 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115266 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
111210 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },115267 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
111211 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115268 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111212 } },115269 } },
111213 }, .{115270 }, .{
111214 .required_features = .{ .sse4_1, null, null, null },115271 .required_features = .{ .sse4_1, null, null, null },
...@@ -111218,7 +115275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111218,7 +115275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111218 .{ .src = .{ .to_mem, .none, .none } },115275 .{ .src = .{ .to_mem, .none, .none } },
111219 },115276 },
111220 .extra_temps = .{115277 .extra_temps = .{
111221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115278 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111222 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115279 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111223 .unused,115280 .unused,
111224 .unused,115281 .unused,
...@@ -111233,12 +115290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111233,12 +115290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111233 .dst_temps = .{ .mem, .unused },115290 .dst_temps = .{ .mem, .unused },
111234 .clobbers = .{ .eflags = true },115291 .clobbers = .{ .eflags = true },
111235 .each = .{ .once = &.{115292 .each = .{ .once = &.{
111236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115293 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
111237 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },115294 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111238 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115295 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111239 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115296 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
111240 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },115297 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
111241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115298 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111242 } },115299 } },
111243 }, .{115300 }, .{
111244 .required_features = .{ .avx2, null, null, null },115301 .required_features = .{ .avx2, null, null, null },
...@@ -111248,7 +115305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111248,7 +115305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111248 .{ .src = .{ .to_mem, .none, .none } },115305 .{ .src = .{ .to_mem, .none, .none } },
111249 },115306 },
111250 .extra_temps = .{115307 .extra_temps = .{
111251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115308 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111252 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },115309 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111253 .unused,115310 .unused,
111254 .unused,115311 .unused,
...@@ -111263,12 +115320,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111263,12 +115320,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111263 .dst_temps = .{ .mem, .unused },115320 .dst_temps = .{ .mem, .unused },
111264 .clobbers = .{ .eflags = true },115321 .clobbers = .{ .eflags = true },
111265 .each = .{ .once = &.{115322 .each = .{ .once = &.{
111266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115323 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
111267 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115324 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
111268 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },115325 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111269 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },115326 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
111270 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115327 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
111271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115328 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111272 } },115329 } },
111273 }, .{115330 }, .{
111274 .required_features = .{ .avx, null, null, null },115331 .required_features = .{ .avx, null, null, null },
...@@ -111278,7 +115335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111278,7 +115335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111278 .{ .src = .{ .to_mem, .none, .none } },115335 .{ .src = .{ .to_mem, .none, .none } },
111279 },115336 },
111280 .extra_temps = .{115337 .extra_temps = .{
111281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115338 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111282 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115339 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111283 .unused,115340 .unused,
111284 .unused,115341 .unused,
...@@ -111293,12 +115350,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111293,12 +115350,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111293 .dst_temps = .{ .mem, .unused },115350 .dst_temps = .{ .mem, .unused },
111294 .clobbers = .{ .eflags = true },115351 .clobbers = .{ .eflags = true },
111295 .each = .{ .once = &.{115352 .each = .{ .once = &.{
111296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115353 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
111297 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },115354 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111298 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115355 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111299 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115356 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
111300 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },115357 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
111301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115358 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111302 } },115359 } },
111303 }, .{115360 }, .{
111304 .required_features = .{ .sse4_1, null, null, null },115361 .required_features = .{ .sse4_1, null, null, null },
...@@ -111308,7 +115365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111308,7 +115365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111308 .{ .src = .{ .to_mem, .none, .none } },115365 .{ .src = .{ .to_mem, .none, .none } },
111309 },115366 },
111310 .extra_temps = .{115367 .extra_temps = .{
111311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111312 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115369 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111313 .unused,115370 .unused,
111314 .unused,115371 .unused,
...@@ -111323,12 +115380,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111323,12 +115380,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111323 .dst_temps = .{ .mem, .unused },115380 .dst_temps = .{ .mem, .unused },
111324 .clobbers = .{ .eflags = true },115381 .clobbers = .{ .eflags = true },
111325 .each = .{ .once = &.{115382 .each = .{ .once = &.{
111326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115383 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
111327 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },115384 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111328 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115385 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111329 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115386 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
111330 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },115387 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
111331 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115388 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111332 } },115389 } },
111333 }, .{115390 }, .{
111334 .required_features = .{ .avx, .slow_incdec, null, null },115391 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -111339,10 +115396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111339,10 +115396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111339 },115396 },
111340 .call_frame = .{ .alignment = .@"16" },115397 .call_frame = .{ .alignment = .@"16" },
111341 .extra_temps = .{115398 .extra_temps = .{
111342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115399 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111343 .{ .type = .i32, .kind = .{ .reg = .edi } },115400 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111344 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },115401 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111345 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115402 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111346 .unused,115403 .unused,
111347 .unused,115404 .unused,
111348 .unused,115405 .unused,
...@@ -111354,12 +115411,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111354,12 +115411,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111354 .dst_temps = .{ .mem, .unused },115411 .dst_temps = .{ .mem, .unused },
111355 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115412 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111356 .each = .{ .once = &.{115413 .each = .{ .once = &.{
111357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115414 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115415 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111359 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115416 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111360 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115417 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111361 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },115418 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
111362 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115419 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111363 } },115420 } },
111364 }, .{115421 }, .{
111365 .required_features = .{ .avx, null, null, null },115422 .required_features = .{ .avx, null, null, null },
...@@ -111370,10 +115427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111370,10 +115427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111370 },115427 },
111371 .call_frame = .{ .alignment = .@"16" },115428 .call_frame = .{ .alignment = .@"16" },
111372 .extra_temps = .{115429 .extra_temps = .{
111373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115430 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111374 .{ .type = .i32, .kind = .{ .reg = .edi } },115431 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111375 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },115432 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111376 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115433 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111377 .unused,115434 .unused,
111378 .unused,115435 .unused,
111379 .unused,115436 .unused,
...@@ -111385,12 +115442,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111385,12 +115442,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111385 .dst_temps = .{ .mem, .unused },115442 .dst_temps = .{ .mem, .unused },
111386 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111387 .each = .{ .once = &.{115444 .each = .{ .once = &.{
111388 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115445 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111389 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115446 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111390 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115447 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111391 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115448 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111392 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },115449 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
111393 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },115450 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111394 } },115451 } },
111395 }, .{115452 }, .{
111396 .required_features = .{ .sse, .slow_incdec, null, null },115453 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -111401,10 +115458,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111401,10 +115458,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111401 },115458 },
111402 .call_frame = .{ .alignment = .@"16" },115459 .call_frame = .{ .alignment = .@"16" },
111403 .extra_temps = .{115460 .extra_temps = .{
111404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115461 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111405 .{ .type = .i32, .kind = .{ .reg = .edi } },115462 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111406 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },115463 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111407 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115464 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111408 .unused,115465 .unused,
111409 .unused,115466 .unused,
111410 .unused,115467 .unused,
...@@ -111416,12 +115473,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111416,12 +115473,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111416 .dst_temps = .{ .mem, .unused },115473 .dst_temps = .{ .mem, .unused },
111417 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115474 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111418 .each = .{ .once = &.{115475 .each = .{ .once = &.{
111419 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115476 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111420 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115477 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111421 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115478 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111422 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115479 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111423 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },115480 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
111424 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115481 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111425 } },115482 } },
111426 }, .{115483 }, .{
111427 .required_features = .{ .sse, null, null, null },115484 .required_features = .{ .sse, null, null, null },
...@@ -111432,10 +115489,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111432,10 +115489,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111432 },115489 },
111433 .call_frame = .{ .alignment = .@"16" },115490 .call_frame = .{ .alignment = .@"16" },
111434 .extra_temps = .{115491 .extra_temps = .{
111435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115492 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111436 .{ .type = .i32, .kind = .{ .reg = .edi } },115493 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111437 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },115494 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111438 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115495 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111439 .unused,115496 .unused,
111440 .unused,115497 .unused,
111441 .unused,115498 .unused,
...@@ -111447,12 +115504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111447,12 +115504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111447 .dst_temps = .{ .mem, .unused },115504 .dst_temps = .{ .mem, .unused },
111448 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111449 .each = .{ .once = &.{115506 .each = .{ .once = &.{
111450 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115507 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111451 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115508 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111452 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115509 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111453 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115510 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111454 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },115511 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
111455 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },115512 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111456 } },115513 } },
111457 }, .{115514 }, .{
111458 .required_features = .{ .avx, .slow_incdec, null, null },115515 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -111463,10 +115520,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111463,10 +115520,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111463 },115520 },
111464 .call_frame = .{ .alignment = .@"16" },115521 .call_frame = .{ .alignment = .@"16" },
111465 .extra_temps = .{115522 .extra_temps = .{
111466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115523 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111467 .{ .type = .u32, .kind = .{ .reg = .edi } },115524 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111468 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },115525 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111469 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115526 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111470 .unused,115527 .unused,
111471 .unused,115528 .unused,
111472 .unused,115529 .unused,
...@@ -111478,12 +115535,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111478,12 +115535,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111478 .dst_temps = .{ .mem, .unused },115535 .dst_temps = .{ .mem, .unused },
111479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115536 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111480 .each = .{ .once = &.{115537 .each = .{ .once = &.{
111481 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115538 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111482 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115539 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111483 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115540 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111484 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115541 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111485 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },115542 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
111486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115543 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111487 } },115544 } },
111488 }, .{115545 }, .{
111489 .required_features = .{ .avx, null, null, null },115546 .required_features = .{ .avx, null, null, null },
...@@ -111494,10 +115551,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111494,10 +115551,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111494 },115551 },
111495 .call_frame = .{ .alignment = .@"16" },115552 .call_frame = .{ .alignment = .@"16" },
111496 .extra_temps = .{115553 .extra_temps = .{
111497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115554 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111498 .{ .type = .u32, .kind = .{ .reg = .edi } },115555 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111499 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },115556 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111500 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115557 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111501 .unused,115558 .unused,
111502 .unused,115559 .unused,
111503 .unused,115560 .unused,
...@@ -111509,12 +115566,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111509,12 +115566,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111509 .dst_temps = .{ .mem, .unused },115566 .dst_temps = .{ .mem, .unused },
111510 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111511 .each = .{ .once = &.{115568 .each = .{ .once = &.{
111512 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115569 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111513 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115570 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111514 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115571 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111515 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115572 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111516 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },115573 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
111517 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },115574 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111518 } },115575 } },
111519 }, .{115576 }, .{
111520 .required_features = .{ .sse, .slow_incdec, null, null },115577 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -111525,10 +115582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111525,10 +115582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111525 },115582 },
111526 .call_frame = .{ .alignment = .@"16" },115583 .call_frame = .{ .alignment = .@"16" },
111527 .extra_temps = .{115584 .extra_temps = .{
111528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115585 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111529 .{ .type = .u32, .kind = .{ .reg = .edi } },115586 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111530 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },115587 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111531 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115588 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111532 .unused,115589 .unused,
111533 .unused,115590 .unused,
111534 .unused,115591 .unused,
...@@ -111540,12 +115597,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111540,12 +115597,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111540 .dst_temps = .{ .mem, .unused },115597 .dst_temps = .{ .mem, .unused },
111541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111542 .each = .{ .once = &.{115599 .each = .{ .once = &.{
111543 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115600 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111544 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115601 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111545 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115602 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111546 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115603 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111547 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },115604 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
111548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115605 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111549 } },115606 } },
111550 }, .{115607 }, .{
111551 .required_features = .{ .sse, null, null, null },115608 .required_features = .{ .sse, null, null, null },
...@@ -111556,10 +115613,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111556,10 +115613,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111556 },115613 },
111557 .call_frame = .{ .alignment = .@"16" },115614 .call_frame = .{ .alignment = .@"16" },
111558 .extra_temps = .{115615 .extra_temps = .{
111559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115616 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111560 .{ .type = .u32, .kind = .{ .reg = .edi } },115617 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111561 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },115618 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111562 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115619 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111563 .unused,115620 .unused,
111564 .unused,115621 .unused,
111565 .unused,115622 .unused,
...@@ -111571,12 +115628,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111571,12 +115628,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111571 .dst_temps = .{ .mem, .unused },115628 .dst_temps = .{ .mem, .unused },
111572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115629 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111573 .each = .{ .once = &.{115630 .each = .{ .once = &.{
111574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115631 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
111575 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },115632 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111576 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115633 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111577 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115634 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
111578 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },115635 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
111579 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },115636 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111580 } },115637 } },
111581 }, .{115638 }, .{
111582 .required_features = .{ .avx, null, null, null },115639 .required_features = .{ .avx, null, null, null },
...@@ -111664,7 +115721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111664,7 +115721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111664 .{ .src = .{ .to_mem, .none, .none } },115721 .{ .src = .{ .to_mem, .none, .none } },
111665 },115722 },
111666 .extra_temps = .{115723 .extra_temps = .{
111667 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115724 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111668 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },115725 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111669 .unused,115726 .unused,
111670 .unused,115727 .unused,
...@@ -111679,12 +115736,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111679,12 +115736,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111679 .dst_temps = .{ .mem, .unused },115736 .dst_temps = .{ .mem, .unused },
111680 .clobbers = .{ .eflags = true },115737 .clobbers = .{ .eflags = true },
111681 .each = .{ .once = &.{115738 .each = .{ .once = &.{
111682 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115739 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
111683 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },115740 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
111684 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },115741 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111685 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },115742 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
111686 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },115743 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111687 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115744 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111688 } },115745 } },
111689 }, .{115746 }, .{
111690 .required_features = .{ .avx, null, null, null },115747 .required_features = .{ .avx, null, null, null },
...@@ -111694,7 +115751,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111694,7 +115751,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111694 .{ .src = .{ .to_mem, .none, .none } },115751 .{ .src = .{ .to_mem, .none, .none } },
111695 },115752 },
111696 .extra_temps = .{115753 .extra_temps = .{
111697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111698 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115755 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111699 .unused,115756 .unused,
111700 .unused,115757 .unused,
...@@ -111709,12 +115766,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111709,12 +115766,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111709 .dst_temps = .{ .mem, .unused },115766 .dst_temps = .{ .mem, .unused },
111710 .clobbers = .{ .eflags = true },115767 .clobbers = .{ .eflags = true },
111711 .each = .{ .once = &.{115768 .each = .{ .once = &.{
111712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115769 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
111713 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115770 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111714 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115771 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111715 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115772 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
111716 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115773 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
111717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115774 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111718 } },115775 } },
111719 }, .{115776 }, .{
111720 .required_features = .{ .sse4_1, null, null, null },115777 .required_features = .{ .sse4_1, null, null, null },
...@@ -111724,7 +115781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111724,7 +115781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111724 .{ .src = .{ .to_mem, .none, .none } },115781 .{ .src = .{ .to_mem, .none, .none } },
111725 },115782 },
111726 .extra_temps = .{115783 .extra_temps = .{
111727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111728 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115785 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111729 .unused,115786 .unused,
111730 .unused,115787 .unused,
...@@ -111739,12 +115796,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111739,12 +115796,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111739 .dst_temps = .{ .mem, .unused },115796 .dst_temps = .{ .mem, .unused },
111740 .clobbers = .{ .eflags = true },115797 .clobbers = .{ .eflags = true },
111741 .each = .{ .once = &.{115798 .each = .{ .once = &.{
111742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115799 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
111743 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115800 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111744 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115801 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111745 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115802 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
111746 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115803 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
111747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115804 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111748 } },115805 } },
111749 }, .{115806 }, .{
111750 .required_features = .{ .avx2, null, null, null },115807 .required_features = .{ .avx2, null, null, null },
...@@ -111754,7 +115811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111754,7 +115811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111754 .{ .src = .{ .to_mem, .none, .none } },115811 .{ .src = .{ .to_mem, .none, .none } },
111755 },115812 },
111756 .extra_temps = .{115813 .extra_temps = .{
111757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111758 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },115815 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111759 .unused,115816 .unused,
111760 .unused,115817 .unused,
...@@ -111769,12 +115826,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111769,12 +115826,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111769 .dst_temps = .{ .mem, .unused },115826 .dst_temps = .{ .mem, .unused },
111770 .clobbers = .{ .eflags = true },115827 .clobbers = .{ .eflags = true },
111771 .each = .{ .once = &.{115828 .each = .{ .once = &.{
111772 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115829 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
111773 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },115830 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
111774 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },115831 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111775 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },115832 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
111776 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },115833 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111777 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115834 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111778 } },115835 } },
111779 }, .{115836 }, .{
111780 .required_features = .{ .avx, null, null, null },115837 .required_features = .{ .avx, null, null, null },
...@@ -111784,7 +115841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111784,7 +115841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111784 .{ .src = .{ .to_mem, .none, .none } },115841 .{ .src = .{ .to_mem, .none, .none } },
111785 },115842 },
111786 .extra_temps = .{115843 .extra_temps = .{
111787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111788 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115845 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111789 .unused,115846 .unused,
111790 .unused,115847 .unused,
...@@ -111799,12 +115856,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111799,12 +115856,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111799 .dst_temps = .{ .mem, .unused },115856 .dst_temps = .{ .mem, .unused },
111800 .clobbers = .{ .eflags = true },115857 .clobbers = .{ .eflags = true },
111801 .each = .{ .once = &.{115858 .each = .{ .once = &.{
111802 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115859 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
111803 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115860 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111804 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115861 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111805 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115862 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
111806 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115863 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
111807 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115864 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111808 } },115865 } },
111809 }, .{115866 }, .{
111810 .required_features = .{ .sse4_1, null, null, null },115867 .required_features = .{ .sse4_1, null, null, null },
...@@ -111814,7 +115871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111814,7 +115871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111814 .{ .src = .{ .to_mem, .none, .none } },115871 .{ .src = .{ .to_mem, .none, .none } },
111815 },115872 },
111816 .extra_temps = .{115873 .extra_temps = .{
111817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115874 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111818 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },115875 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111819 .unused,115876 .unused,
111820 .unused,115877 .unused,
...@@ -111829,12 +115886,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111829,12 +115886,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111829 .dst_temps = .{ .mem, .unused },115886 .dst_temps = .{ .mem, .unused },
111830 .clobbers = .{ .eflags = true },115887 .clobbers = .{ .eflags = true },
111831 .each = .{ .once = &.{115888 .each = .{ .once = &.{
111832 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115889 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
111833 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115890 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111834 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },115891 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111835 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115892 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
111836 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115893 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
111837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115894 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111838 } },115895 } },
111839 }, .{115896 }, .{
111840 .required_features = .{ .avx, null, null, null },115897 .required_features = .{ .avx, null, null, null },
...@@ -111845,10 +115902,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111845,10 +115902,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111845 },115902 },
111846 .call_frame = .{ .alignment = .@"16" },115903 .call_frame = .{ .alignment = .@"16" },
111847 .extra_temps = .{115904 .extra_temps = .{
111848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115905 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111849 .{ .type = .i32, .kind = .{ .reg = .edi } },115906 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111850 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },115907 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111851 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115908 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111852 .unused,115909 .unused,
111853 .unused,115910 .unused,
111854 .unused,115911 .unused,
...@@ -111860,12 +115917,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111860,12 +115917,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111860 .dst_temps = .{ .mem, .unused },115917 .dst_temps = .{ .mem, .unused },
111861 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115918 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111862 .each = .{ .once = &.{115919 .each = .{ .once = &.{
111863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115920 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
111864 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },115921 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111865 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115922 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111866 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115923 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
111867 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },115924 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
111868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115925 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111869 } },115926 } },
111870 }, .{115927 }, .{
111871 .required_features = .{ .sse, null, null, null },115928 .required_features = .{ .sse, null, null, null },
...@@ -111876,10 +115933,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111876,10 +115933,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111876 },115933 },
111877 .call_frame = .{ .alignment = .@"16" },115934 .call_frame = .{ .alignment = .@"16" },
111878 .extra_temps = .{115935 .extra_temps = .{
111879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111880 .{ .type = .i32, .kind = .{ .reg = .edi } },115937 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111881 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },115938 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111882 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115939 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111883 .unused,115940 .unused,
111884 .unused,115941 .unused,
111885 .unused,115942 .unused,
...@@ -111891,12 +115948,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111891,12 +115948,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111891 .dst_temps = .{ .mem, .unused },115948 .dst_temps = .{ .mem, .unused },
111892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115949 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111893 .each = .{ .once = &.{115950 .each = .{ .once = &.{
111894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115951 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
111895 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },115952 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111896 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115953 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111897 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115954 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
111898 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },115955 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
111899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115956 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111900 } },115957 } },
111901 }, .{115958 }, .{
111902 .required_features = .{ .avx, null, null, null },115959 .required_features = .{ .avx, null, null, null },
...@@ -111907,10 +115964,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111907,10 +115964,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111907 },115964 },
111908 .call_frame = .{ .alignment = .@"16" },115965 .call_frame = .{ .alignment = .@"16" },
111909 .extra_temps = .{115966 .extra_temps = .{
111910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115967 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111911 .{ .type = .u32, .kind = .{ .reg = .edi } },115968 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111912 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },115969 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111913 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },115970 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111914 .unused,115971 .unused,
111915 .unused,115972 .unused,
111916 .unused,115973 .unused,
...@@ -111922,12 +115979,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111922,12 +115979,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111922 .dst_temps = .{ .mem, .unused },115979 .dst_temps = .{ .mem, .unused },
111923 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115980 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111924 .each = .{ .once = &.{115981 .each = .{ .once = &.{
111925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115982 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
111926 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },115983 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111927 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115984 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111928 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115985 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
111929 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },115986 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
111930 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115987 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111931 } },115988 } },
111932 }, .{115989 }, .{
111933 .required_features = .{ .sse, null, null, null },115990 .required_features = .{ .sse, null, null, null },
...@@ -111938,10 +115995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111938,10 +115995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111938 },115995 },
111939 .call_frame = .{ .alignment = .@"16" },115996 .call_frame = .{ .alignment = .@"16" },
111940 .extra_temps = .{115997 .extra_temps = .{
111941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115998 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111942 .{ .type = .u32, .kind = .{ .reg = .edi } },115999 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111943 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },116000 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111944 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116001 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111945 .unused,116002 .unused,
111946 .unused,116003 .unused,
111947 .unused,116004 .unused,
...@@ -111953,12 +116010,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111953,12 +116010,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111953 .dst_temps = .{ .mem, .unused },116010 .dst_temps = .{ .mem, .unused },
111954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116011 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111955 .each = .{ .once = &.{116012 .each = .{ .once = &.{
111956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116013 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
111957 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },116014 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111958 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116015 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111959 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116016 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
111960 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },116017 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
111961 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116018 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111962 } },116019 } },
111963 }, .{116020 }, .{
111964 .required_features = .{ .avx, null, null, null },116021 .required_features = .{ .avx, null, null, null },
...@@ -112004,7 +116061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112004,7 +116061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112004 .{ .src = .{ .to_mem, .none, .none } },116061 .{ .src = .{ .to_mem, .none, .none } },
112005 },116062 },
112006 .extra_temps = .{116063 .extra_temps = .{
112007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116064 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112008 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },116065 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
112009 .unused,116066 .unused,
112010 .unused,116067 .unused,
...@@ -112019,11 +116076,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112019,11 +116076,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112019 .dst_temps = .{ .mem, .unused },116076 .dst_temps = .{ .mem, .unused },
112020 .clobbers = .{ .eflags = true },116077 .clobbers = .{ .eflags = true },
112021 .each = .{ .once = &.{116078 .each = .{ .once = &.{
112022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116079 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
112023 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },116080 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
112024 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },116081 .{ ._, .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
112025 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },116082 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
112026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116083 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112027 } },116084 } },
112028 }, .{116085 }, .{
112029 .required_features = .{ .avx, null, null, null },116086 .required_features = .{ .avx, null, null, null },
...@@ -112033,7 +116090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112033,7 +116090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112033 .{ .src = .{ .to_mem, .none, .none } },116090 .{ .src = .{ .to_mem, .none, .none } },
112034 },116091 },
112035 .extra_temps = .{116092 .extra_temps = .{
112036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116093 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112037 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },116094 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112038 .unused,116095 .unused,
112039 .unused,116096 .unused,
...@@ -112048,11 +116105,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112048,11 +116105,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112048 .dst_temps = .{ .mem, .unused },116105 .dst_temps = .{ .mem, .unused },
112049 .clobbers = .{ .eflags = true },116106 .clobbers = .{ .eflags = true },
112050 .each = .{ .once = &.{116107 .each = .{ .once = &.{
112051 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116108 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
112052 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },116109 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
112053 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },116110 .{ ._, .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
112054 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },116111 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
112055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116112 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112056 } },116113 } },
112057 }, .{116114 }, .{
112058 .required_features = .{ .sse2, null, null, null },116115 .required_features = .{ .sse2, null, null, null },
...@@ -112062,7 +116119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112062,7 +116119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112062 .{ .src = .{ .to_mem, .none, .none } },116119 .{ .src = .{ .to_mem, .none, .none } },
112063 },116120 },
112064 .extra_temps = .{116121 .extra_temps = .{
112065 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112066 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },116123 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112067 .unused,116124 .unused,
112068 .unused,116125 .unused,
...@@ -112077,11 +116134,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112077,11 +116134,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112077 .dst_temps = .{ .mem, .unused },116134 .dst_temps = .{ .mem, .unused },
112078 .clobbers = .{ .eflags = true },116135 .clobbers = .{ .eflags = true },
112079 .each = .{ .once = &.{116136 .each = .{ .once = &.{
112080 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116137 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
112081 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },116138 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
112082 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },116139 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
112083 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },116140 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
112084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116141 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112085 } },116142 } },
112086 }, .{116143 }, .{
112087 .required_features = .{ .sse, null, null, null },116144 .required_features = .{ .sse, null, null, null },
...@@ -112091,7 +116148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112091,7 +116148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112091 .{ .src = .{ .to_mem, .none, .none } },116148 .{ .src = .{ .to_mem, .none, .none } },
112092 },116149 },
112093 .extra_temps = .{116150 .extra_temps = .{
112094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112095 .{ .type = .f32, .kind = .{ .rc = .sse } },116152 .{ .type = .f32, .kind = .{ .rc = .sse } },
112096 .unused,116153 .unused,
112097 .unused,116154 .unused,
...@@ -112106,11 +116163,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112106,11 +116163,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112106 .dst_temps = .{ .mem, .unused },116163 .dst_temps = .{ .mem, .unused },
112107 .clobbers = .{ .eflags = true },116164 .clobbers = .{ .eflags = true },
112108 .each = .{ .once = &.{116165 .each = .{ .once = &.{
112109 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116166 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112110 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },116167 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
112111 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },116168 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
112112 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116169 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112113 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116170 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112114 } },116171 } },
112115 }, .{116172 }, .{
112116 .required_features = .{ .avx, null, null, null },116173 .required_features = .{ .avx, null, null, null },
...@@ -112121,10 +116178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112121,10 +116178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112121 },116178 },
112122 .call_frame = .{ .alignment = .@"16" },116179 .call_frame = .{ .alignment = .@"16" },
112123 .extra_temps = .{116180 .extra_temps = .{
112124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112125 .{ .type = .i32, .kind = .{ .reg = .edi } },116182 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112126 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },116183 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112127 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116184 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112128 .unused,116185 .unused,
112129 .unused,116186 .unused,
112130 .unused,116187 .unused,
...@@ -112136,12 +116193,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112136,12 +116193,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112136 .dst_temps = .{ .mem, .unused },116193 .dst_temps = .{ .mem, .unused },
112137 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116194 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112138 .each = .{ .once = &.{116195 .each = .{ .once = &.{
112139 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116196 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112140 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },116197 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112141 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116198 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112142 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116199 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112143 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116200 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116201 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112145 } },116202 } },
112146 }, .{116203 }, .{
112147 .required_features = .{ .sse, null, null, null },116204 .required_features = .{ .sse, null, null, null },
...@@ -112152,10 +116209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112152,10 +116209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112152 },116209 },
112153 .call_frame = .{ .alignment = .@"16" },116210 .call_frame = .{ .alignment = .@"16" },
112154 .extra_temps = .{116211 .extra_temps = .{
112155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112156 .{ .type = .i32, .kind = .{ .reg = .edi } },116213 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112157 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },116214 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112158 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116215 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112159 .unused,116216 .unused,
112160 .unused,116217 .unused,
112161 .unused,116218 .unused,
...@@ -112167,12 +116224,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112167,12 +116224,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112167 .dst_temps = .{ .mem, .unused },116224 .dst_temps = .{ .mem, .unused },
112168 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112169 .each = .{ .once = &.{116226 .each = .{ .once = &.{
112170 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116227 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112171 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },116228 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112172 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116229 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112173 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116230 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112174 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116231 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116232 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112176 } },116233 } },
112177 }, .{116234 }, .{
112178 .required_features = .{ .avx, null, null, null },116235 .required_features = .{ .avx, null, null, null },
...@@ -112183,10 +116240,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112183,10 +116240,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112183 },116240 },
112184 .call_frame = .{ .alignment = .@"16" },116241 .call_frame = .{ .alignment = .@"16" },
112185 .extra_temps = .{116242 .extra_temps = .{
112186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116243 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112187 .{ .type = .u32, .kind = .{ .reg = .edi } },116244 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112188 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },116245 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112189 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116246 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112190 .unused,116247 .unused,
112191 .unused,116248 .unused,
112192 .unused,116249 .unused,
...@@ -112198,12 +116255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112198,12 +116255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112198 .dst_temps = .{ .mem, .unused },116255 .dst_temps = .{ .mem, .unused },
112199 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116256 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112200 .each = .{ .once = &.{116257 .each = .{ .once = &.{
112201 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116258 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112202 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },116259 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112203 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116260 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112204 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116261 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112205 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116262 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116263 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112207 } },116264 } },
112208 }, .{116265 }, .{
112209 .required_features = .{ .sse, null, null, null },116266 .required_features = .{ .sse, null, null, null },
...@@ -112214,10 +116271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112214,10 +116271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112214 },116271 },
112215 .call_frame = .{ .alignment = .@"16" },116272 .call_frame = .{ .alignment = .@"16" },
112216 .extra_temps = .{116273 .extra_temps = .{
112217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116274 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112218 .{ .type = .u32, .kind = .{ .reg = .edi } },116275 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112219 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },116276 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112220 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116277 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112221 .unused,116278 .unused,
112222 .unused,116279 .unused,
112223 .unused,116280 .unused,
...@@ -112229,12 +116286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112229,12 +116286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112229 .dst_temps = .{ .mem, .unused },116286 .dst_temps = .{ .mem, .unused },
112230 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116287 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112231 .each = .{ .once = &.{116288 .each = .{ .once = &.{
112232 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116289 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112233 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },116290 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112234 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116291 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112235 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116292 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112236 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116293 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116294 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112238 } },116295 } },
112239 }, .{116296 }, .{
112240 .required_features = .{ .@"64bit", .avx, null, null },116297 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -112244,7 +116301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112244,7 +116301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112244 .{ .src = .{ .to_mem, .none, .none } },116301 .{ .src = .{ .to_mem, .none, .none } },
112245 },116302 },
112246 .extra_temps = .{116303 .extra_temps = .{
112247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116304 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112248 .{ .type = .f32, .kind = .{ .rc = .sse } },116305 .{ .type = .f32, .kind = .{ .rc = .sse } },
112249 .unused,116306 .unused,
112250 .unused,116307 .unused,
...@@ -112259,12 +116316,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112259,12 +116316,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112259 .dst_temps = .{ .mem, .unused },116316 .dst_temps = .{ .mem, .unused },
112260 .clobbers = .{ .eflags = true },116317 .clobbers = .{ .eflags = true },
112261 .each = .{ .once = &.{116318 .each = .{ .once = &.{
112262 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116319 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112263 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },116320 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112264 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._ },116321 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._ },
112265 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },116322 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
112266 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116323 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112267 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112268 } },116325 } },
112269 }, .{116326 }, .{
112270 .required_features = .{ .@"64bit", .sse, null, null },116327 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -112274,7 +116331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112274,7 +116331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112274 .{ .src = .{ .to_mem, .none, .none } },116331 .{ .src = .{ .to_mem, .none, .none } },
112275 },116332 },
112276 .extra_temps = .{116333 .extra_temps = .{
112277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116334 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112278 .{ .type = .f32, .kind = .{ .rc = .sse } },116335 .{ .type = .f32, .kind = .{ .rc = .sse } },
112279 .unused,116336 .unused,
112280 .unused,116337 .unused,
...@@ -112289,12 +116346,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112289,12 +116346,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112289 .dst_temps = .{ .mem, .unused },116346 .dst_temps = .{ .mem, .unused },
112290 .clobbers = .{ .eflags = true },116347 .clobbers = .{ .eflags = true },
112291 .each = .{ .once = &.{116348 .each = .{ .once = &.{
112292 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116349 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112293 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },116350 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
112294 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },116351 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112295 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },116352 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
112296 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116353 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116354 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112298 } },116355 } },
112299 }, .{116356 }, .{
112300 .required_features = .{ .@"64bit", .avx, null, null },116357 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -112305,10 +116362,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112305,10 +116362,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112305 },116362 },
112306 .call_frame = .{ .alignment = .@"16" },116363 .call_frame = .{ .alignment = .@"16" },
112307 .extra_temps = .{116364 .extra_temps = .{
112308 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116365 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112309 .{ .type = .i64, .kind = .{ .reg = .rdi } },116366 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112310 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },116367 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112311 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116368 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112312 .unused,116369 .unused,
112313 .unused,116370 .unused,
112314 .unused,116371 .unused,
...@@ -112320,12 +116377,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112320,12 +116377,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112320 .dst_temps = .{ .mem, .unused },116377 .dst_temps = .{ .mem, .unused },
112321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116378 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112322 .each = .{ .once = &.{116379 .each = .{ .once = &.{
112323 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116380 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112324 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },116381 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112325 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116382 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112326 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116383 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112327 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116384 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116385 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112329 } },116386 } },
112330 }, .{116387 }, .{
112331 .required_features = .{ .@"64bit", .sse, null, null },116388 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -112336,10 +116393,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112336,10 +116393,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112336 },116393 },
112337 .call_frame = .{ .alignment = .@"16" },116394 .call_frame = .{ .alignment = .@"16" },
112338 .extra_temps = .{116395 .extra_temps = .{
112339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116396 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112340 .{ .type = .i64, .kind = .{ .reg = .rdi } },116397 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112341 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },116398 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112342 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116399 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112343 .unused,116400 .unused,
112344 .unused,116401 .unused,
112345 .unused,116402 .unused,
...@@ -112351,12 +116408,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112351,12 +116408,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112351 .dst_temps = .{ .mem, .unused },116408 .dst_temps = .{ .mem, .unused },
112352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112353 .each = .{ .once = &.{116410 .each = .{ .once = &.{
112354 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116411 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112355 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },116412 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112356 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116413 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112357 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116414 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112358 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116415 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116416 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112360 } },116417 } },
112361 }, .{116418 }, .{
112362 .required_features = .{ .@"64bit", .avx, null, null },116419 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -112367,10 +116424,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112367,10 +116424,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112367 },116424 },
112368 .call_frame = .{ .alignment = .@"16" },116425 .call_frame = .{ .alignment = .@"16" },
112369 .extra_temps = .{116426 .extra_temps = .{
112370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112371 .{ .type = .u64, .kind = .{ .reg = .rdi } },116428 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112372 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },116429 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112373 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116430 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112374 .unused,116431 .unused,
112375 .unused,116432 .unused,
112376 .unused,116433 .unused,
...@@ -112382,12 +116439,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112382,12 +116439,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112382 .dst_temps = .{ .mem, .unused },116439 .dst_temps = .{ .mem, .unused },
112383 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112384 .each = .{ .once = &.{116441 .each = .{ .once = &.{
112385 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116442 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112386 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },116443 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112387 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112388 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116445 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112389 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116446 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116447 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112391 } },116448 } },
112392 }, .{116449 }, .{
112393 .required_features = .{ .@"64bit", .sse, null, null },116450 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -112398,10 +116455,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112398,10 +116455,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112398 },116455 },
112399 .call_frame = .{ .alignment = .@"16" },116456 .call_frame = .{ .alignment = .@"16" },
112400 .extra_temps = .{116457 .extra_temps = .{
112401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116458 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112402 .{ .type = .u64, .kind = .{ .reg = .rdi } },116459 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112403 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },116460 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112404 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116461 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112405 .unused,116462 .unused,
112406 .unused,116463 .unused,
112407 .unused,116464 .unused,
...@@ -112413,15 +116470,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112413,15 +116470,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112413 .dst_temps = .{ .mem, .unused },116470 .dst_temps = .{ .mem, .unused },
112414 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116471 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112415 .each = .{ .once = &.{116472 .each = .{ .once = &.{
112416 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116473 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112417 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },116474 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112418 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116475 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112419 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },116476 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112420 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116477 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112421 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116478 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112422 } },116479 } },
112423 }, .{116480 }, .{
112424 .required_features = .{ .@"64bit", .avx, null, null },116481 .required_cc_abi = .sysv64,
116482 .required_features = .{ .avx, null, null, null },
112425 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },116483 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112426 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },116484 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112427 .patterns = &.{116485 .patterns = &.{
...@@ -112429,11 +116487,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112429,11 +116487,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112429 },116487 },
112430 .call_frame = .{ .alignment = .@"16" },116488 .call_frame = .{ .alignment = .@"16" },
112431 .extra_temps = .{116489 .extra_temps = .{
112432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116490 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112433 .{ .type = .u64, .kind = .{ .reg = .rdi } },116491 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112434 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112435 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },116492 .{ .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,
112437 .unused,116495 .unused,
112438 .unused,116496 .unused,
112439 .unused,116497 .unused,
...@@ -112444,16 +116502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112444,16 +116502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112444 .dst_temps = .{ .mem, .unused },116502 .dst_temps = .{ .mem, .unused },
112445 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116503 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112446 .each = .{ .once = &.{116504 .each = .{ .once = &.{
112447 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116505 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112448 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },116506 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
112449 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },116507 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"4", .tmp0, 8), ._, ._ },
112450 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112451 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },116509 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112452 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116510 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112453 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116511 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112454 } },116512 } },
112455 }, .{116513 }, .{
112456 .required_features = .{ .@"64bit", .sse, null, null },116514 .required_cc_abi = .win64,
116515 .required_features = .{ .avx, null, null, null },
112457 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },116516 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112458 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },116517 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112459 .patterns = &.{116518 .patterns = &.{
...@@ -112461,11 +116520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112461,11 +116520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112461 },116520 },
112462 .call_frame = .{ .alignment = .@"16" },116521 .call_frame = .{ .alignment = .@"16" },
112463 .extra_temps = .{116522 .extra_temps = .{
112464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116523 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112465 .{ .type = .u64, .kind = .{ .reg = .rdi } },116524 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112466 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112467 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },116525 .{ .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,
112469 .unused,116528 .unused,
112470 .unused,116529 .unused,
112471 .unused,116530 .unused,
...@@ -112476,16 +116535,81 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112476,16 +116535,81 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112476 .dst_temps = .{ .mem, .unused },116535 .dst_temps = .{ .mem, .unused },
112477 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116536 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112478 .each = .{ .once = &.{116537 .each = .{ .once = &.{
112479 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116538 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112480 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },116539 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"4", .tmp0), ._, ._ },
112481 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },116540 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112482 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116541 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112483 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },116542 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112484 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116543 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112486 } },116544 } },
112487 }, .{116545 }, .{
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 },
112489 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },116613 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },116614 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112491 .patterns = &.{116615 .patterns = &.{
...@@ -112493,11 +116617,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112493,11 +116617,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112493 },116617 },
112494 .call_frame = .{ .alignment = .@"16" },116618 .call_frame = .{ .alignment = .@"16" },
112495 .extra_temps = .{116619 .extra_temps = .{
112496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116620 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112497 .{ .type = .u64, .kind = .{ .reg = .rdi } },116621 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112498 .{ .type = .u64, .kind = .{ .reg = .rsi } },
112499 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },116622 .{ .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,
112501 .unused,116625 .unused,
112502 .unused,116626 .unused,
112503 .unused,116627 .unused,
...@@ -112508,16 +116632,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112508,16 +116632,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112508 .dst_temps = .{ .mem, .unused },116632 .dst_temps = .{ .mem, .unused },
112509 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112510 .each = .{ .once = &.{116634 .each = .{ .once = &.{
112511 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116635 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112512 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },116636 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
112513 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },116637 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"4", .tmp0, 8), ._, ._ },
112514 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116638 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112515 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },116639 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112516 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116640 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112517 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116641 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112518 } },116642 } },
112519 }, .{116643 }, .{
112520 .required_features = .{ .@"64bit", .sse, null, null },116644 .required_cc_abi = .win64,
116645 .required_features = .{ .avx, null, null, null },
112521 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },116646 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112522 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },116647 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112523 .patterns = &.{116648 .patterns = &.{
...@@ -112525,11 +116650,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112525,11 +116650,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112525 },116650 },
112526 .call_frame = .{ .alignment = .@"16" },116651 .call_frame = .{ .alignment = .@"16" },
112527 .extra_temps = .{116652 .extra_temps = .{
112528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116653 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112529 .{ .type = .u64, .kind = .{ .reg = .rdi } },116654 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112530 .{ .type = .u64, .kind = .{ .reg = .rsi } },
112531 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },116655 .{ .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,
112533 .unused,116658 .unused,
112534 .unused,116659 .unused,
112535 .unused,116660 .unused,
...@@ -112540,13 +116665,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112540,13 +116665,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112540 .dst_temps = .{ .mem, .unused },116665 .dst_temps = .{ .mem, .unused },
112541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116666 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112542 .each = .{ .once = &.{116667 .each = .{ .once = &.{
112543 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116668 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112544 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },116669 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"4", .tmp0), ._, ._ },
112545 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },116670 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112546 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116671 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
112547 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },116672 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112548 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116673 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112549 .{ ._, ._nc, .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", ._, ._, ._ },
112550 } },116739 } },
112551 }, .{116740 }, .{
112552 .required_features = .{ .@"64bit", .avx, null, null },116741 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -112558,11 +116747,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112558,11 +116747,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112558 .call_frame = .{ .alignment = .@"16" },116747 .call_frame = .{ .alignment = .@"16" },
112559 .extra_temps = .{116748 .extra_temps = .{
112560 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116749 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112562 .{ .type = .usize, .kind = .{ .reg = .rdi } },116751 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112563 .{ .type = .usize, .kind = .{ .reg = .rsi } },116752 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112564 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },116753 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112565 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116754 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112566 .unused,116755 .unused,
112567 .unused,116756 .unused,
112568 .unused,116757 .unused,
...@@ -112572,15 +116761,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112572,15 +116761,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112572 .dst_temps = .{ .mem, .unused },116761 .dst_temps = .{ .mem, .unused },
112573 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116762 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112574 .each = .{ .once = &.{116763 .each = .{ .once = &.{
112575 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },116764 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
112576 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116765 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112577 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },116766 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112578 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },116767 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112579 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },116768 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112580 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },116769 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
112581 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },116770 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
112582 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },116771 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
112583 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116772 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112584 } },116773 } },
112585 }, .{116774 }, .{
112586 .required_features = .{ .@"64bit", .sse, null, null },116775 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -112592,11 +116781,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112592,11 +116781,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112592 .call_frame = .{ .alignment = .@"16" },116781 .call_frame = .{ .alignment = .@"16" },
112593 .extra_temps = .{116782 .extra_temps = .{
112594 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116783 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112596 .{ .type = .usize, .kind = .{ .reg = .rdi } },116785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112597 .{ .type = .usize, .kind = .{ .reg = .rsi } },116786 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112598 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },116787 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112599 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116788 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112600 .unused,116789 .unused,
112601 .unused,116790 .unused,
112602 .unused,116791 .unused,
...@@ -112606,15 +116795,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112606,15 +116795,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112606 .dst_temps = .{ .mem, .unused },116795 .dst_temps = .{ .mem, .unused },
112607 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112608 .each = .{ .once = &.{116797 .each = .{ .once = &.{
112609 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },116798 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
112610 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116799 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112611 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },116800 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112612 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },116801 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112613 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },116802 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112614 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },116803 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
112615 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },116804 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
112616 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },116805 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
112617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116806 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112618 } },116807 } },
112619 }, .{116808 }, .{
112620 .required_features = .{ .@"64bit", .avx, null, null },116809 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -112626,11 +116815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112626,11 +116815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112626 .call_frame = .{ .alignment = .@"16" },116815 .call_frame = .{ .alignment = .@"16" },
112627 .extra_temps = .{116816 .extra_temps = .{
112628 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116817 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116818 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112630 .{ .type = .usize, .kind = .{ .reg = .rdi } },116819 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112631 .{ .type = .usize, .kind = .{ .reg = .rsi } },116820 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112632 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },116821 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112633 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116822 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112634 .unused,116823 .unused,
112635 .unused,116824 .unused,
112636 .unused,116825 .unused,
...@@ -112640,15 +116829,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112640,15 +116829,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112640 .dst_temps = .{ .mem, .unused },116829 .dst_temps = .{ .mem, .unused },
112641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112642 .each = .{ .once = &.{116831 .each = .{ .once = &.{
112643 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },116832 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
112644 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116833 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112645 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },116834 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112646 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },116835 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112647 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },116836 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112648 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },116837 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
112649 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },116838 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
112650 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },116839 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
112651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116840 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112652 } },116841 } },
112653 }, .{116842 }, .{
112654 .required_features = .{ .@"64bit", .sse, null, null },116843 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -112660,11 +116849,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112660,11 +116849,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112660 .call_frame = .{ .alignment = .@"16" },116849 .call_frame = .{ .alignment = .@"16" },
112661 .extra_temps = .{116850 .extra_temps = .{
112662 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116851 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116852 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112664 .{ .type = .usize, .kind = .{ .reg = .rdi } },116853 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112665 .{ .type = .usize, .kind = .{ .reg = .rsi } },116854 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112666 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },116855 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112667 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },116856 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112668 .unused,116857 .unused,
112669 .unused,116858 .unused,
112670 .unused,116859 .unused,
...@@ -112674,15 +116863,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112674,15 +116863,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112674 .dst_temps = .{ .mem, .unused },116863 .dst_temps = .{ .mem, .unused },
112675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116864 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112676 .each = .{ .once = &.{116865 .each = .{ .once = &.{
112677 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },116866 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
112678 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },116867 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112679 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },116868 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112680 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },116869 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112681 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },116870 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112682 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },116871 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
112683 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },116872 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
112684 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },116873 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
112685 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112686 } },116875 } },
112687 }, .{116876 }, .{
112688 .required_features = .{ .avx, null, null, null },116877 .required_features = .{ .avx, null, null, null },
...@@ -113295,11 +117484,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113295,11 +117484,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113295 .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ },117484 .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ },
113296 } },117485 } },
113297 }, .{117486 }, .{
113298 .required_features = .{ .@"64bit", .sse, null, null },117487 .required_cc_abi = .sysv64,
117488 .required_features = .{ .sse, null, null, null },
113299 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },117489 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
113300 .dst_constraints = .{ .{ .float = .qword }, .any },117490 .dst_constraints = .{ .{ .float = .qword }, .any },
113301 .patterns = &.{117491 .patterns = &.{
113302 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },117492 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
113303 },117493 },
113304 .call_frame = .{ .alignment = .@"16" },117494 .call_frame = .{ .alignment = .@"16" },
113305 .extra_temps = .{117495 .extra_temps = .{
...@@ -113315,17 +117505,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113315,17 +117505,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113315 .unused,117505 .unused,
113316 .unused,117506 .unused,
113317 },117507 },
113318 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117508 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113319 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },117509 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113320 .each = .{ .once = &.{117510 .each = .{ .once = &.{
113321 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },117511 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113322 } },117512 } },
113323 }, .{117513 }, .{
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 },
113325 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },117544 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
113326 .dst_constraints = .{ .{ .float = .qword }, .any },117545 .dst_constraints = .{ .{ .float = .qword }, .any },
113327 .patterns = &.{117546 .patterns = &.{
113328 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },117547 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
113329 },117548 },
113330 .call_frame = .{ .alignment = .@"16" },117549 .call_frame = .{ .alignment = .@"16" },
113331 .extra_temps = .{117550 .extra_temps = .{
...@@ -113341,11 +117560,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113341,11 +117560,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113341 .unused,117560 .unused,
113342 .unused,117561 .unused,
113343 },117562 },
113344 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117563 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113345 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },117564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113346 .each = .{ .once = &.{117565 .each = .{ .once = &.{
113347 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },117566 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113348 } },117567 } },
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 } },
113349 }, .{117596 }, .{
113350 .required_features = .{ .@"64bit", .sse, null, null },117597 .required_features = .{ .@"64bit", .sse, null, null },
113351 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },117598 .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 {...@@ -113355,8 +117602,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113355 },117602 },
113356 .call_frame = .{ .alignment = .@"16" },117603 .call_frame = .{ .alignment = .@"16" },
113357 .extra_temps = .{117604 .extra_temps = .{
113358 .{ .type = .usize, .kind = .{ .reg = .rdi } },117605 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113359 .{ .type = .usize, .kind = .{ .reg = .rsi } },117606 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
113360 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },117607 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
113361 .unused,117608 .unused,
113362 .unused,117609 .unused,
...@@ -113367,7 +117614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113367,7 +117614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113367 .unused,117614 .unused,
113368 .unused,117615 .unused,
113369 },117616 },
113370 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117617 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113371 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },117618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113372 .each = .{ .once = &.{117619 .each = .{ .once = &.{
113373 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },117620 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -113383,8 +117630,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113383,8 +117630,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113383 },117630 },
113384 .call_frame = .{ .alignment = .@"16" },117631 .call_frame = .{ .alignment = .@"16" },
113385 .extra_temps = .{117632 .extra_temps = .{
113386 .{ .type = .usize, .kind = .{ .reg = .rdi } },117633 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113387 .{ .type = .usize, .kind = .{ .reg = .rsi } },117634 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
113388 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },117635 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
113389 .unused,117636 .unused,
113390 .unused,117637 .unused,
...@@ -113395,7 +117642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113395,7 +117642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113395 .unused,117642 .unused,
113396 .unused,117643 .unused,
113397 },117644 },
113398 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117645 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113399 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },117646 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113400 .each = .{ .once = &.{117647 .each = .{ .once = &.{
113401 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },117648 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -113488,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113488,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113488 .{ .src = .{ .to_mem, .none, .none } },117735 .{ .src = .{ .to_mem, .none, .none } },
113489 },117736 },
113490 .extra_temps = .{117737 .extra_temps = .{
113491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117738 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113492 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },117739 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
113493 .unused,117740 .unused,
113494 .unused,117741 .unused,
...@@ -113503,12 +117750,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113503,12 +117750,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113503 .dst_temps = .{ .mem, .unused },117750 .dst_temps = .{ .mem, .unused },
113504 .clobbers = .{ .eflags = true },117751 .clobbers = .{ .eflags = true },
113505 .each = .{ .once = &.{117752 .each = .{ .once = &.{
113506 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117753 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
113507 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },117754 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
113508 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },117755 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
113509 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },117756 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ },
113510 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },117757 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
113511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117758 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113512 } },117759 } },
113513 }, .{117760 }, .{
113514 .required_features = .{ .avx, null, null, null },117761 .required_features = .{ .avx, null, null, null },
...@@ -113518,7 +117765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113518,7 +117765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113518 .{ .src = .{ .to_mem, .none, .none } },117765 .{ .src = .{ .to_mem, .none, .none } },
113519 },117766 },
113520 .extra_temps = .{117767 .extra_temps = .{
113521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117768 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113522 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },117769 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113523 .unused,117770 .unused,
113524 .unused,117771 .unused,
...@@ -113533,14 +117780,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113533,14 +117780,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113533 .dst_temps = .{ .mem, .unused },117780 .dst_temps = .{ .mem, .unused },
113534 .clobbers = .{ .eflags = true },117781 .clobbers = .{ .eflags = true },
113535 .each = .{ .once = &.{117782 .each = .{ .once = &.{
113536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117783 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113537 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },117784 .{ .@"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) },
113539 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },117786 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
113540 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },117787 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113541 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },117788 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
113542 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117789 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113543 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117790 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113544 } },117791 } },
113545 }, .{117792 }, .{
113546 .required_features = .{ .sse4_1, null, null, null },117793 .required_features = .{ .sse4_1, null, null, null },
...@@ -113550,7 +117797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113550,7 +117797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113550 .{ .src = .{ .to_mem, .none, .none } },117797 .{ .src = .{ .to_mem, .none, .none } },
113551 },117798 },
113552 .extra_temps = .{117799 .extra_temps = .{
113553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117800 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113554 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },117801 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113555 .unused,117802 .unused,
113556 .unused,117803 .unused,
...@@ -113565,14 +117812,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113565,14 +117812,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113565 .dst_temps = .{ .mem, .unused },117812 .dst_temps = .{ .mem, .unused },
113566 .clobbers = .{ .eflags = true },117813 .clobbers = .{ .eflags = true },
113567 .each = .{ .once = &.{117814 .each = .{ .once = &.{
113568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117815 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113569 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },117816 .{ .@"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), ._ },
113571 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },117818 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
113572 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },117819 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113573 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },117820 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
113574 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117821 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117822 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113576 } },117823 } },
113577 }, .{117824 }, .{
113578 .required_features = .{ .avx2, null, null, null },117825 .required_features = .{ .avx2, null, null, null },
...@@ -113582,7 +117829,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113582,7 +117829,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113582 .{ .src = .{ .to_mem, .none, .none } },117829 .{ .src = .{ .to_mem, .none, .none } },
113583 },117830 },
113584 .extra_temps = .{117831 .extra_temps = .{
113585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117832 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113586 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },117833 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
113587 .unused,117834 .unused,
113588 .unused,117835 .unused,
...@@ -113597,12 +117844,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113597,12 +117844,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113597 .dst_temps = .{ .mem, .unused },117844 .dst_temps = .{ .mem, .unused },
113598 .clobbers = .{ .eflags = true },117845 .clobbers = .{ .eflags = true },
113599 .each = .{ .once = &.{117846 .each = .{ .once = &.{
113600 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117847 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
113601 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },117848 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
113602 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },117849 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
113603 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },117850 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ },
113604 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },117851 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
113605 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117852 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113606 } },117853 } },
113607 }, .{117854 }, .{
113608 .required_features = .{ .avx, null, null, null },117855 .required_features = .{ .avx, null, null, null },
...@@ -113612,7 +117859,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113612,7 +117859,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113612 .{ .src = .{ .to_mem, .none, .none } },117859 .{ .src = .{ .to_mem, .none, .none } },
113613 },117860 },
113614 .extra_temps = .{117861 .extra_temps = .{
113615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117862 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113616 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },117863 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113617 .unused,117864 .unused,
113618 .unused,117865 .unused,
...@@ -113627,14 +117874,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113627,14 +117874,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113627 .dst_temps = .{ .mem, .unused },117874 .dst_temps = .{ .mem, .unused },
113628 .clobbers = .{ .eflags = true },117875 .clobbers = .{ .eflags = true },
113629 .each = .{ .once = &.{117876 .each = .{ .once = &.{
113630 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117877 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113631 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },117878 .{ .@"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) },
113633 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },117880 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
113634 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },117881 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113635 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },117882 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
113636 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117883 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113637 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117884 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113638 } },117885 } },
113639 }, .{117886 }, .{
113640 .required_features = .{ .sse4_1, null, null, null },117887 .required_features = .{ .sse4_1, null, null, null },
...@@ -113644,7 +117891,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113644,7 +117891,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113644 .{ .src = .{ .to_mem, .none, .none } },117891 .{ .src = .{ .to_mem, .none, .none } },
113645 },117892 },
113646 .extra_temps = .{117893 .extra_temps = .{
113647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117894 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113648 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },117895 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113649 .unused,117896 .unused,
113650 .unused,117897 .unused,
...@@ -113659,14 +117906,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113659,14 +117906,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113659 .dst_temps = .{ .mem, .unused },117906 .dst_temps = .{ .mem, .unused },
113660 .clobbers = .{ .eflags = true },117907 .clobbers = .{ .eflags = true },
113661 .each = .{ .once = &.{117908 .each = .{ .once = &.{
113662 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117909 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113663 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },117910 .{ .@"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), ._ },
113665 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },117912 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
113666 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },117913 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113667 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },117914 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
113668 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117915 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117916 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113670 } },117917 } },
113671 }, .{117918 }, .{
113672 .required_features = .{ .avx, .slow_incdec, null, null },117919 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -113677,10 +117924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113677,10 +117924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113677 },117924 },
113678 .call_frame = .{ .alignment = .@"16" },117925 .call_frame = .{ .alignment = .@"16" },
113679 .extra_temps = .{117926 .extra_temps = .{
113680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117927 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113681 .{ .type = .i32, .kind = .{ .reg = .edi } },117928 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113682 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },117929 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113683 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },117930 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113684 .unused,117931 .unused,
113685 .unused,117932 .unused,
113686 .unused,117933 .unused,
...@@ -113692,12 +117939,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113692,12 +117939,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113692 .dst_temps = .{ .mem, .unused },117939 .dst_temps = .{ .mem, .unused },
113693 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },117940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113694 .each = .{ .once = &.{117941 .each = .{ .once = &.{
113695 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117942 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113696 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117943 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113697 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117944 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113698 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117945 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113699 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },117946 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
113700 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },117947 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113701 } },117948 } },
113702 }, .{117949 }, .{
113703 .required_features = .{ .avx, null, null, null },117950 .required_features = .{ .avx, null, null, null },
...@@ -113708,10 +117955,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113708,10 +117955,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113708 },117955 },
113709 .call_frame = .{ .alignment = .@"16" },117956 .call_frame = .{ .alignment = .@"16" },
113710 .extra_temps = .{117957 .extra_temps = .{
113711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117958 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113712 .{ .type = .i32, .kind = .{ .reg = .edi } },117959 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113713 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },117960 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113714 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },117961 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113715 .unused,117962 .unused,
113716 .unused,117963 .unused,
113717 .unused,117964 .unused,
...@@ -113723,12 +117970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113723,12 +117970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113723 .dst_temps = .{ .mem, .unused },117970 .dst_temps = .{ .mem, .unused },
113724 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },117971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113725 .each = .{ .once = &.{117972 .each = .{ .once = &.{
113726 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117973 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113727 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117974 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113728 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113729 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117976 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113730 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },117977 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
113731 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },117978 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113732 } },117979 } },
113733 }, .{117980 }, .{
113734 .required_features = .{ .sse2, .slow_incdec, null, null },117981 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -113739,10 +117986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113739,10 +117986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113739 },117986 },
113740 .call_frame = .{ .alignment = .@"16" },117987 .call_frame = .{ .alignment = .@"16" },
113741 .extra_temps = .{117988 .extra_temps = .{
113742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117989 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113743 .{ .type = .i32, .kind = .{ .reg = .edi } },117990 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113744 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },117991 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113745 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },117992 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113746 .unused,117993 .unused,
113747 .unused,117994 .unused,
113748 .unused,117995 .unused,
...@@ -113754,12 +118001,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113754,12 +118001,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113754 .dst_temps = .{ .mem, .unused },118001 .dst_temps = .{ .mem, .unused },
113755 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118002 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113756 .each = .{ .once = &.{118003 .each = .{ .once = &.{
113757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118004 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113758 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118005 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113759 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118006 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113760 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118007 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113761 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },118008 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
113762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118009 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113763 } },118010 } },
113764 }, .{118011 }, .{
113765 .required_features = .{ .sse2, null, null, null },118012 .required_features = .{ .sse2, null, null, null },
...@@ -113770,10 +118017,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113770,10 +118017,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113770 },118017 },
113771 .call_frame = .{ .alignment = .@"16" },118018 .call_frame = .{ .alignment = .@"16" },
113772 .extra_temps = .{118019 .extra_temps = .{
113773 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118020 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113774 .{ .type = .i32, .kind = .{ .reg = .edi } },118021 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113775 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118022 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113776 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118023 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113777 .unused,118024 .unused,
113778 .unused,118025 .unused,
113779 .unused,118026 .unused,
...@@ -113785,12 +118032,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113785,12 +118032,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113785 .dst_temps = .{ .mem, .unused },118032 .dst_temps = .{ .mem, .unused },
113786 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118033 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113787 .each = .{ .once = &.{118034 .each = .{ .once = &.{
113788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118035 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113789 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118036 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113790 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118037 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113791 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118038 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113792 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },118039 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
113793 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },118040 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113794 } },118041 } },
113795 }, .{118042 }, .{
113796 .required_features = .{ .sse, .slow_incdec, null, null },118043 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -113801,10 +118048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113801,10 +118048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113801 },118048 },
113802 .call_frame = .{ .alignment = .@"16" },118049 .call_frame = .{ .alignment = .@"16" },
113803 .extra_temps = .{118050 .extra_temps = .{
113804 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118051 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113805 .{ .type = .i32, .kind = .{ .reg = .edi } },118052 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113806 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118053 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113807 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118054 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113808 .unused,118055 .unused,
113809 .unused,118056 .unused,
113810 .unused,118057 .unused,
...@@ -113816,12 +118063,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113816,12 +118063,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113816 .dst_temps = .{ .mem, .unused },118063 .dst_temps = .{ .mem, .unused },
113817 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118064 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113818 .each = .{ .once = &.{118065 .each = .{ .once = &.{
113819 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118066 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113820 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118067 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113821 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118068 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113822 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118069 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113823 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },118070 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
113824 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118071 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113825 } },118072 } },
113826 }, .{118073 }, .{
113827 .required_features = .{ .sse, null, null, null },118074 .required_features = .{ .sse, null, null, null },
...@@ -113832,10 +118079,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113832,10 +118079,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113832 },118079 },
113833 .call_frame = .{ .alignment = .@"16" },118080 .call_frame = .{ .alignment = .@"16" },
113834 .extra_temps = .{118081 .extra_temps = .{
113835 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118082 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113836 .{ .type = .i32, .kind = .{ .reg = .edi } },118083 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113837 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118084 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113838 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118085 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113839 .unused,118086 .unused,
113840 .unused,118087 .unused,
113841 .unused,118088 .unused,
...@@ -113847,12 +118094,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113847,12 +118094,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113847 .dst_temps = .{ .mem, .unused },118094 .dst_temps = .{ .mem, .unused },
113848 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118095 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113849 .each = .{ .once = &.{118096 .each = .{ .once = &.{
113850 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118097 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113851 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118098 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113852 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118099 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113853 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118100 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113854 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },118101 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
113855 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },118102 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113856 } },118103 } },
113857 }, .{118104 }, .{
113858 .required_features = .{ .avx, .slow_incdec, null, null },118105 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -113863,10 +118110,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113863,10 +118110,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113863 },118110 },
113864 .call_frame = .{ .alignment = .@"16" },118111 .call_frame = .{ .alignment = .@"16" },
113865 .extra_temps = .{118112 .extra_temps = .{
113866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118113 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113867 .{ .type = .u32, .kind = .{ .reg = .edi } },118114 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113868 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118115 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113869 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118116 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113870 .unused,118117 .unused,
113871 .unused,118118 .unused,
113872 .unused,118119 .unused,
...@@ -113878,12 +118125,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113878,12 +118125,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113878 .dst_temps = .{ .mem, .unused },118125 .dst_temps = .{ .mem, .unused },
113879 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113880 .each = .{ .once = &.{118127 .each = .{ .once = &.{
113881 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118128 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113882 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118129 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113883 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118130 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113884 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118131 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113885 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },118132 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
113886 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118133 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113887 } },118134 } },
113888 }, .{118135 }, .{
113889 .required_features = .{ .avx, null, null, null },118136 .required_features = .{ .avx, null, null, null },
...@@ -113894,10 +118141,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113894,10 +118141,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113894 },118141 },
113895 .call_frame = .{ .alignment = .@"16" },118142 .call_frame = .{ .alignment = .@"16" },
113896 .extra_temps = .{118143 .extra_temps = .{
113897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118144 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113898 .{ .type = .u32, .kind = .{ .reg = .edi } },118145 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113899 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118146 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113900 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118147 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113901 .unused,118148 .unused,
113902 .unused,118149 .unused,
113903 .unused,118150 .unused,
...@@ -113909,12 +118156,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113909,12 +118156,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113909 .dst_temps = .{ .mem, .unused },118156 .dst_temps = .{ .mem, .unused },
113910 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118157 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113911 .each = .{ .once = &.{118158 .each = .{ .once = &.{
113912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118159 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113913 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118160 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113914 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118161 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113915 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118162 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113916 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },118163 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
113917 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },118164 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113918 } },118165 } },
113919 }, .{118166 }, .{
113920 .required_features = .{ .sse2, .slow_incdec, null, null },118167 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -113925,10 +118172,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113925,10 +118172,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113925 },118172 },
113926 .call_frame = .{ .alignment = .@"16" },118173 .call_frame = .{ .alignment = .@"16" },
113927 .extra_temps = .{118174 .extra_temps = .{
113928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118175 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113929 .{ .type = .u32, .kind = .{ .reg = .edi } },118176 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113930 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118177 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113931 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118178 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113932 .unused,118179 .unused,
113933 .unused,118180 .unused,
113934 .unused,118181 .unused,
...@@ -113940,12 +118187,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113940,12 +118187,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113940 .dst_temps = .{ .mem, .unused },118187 .dst_temps = .{ .mem, .unused },
113941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118188 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113942 .each = .{ .once = &.{118189 .each = .{ .once = &.{
113943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118190 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113944 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118191 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113945 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118192 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113946 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118193 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113947 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },118194 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
113948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118195 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113949 } },118196 } },
113950 }, .{118197 }, .{
113951 .required_features = .{ .sse2, null, null, null },118198 .required_features = .{ .sse2, null, null, null },
...@@ -113956,10 +118203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113956,10 +118203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113956 },118203 },
113957 .call_frame = .{ .alignment = .@"16" },118204 .call_frame = .{ .alignment = .@"16" },
113958 .extra_temps = .{118205 .extra_temps = .{
113959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118206 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113960 .{ .type = .u32, .kind = .{ .reg = .edi } },118207 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113961 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118208 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113962 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118209 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113963 .unused,118210 .unused,
113964 .unused,118211 .unused,
113965 .unused,118212 .unused,
...@@ -113971,12 +118218,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113971,12 +118218,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113971 .dst_temps = .{ .mem, .unused },118218 .dst_temps = .{ .mem, .unused },
113972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118219 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113973 .each = .{ .once = &.{118220 .each = .{ .once = &.{
113974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118221 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
113975 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118222 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113976 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118223 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113977 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118224 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
113978 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },118225 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
113979 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },118226 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113980 } },118227 } },
113981 }, .{118228 }, .{
113982 .required_features = .{ .sse, .slow_incdec, null, null },118229 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -113987,10 +118234,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113987,10 +118234,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113987 },118234 },
113988 .call_frame = .{ .alignment = .@"16" },118235 .call_frame = .{ .alignment = .@"16" },
113989 .extra_temps = .{118236 .extra_temps = .{
113990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118237 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113991 .{ .type = .u32, .kind = .{ .reg = .edi } },118238 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113992 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118239 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113993 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118240 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113994 .unused,118241 .unused,
113995 .unused,118242 .unused,
113996 .unused,118243 .unused,
...@@ -114002,12 +118249,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114002,12 +118249,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114002 .dst_temps = .{ .mem, .unused },118249 .dst_temps = .{ .mem, .unused },
114003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118250 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114004 .each = .{ .once = &.{118251 .each = .{ .once = &.{
114005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118252 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
114006 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118253 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
114007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118254 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114008 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118255 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
114009 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },118256 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
114010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118257 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114011 } },118258 } },
114012 }, .{118259 }, .{
114013 .required_features = .{ .sse, null, null, null },118260 .required_features = .{ .sse, null, null, null },
...@@ -114018,10 +118265,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114018,10 +118265,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114018 },118265 },
114019 .call_frame = .{ .alignment = .@"16" },118266 .call_frame = .{ .alignment = .@"16" },
114020 .extra_temps = .{118267 .extra_temps = .{
114021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114022 .{ .type = .u32, .kind = .{ .reg = .edi } },118269 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114023 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118270 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114024 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118271 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114025 .unused,118272 .unused,
114026 .unused,118273 .unused,
114027 .unused,118274 .unused,
...@@ -114033,12 +118280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114033,12 +118280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114033 .dst_temps = .{ .mem, .unused },118280 .dst_temps = .{ .mem, .unused },
114034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118281 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114035 .each = .{ .once = &.{118282 .each = .{ .once = &.{
114036 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118283 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
114037 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },118284 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
114038 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118285 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114039 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118286 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
114040 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },118287 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
114041 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },118288 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
114042 } },118289 } },
114043 }, .{118290 }, .{
114044 .required_features = .{ .avx, null, null, null },118291 .required_features = .{ .avx, null, null, null },
...@@ -114126,7 +118373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114126,7 +118373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114126 .{ .src = .{ .to_mem, .none, .none } },118373 .{ .src = .{ .to_mem, .none, .none } },
114127 },118374 },
114128 .extra_temps = .{118375 .extra_temps = .{
114129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118376 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114130 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },118377 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114131 .unused,118378 .unused,
114132 .unused,118379 .unused,
...@@ -114141,12 +118388,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114141,12 +118388,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114141 .dst_temps = .{ .mem, .unused },118388 .dst_temps = .{ .mem, .unused },
114142 .clobbers = .{ .eflags = true },118389 .clobbers = .{ .eflags = true },
114143 .each = .{ .once = &.{118390 .each = .{ .once = &.{
114144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118391 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
114145 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118392 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114146 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },118393 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
114147 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },118394 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
114148 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118395 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118396 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114150 } },118397 } },
114151 }, .{118398 }, .{
114152 .required_features = .{ .avx, null, null, null },118399 .required_features = .{ .avx, null, null, null },
...@@ -114156,7 +118403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114156,7 +118403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114156 .{ .src = .{ .to_mem, .none, .none } },118403 .{ .src = .{ .to_mem, .none, .none } },
114157 },118404 },
114158 .extra_temps = .{118405 .extra_temps = .{
114159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118406 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114160 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },118407 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114161 .unused,118408 .unused,
114162 .unused,118409 .unused,
...@@ -114171,13 +118418,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114171,13 +118418,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114171 .dst_temps = .{ .mem, .unused },118418 .dst_temps = .{ .mem, .unused },
114172 .clobbers = .{ .eflags = true },118419 .clobbers = .{ .eflags = true },
114173 .each = .{ .once = &.{118420 .each = .{ .once = &.{
114174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118421 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
114175 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118422 .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114176 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },118423 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
114177 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },118424 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114178 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },118425 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
114179 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118426 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118427 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114181 } },118428 } },
114182 }, .{118429 }, .{
114183 .required_features = .{ .sse4_1, null, null, null },118430 .required_features = .{ .sse4_1, null, null, null },
...@@ -114187,7 +118434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114187,7 +118434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114187 .{ .src = .{ .to_mem, .none, .none } },118434 .{ .src = .{ .to_mem, .none, .none } },
114188 },118435 },
114189 .extra_temps = .{118436 .extra_temps = .{
114190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118437 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114191 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },118438 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114192 .unused,118439 .unused,
114193 .unused,118440 .unused,
...@@ -114202,13 +118449,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114202,13 +118449,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114202 .dst_temps = .{ .mem, .unused },118449 .dst_temps = .{ .mem, .unused },
114203 .clobbers = .{ .eflags = true },118450 .clobbers = .{ .eflags = true },
114204 .each = .{ .once = &.{118451 .each = .{ .once = &.{
114205 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118452 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
114206 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118453 .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114207 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },118454 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
114208 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },118455 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114209 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },118456 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
114210 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118457 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114211 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118458 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114212 } },118459 } },
114213 }, .{118460 }, .{
114214 .required_features = .{ .avx2, null, null, null },118461 .required_features = .{ .avx2, null, null, null },
...@@ -114218,7 +118465,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114218,7 +118465,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114218 .{ .src = .{ .to_mem, .none, .none } },118465 .{ .src = .{ .to_mem, .none, .none } },
114219 },118466 },
114220 .extra_temps = .{118467 .extra_temps = .{
114221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114222 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },118469 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114223 .unused,118470 .unused,
114224 .unused,118471 .unused,
...@@ -114233,12 +118480,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114233,12 +118480,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114233 .dst_temps = .{ .mem, .unused },118480 .dst_temps = .{ .mem, .unused },
114234 .clobbers = .{ .eflags = true },118481 .clobbers = .{ .eflags = true },
114235 .each = .{ .once = &.{118482 .each = .{ .once = &.{
114236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118483 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
114237 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118484 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114238 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },118485 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
114239 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },118486 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
114240 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118487 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118488 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114242 } },118489 } },
114243 }, .{118490 }, .{
114244 .required_features = .{ .avx, null, null, null },118491 .required_features = .{ .avx, null, null, null },
...@@ -114248,7 +118495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114248,7 +118495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114248 .{ .src = .{ .to_mem, .none, .none } },118495 .{ .src = .{ .to_mem, .none, .none } },
114249 },118496 },
114250 .extra_temps = .{118497 .extra_temps = .{
114251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118498 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114252 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },118499 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114253 .unused,118500 .unused,
114254 .unused,118501 .unused,
...@@ -114263,13 +118510,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114263,13 +118510,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114263 .dst_temps = .{ .mem, .unused },118510 .dst_temps = .{ .mem, .unused },
114264 .clobbers = .{ .eflags = true },118511 .clobbers = .{ .eflags = true },
114265 .each = .{ .once = &.{118512 .each = .{ .once = &.{
114266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118513 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
114267 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118514 .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114268 .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },118515 .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
114269 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },118516 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114270 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },118517 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
114271 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118518 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118519 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114273 } },118520 } },
114274 }, .{118521 }, .{
114275 .required_features = .{ .sse4_1, null, null, null },118522 .required_features = .{ .sse4_1, null, null, null },
...@@ -114279,7 +118526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114279,7 +118526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114279 .{ .src = .{ .to_mem, .none, .none } },118526 .{ .src = .{ .to_mem, .none, .none } },
114280 },118527 },
114281 .extra_temps = .{118528 .extra_temps = .{
114282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118529 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114283 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },118530 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114284 .unused,118531 .unused,
114285 .unused,118532 .unused,
...@@ -114294,13 +118541,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114294,13 +118541,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114294 .dst_temps = .{ .mem, .unused },118541 .dst_temps = .{ .mem, .unused },
114295 .clobbers = .{ .eflags = true },118542 .clobbers = .{ .eflags = true },
114296 .each = .{ .once = &.{118543 .each = .{ .once = &.{
114297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118544 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
114298 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118545 .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114299 .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },118546 .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
114300 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },118547 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114301 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },118548 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
114302 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118549 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118550 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114304 } },118551 } },
114305 }, .{118552 }, .{
114306 .required_features = .{ .avx, null, null, null },118553 .required_features = .{ .avx, null, null, null },
...@@ -114311,10 +118558,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114311,10 +118558,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114311 },118558 },
114312 .call_frame = .{ .alignment = .@"16" },118559 .call_frame = .{ .alignment = .@"16" },
114313 .extra_temps = .{118560 .extra_temps = .{
114314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118561 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114315 .{ .type = .i32, .kind = .{ .reg = .edi } },118562 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114316 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118563 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114317 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118564 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114318 .unused,118565 .unused,
114319 .unused,118566 .unused,
114320 .unused,118567 .unused,
...@@ -114326,12 +118573,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114326,12 +118573,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114326 .dst_temps = .{ .mem, .unused },118573 .dst_temps = .{ .mem, .unused },
114327 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118574 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114328 .each = .{ .once = &.{118575 .each = .{ .once = &.{
114329 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118576 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
114330 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },118577 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114331 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118578 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114332 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118579 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
114333 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },118580 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114334 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118581 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114335 } },118582 } },
114336 }, .{118583 }, .{
114337 .required_features = .{ .sse2, null, null, null },118584 .required_features = .{ .sse2, null, null, null },
...@@ -114342,10 +118589,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114342,10 +118589,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114342 },118589 },
114343 .call_frame = .{ .alignment = .@"16" },118590 .call_frame = .{ .alignment = .@"16" },
114344 .extra_temps = .{118591 .extra_temps = .{
114345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114346 .{ .type = .i32, .kind = .{ .reg = .edi } },118593 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114347 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118594 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114348 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118595 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114349 .unused,118596 .unused,
114350 .unused,118597 .unused,
114351 .unused,118598 .unused,
...@@ -114357,12 +118604,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114357,12 +118604,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114357 .dst_temps = .{ .mem, .unused },118604 .dst_temps = .{ .mem, .unused },
114358 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118605 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114359 .each = .{ .once = &.{118606 .each = .{ .once = &.{
114360 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118607 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
114361 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },118608 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114362 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118609 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114363 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118610 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
114364 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },118611 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114365 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118612 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114366 } },118613 } },
114367 }, .{118614 }, .{
114368 .required_features = .{ .sse, null, null, null },118615 .required_features = .{ .sse, null, null, null },
...@@ -114373,10 +118620,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114373,10 +118620,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114373 },118620 },
114374 .call_frame = .{ .alignment = .@"16" },118621 .call_frame = .{ .alignment = .@"16" },
114375 .extra_temps = .{118622 .extra_temps = .{
114376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118623 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114377 .{ .type = .i32, .kind = .{ .reg = .edi } },118624 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114378 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118625 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114379 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118626 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114380 .unused,118627 .unused,
114381 .unused,118628 .unused,
114382 .unused,118629 .unused,
...@@ -114388,12 +118635,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114388,12 +118635,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114388 .dst_temps = .{ .mem, .unused },118635 .dst_temps = .{ .mem, .unused },
114389 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114390 .each = .{ .once = &.{118637 .each = .{ .once = &.{
114391 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118638 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
114392 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },118639 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114393 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118640 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114394 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118641 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
114395 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },118642 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114396 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118643 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114397 } },118644 } },
114398 }, .{118645 }, .{
114399 .required_features = .{ .avx, null, null, null },118646 .required_features = .{ .avx, null, null, null },
...@@ -114404,10 +118651,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114404,10 +118651,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114404 },118651 },
114405 .call_frame = .{ .alignment = .@"16" },118652 .call_frame = .{ .alignment = .@"16" },
114406 .extra_temps = .{118653 .extra_temps = .{
114407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118654 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114408 .{ .type = .u32, .kind = .{ .reg = .edi } },118655 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114409 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118656 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114410 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118657 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114411 .unused,118658 .unused,
114412 .unused,118659 .unused,
114413 .unused,118660 .unused,
...@@ -114419,12 +118666,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114419,12 +118666,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114419 .dst_temps = .{ .mem, .unused },118666 .dst_temps = .{ .mem, .unused },
114420 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114421 .each = .{ .once = &.{118668 .each = .{ .once = &.{
114422 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118669 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
114423 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },118670 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114424 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114425 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118672 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
114426 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },118673 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114427 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118674 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114428 } },118675 } },
114429 }, .{118676 }, .{
114430 .required_features = .{ .sse2, null, null, null },118677 .required_features = .{ .sse2, null, null, null },
...@@ -114435,10 +118682,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114435,10 +118682,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114435 },118682 },
114436 .call_frame = .{ .alignment = .@"16" },118683 .call_frame = .{ .alignment = .@"16" },
114437 .extra_temps = .{118684 .extra_temps = .{
114438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114439 .{ .type = .u32, .kind = .{ .reg = .edi } },118686 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114440 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118687 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114441 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118688 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114442 .unused,118689 .unused,
114443 .unused,118690 .unused,
114444 .unused,118691 .unused,
...@@ -114450,12 +118697,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114450,12 +118697,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114450 .dst_temps = .{ .mem, .unused },118697 .dst_temps = .{ .mem, .unused },
114451 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114452 .each = .{ .once = &.{118699 .each = .{ .once = &.{
114453 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118700 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
114454 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },118701 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114455 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118702 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114456 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118703 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
114457 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },118704 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114458 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118705 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114459 } },118706 } },
114460 }, .{118707 }, .{
114461 .required_features = .{ .sse, null, null, null },118708 .required_features = .{ .sse, null, null, null },
...@@ -114466,10 +118713,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114466,10 +118713,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114466 },118713 },
114467 .call_frame = .{ .alignment = .@"16" },118714 .call_frame = .{ .alignment = .@"16" },
114468 .extra_temps = .{118715 .extra_temps = .{
114469 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118716 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114470 .{ .type = .u32, .kind = .{ .reg = .edi } },118717 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114471 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118718 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114472 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118719 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114473 .unused,118720 .unused,
114474 .unused,118721 .unused,
114475 .unused,118722 .unused,
...@@ -114481,12 +118728,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114481,12 +118728,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114481 .dst_temps = .{ .mem, .unused },118728 .dst_temps = .{ .mem, .unused },
114482 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114483 .each = .{ .once = &.{118730 .each = .{ .once = &.{
114484 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118731 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
114485 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },118732 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114486 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118733 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114487 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118734 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
114488 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },118735 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114489 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118736 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114490 } },118737 } },
114491 }, .{118738 }, .{
114492 .required_features = .{ .avx, null, null, null },118739 .required_features = .{ .avx, null, null, null },
...@@ -114532,7 +118779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114532,7 +118779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114532 .{ .src = .{ .to_mem, .none, .none } },118779 .{ .src = .{ .to_mem, .none, .none } },
114533 },118780 },
114534 .extra_temps = .{118781 .extra_temps = .{
114535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114536 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },118783 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114537 .unused,118784 .unused,
114538 .unused,118785 .unused,
...@@ -114547,11 +118794,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114547,11 +118794,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114547 .dst_temps = .{ .mem, .unused },118794 .dst_temps = .{ .mem, .unused },
114548 .clobbers = .{ .eflags = true },118795 .clobbers = .{ .eflags = true },
114549 .each = .{ .once = &.{118796 .each = .{ .once = &.{
114550 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118797 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
114551 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },118798 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
114552 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },118799 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
114553 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },118800 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
114554 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118801 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114555 } },118802 } },
114556 }, .{118803 }, .{
114557 .required_features = .{ .avx, null, null, null },118804 .required_features = .{ .avx, null, null, null },
...@@ -114561,7 +118808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114561,7 +118808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114561 .{ .src = .{ .to_mem, .none, .none } },118808 .{ .src = .{ .to_mem, .none, .none } },
114562 },118809 },
114563 .extra_temps = .{118810 .extra_temps = .{
114564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118811 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114565 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },118812 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114566 .unused,118813 .unused,
114567 .unused,118814 .unused,
...@@ -114576,11 +118823,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114576,11 +118823,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114576 .dst_temps = .{ .mem, .unused },118823 .dst_temps = .{ .mem, .unused },
114577 .clobbers = .{ .eflags = true },118824 .clobbers = .{ .eflags = true },
114578 .each = .{ .once = &.{118825 .each = .{ .once = &.{
114579 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118826 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
114580 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118827 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114581 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },118828 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
114582 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118829 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114583 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118830 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114584 } },118831 } },
114585 }, .{118832 }, .{
114586 .required_features = .{ .sse2, null, null, null },118833 .required_features = .{ .sse2, null, null, null },
...@@ -114590,7 +118837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114590,7 +118837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114590 .{ .src = .{ .to_mem, .none, .none } },118837 .{ .src = .{ .to_mem, .none, .none } },
114591 },118838 },
114592 .extra_temps = .{118839 .extra_temps = .{
114593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118840 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114594 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },118841 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114595 .unused,118842 .unused,
114596 .unused,118843 .unused,
...@@ -114605,11 +118852,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114605,11 +118852,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114605 .dst_temps = .{ .mem, .unused },118852 .dst_temps = .{ .mem, .unused },
114606 .clobbers = .{ .eflags = true },118853 .clobbers = .{ .eflags = true },
114607 .each = .{ .once = &.{118854 .each = .{ .once = &.{
114608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118855 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
114609 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118856 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114610 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },118857 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
114611 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118858 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118859 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114613 } },118860 } },
114614 }, .{118861 }, .{
114615 .required_features = .{ .avx, null, null, null },118862 .required_features = .{ .avx, null, null, null },
...@@ -114620,10 +118867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114620,10 +118867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114620 },118867 },
114621 .call_frame = .{ .alignment = .@"16" },118868 .call_frame = .{ .alignment = .@"16" },
114622 .extra_temps = .{118869 .extra_temps = .{
114623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118870 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114624 .{ .type = .i32, .kind = .{ .reg = .edi } },118871 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114625 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118872 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114626 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118873 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114627 .unused,118874 .unused,
114628 .unused,118875 .unused,
114629 .unused,118876 .unused,
...@@ -114635,12 +118882,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114635,12 +118882,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114635 .dst_temps = .{ .mem, .unused },118882 .dst_temps = .{ .mem, .unused },
114636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118883 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114637 .each = .{ .once = &.{118884 .each = .{ .once = &.{
114638 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118885 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
114639 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118886 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114640 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118887 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114641 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118888 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
114642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118889 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118890 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114644 } },118891 } },
114645 }, .{118892 }, .{
114646 .required_features = .{ .sse2, null, null, null },118893 .required_features = .{ .sse2, null, null, null },
...@@ -114651,10 +118898,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114651,10 +118898,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114651 },118898 },
114652 .call_frame = .{ .alignment = .@"16" },118899 .call_frame = .{ .alignment = .@"16" },
114653 .extra_temps = .{118900 .extra_temps = .{
114654 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118901 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114655 .{ .type = .i32, .kind = .{ .reg = .edi } },118902 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114656 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118903 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114657 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118904 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114658 .unused,118905 .unused,
114659 .unused,118906 .unused,
114660 .unused,118907 .unused,
...@@ -114666,12 +118913,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114666,12 +118913,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114666 .dst_temps = .{ .mem, .unused },118913 .dst_temps = .{ .mem, .unused },
114667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118914 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114668 .each = .{ .once = &.{118915 .each = .{ .once = &.{
114669 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118916 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
114670 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118917 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118918 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114672 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118919 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
114673 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118920 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118921 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114675 } },118922 } },
114676 }, .{118923 }, .{
114677 .required_features = .{ .sse, null, null, null },118924 .required_features = .{ .sse, null, null, null },
...@@ -114682,10 +118929,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114682,10 +118929,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114682 },118929 },
114683 .call_frame = .{ .alignment = .@"16" },118930 .call_frame = .{ .alignment = .@"16" },
114684 .extra_temps = .{118931 .extra_temps = .{
114685 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118932 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114686 .{ .type = .i32, .kind = .{ .reg = .edi } },118933 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114687 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },118934 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114688 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118935 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114689 .unused,118936 .unused,
114690 .unused,118937 .unused,
114691 .unused,118938 .unused,
...@@ -114697,12 +118944,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114697,12 +118944,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114697 .dst_temps = .{ .mem, .unused },118944 .dst_temps = .{ .mem, .unused },
114698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118945 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114699 .each = .{ .once = &.{118946 .each = .{ .once = &.{
114700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118947 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
114701 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118948 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114702 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118949 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114703 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118950 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
114704 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118951 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114705 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118952 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114706 } },118953 } },
114707 }, .{118954 }, .{
114708 .required_features = .{ .avx, null, null, null },118955 .required_features = .{ .avx, null, null, null },
...@@ -114713,10 +118960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114713,10 +118960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114713 },118960 },
114714 .call_frame = .{ .alignment = .@"16" },118961 .call_frame = .{ .alignment = .@"16" },
114715 .extra_temps = .{118962 .extra_temps = .{
114716 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118963 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114717 .{ .type = .u32, .kind = .{ .reg = .edi } },118964 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114718 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118965 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114719 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118966 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114720 .unused,118967 .unused,
114721 .unused,118968 .unused,
114722 .unused,118969 .unused,
...@@ -114728,12 +118975,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114728,12 +118975,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114728 .dst_temps = .{ .mem, .unused },118975 .dst_temps = .{ .mem, .unused },
114729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },118976 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114730 .each = .{ .once = &.{118977 .each = .{ .once = &.{
114731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118978 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
114732 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118979 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114733 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118980 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114734 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118981 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
114735 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118982 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114736 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },118983 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114737 } },118984 } },
114738 }, .{118985 }, .{
114739 .required_features = .{ .sse2, null, null, null },118986 .required_features = .{ .sse2, null, null, null },
...@@ -114744,10 +118991,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114744,10 +118991,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114744 },118991 },
114745 .call_frame = .{ .alignment = .@"16" },118992 .call_frame = .{ .alignment = .@"16" },
114746 .extra_temps = .{118993 .extra_temps = .{
114747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118994 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114748 .{ .type = .u32, .kind = .{ .reg = .edi } },118995 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114749 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },118996 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114750 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },118997 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114751 .unused,118998 .unused,
114752 .unused,118999 .unused,
114753 .unused,119000 .unused,
...@@ -114759,12 +119006,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114759,12 +119006,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114759 .dst_temps = .{ .mem, .unused },119006 .dst_temps = .{ .mem, .unused },
114760 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119007 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114761 .each = .{ .once = &.{119008 .each = .{ .once = &.{
114762 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119009 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
114763 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },119010 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114764 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119011 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114765 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119012 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
114766 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },119013 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119014 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114768 } },119015 } },
114769 }, .{119016 }, .{
114770 .required_features = .{ .sse, null, null, null },119017 .required_features = .{ .sse, null, null, null },
...@@ -114775,10 +119022,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114775,10 +119022,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114775 },119022 },
114776 .call_frame = .{ .alignment = .@"16" },119023 .call_frame = .{ .alignment = .@"16" },
114777 .extra_temps = .{119024 .extra_temps = .{
114778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114779 .{ .type = .u32, .kind = .{ .reg = .edi } },119026 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114780 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },119027 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114781 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119028 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114782 .unused,119029 .unused,
114783 .unused,119030 .unused,
114784 .unused,119031 .unused,
...@@ -114790,12 +119037,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114790,12 +119037,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114790 .dst_temps = .{ .mem, .unused },119037 .dst_temps = .{ .mem, .unused },
114791 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119038 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114792 .each = .{ .once = &.{119039 .each = .{ .once = &.{
114793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119040 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
114794 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },119041 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114795 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119042 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114796 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119043 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
114797 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },119044 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
114798 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119045 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114799 } },119046 } },
114800 }, .{119047 }, .{
114801 .required_features = .{ .@"64bit", .avx, null, null },119048 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -114805,7 +119052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114805,7 +119052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114805 .{ .src = .{ .to_mem, .none, .none } },119052 .{ .src = .{ .to_mem, .none, .none } },
114806 },119053 },
114807 .extra_temps = .{119054 .extra_temps = .{
114808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119055 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114809 .{ .type = .f64, .kind = .{ .rc = .sse } },119056 .{ .type = .f64, .kind = .{ .rc = .sse } },
114810 .unused,119057 .unused,
114811 .unused,119058 .unused,
...@@ -114820,12 +119067,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114820,12 +119067,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114820 .dst_temps = .{ .mem, .unused },119067 .dst_temps = .{ .mem, .unused },
114821 .clobbers = .{ .eflags = true },119068 .clobbers = .{ .eflags = true },
114822 .each = .{ .once = &.{119069 .each = .{ .once = &.{
114823 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119070 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114824 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },119071 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
114825 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },119072 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memi(.src0q, .tmp0), ._ },
114826 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },119073 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
114827 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119074 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119075 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114829 } },119076 } },
114830 }, .{119077 }, .{
114831 .required_features = .{ .@"64bit", .sse2, null, null },119078 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -114835,7 +119082,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114835,7 +119082,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114835 .{ .src = .{ .to_mem, .none, .none } },119082 .{ .src = .{ .to_mem, .none, .none } },
114836 },119083 },
114837 .extra_temps = .{119084 .extra_temps = .{
114838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114839 .{ .type = .f64, .kind = .{ .rc = .sse } },119086 .{ .type = .f64, .kind = .{ .rc = .sse } },
114840 .unused,119087 .unused,
114841 .unused,119088 .unused,
...@@ -114850,12 +119097,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114850,12 +119097,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114850 .dst_temps = .{ .mem, .unused },119097 .dst_temps = .{ .mem, .unused },
114851 .clobbers = .{ .eflags = true },119098 .clobbers = .{ .eflags = true },
114852 .each = .{ .once = &.{119099 .each = .{ .once = &.{
114853 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119100 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114854 .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },119101 .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },
114855 .{ ._, ._sd, .cvtsi2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119102 .{ ._, ._sd, .cvtsi2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114856 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },119103 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
114857 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119104 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119105 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114859 } },119106 } },
114860 }, .{119107 }, .{
114861 .required_features = .{ .@"64bit", .avx, null, null },119108 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -114866,10 +119113,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114866,10 +119113,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114866 },119113 },
114867 .call_frame = .{ .alignment = .@"16" },119114 .call_frame = .{ .alignment = .@"16" },
114868 .extra_temps = .{119115 .extra_temps = .{
114869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119116 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114870 .{ .type = .i64, .kind = .{ .reg = .rdi } },119117 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114871 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },119118 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114872 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119119 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114873 .unused,119120 .unused,
114874 .unused,119121 .unused,
114875 .unused,119122 .unused,
...@@ -114881,12 +119128,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114881,12 +119128,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114881 .dst_temps = .{ .mem, .unused },119128 .dst_temps = .{ .mem, .unused },
114882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119129 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114883 .each = .{ .once = &.{119130 .each = .{ .once = &.{
114884 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119131 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114885 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119132 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114886 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119133 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114887 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119134 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
114888 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119135 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119136 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114890 } },119137 } },
114891 }, .{119138 }, .{
114892 .required_features = .{ .@"64bit", .sse2, null, null },119139 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -114897,10 +119144,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114897,10 +119144,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114897 },119144 },
114898 .call_frame = .{ .alignment = .@"16" },119145 .call_frame = .{ .alignment = .@"16" },
114899 .extra_temps = .{119146 .extra_temps = .{
114900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119147 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114901 .{ .type = .i64, .kind = .{ .reg = .rdi } },119148 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114902 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },119149 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114903 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119150 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114904 .unused,119151 .unused,
114905 .unused,119152 .unused,
114906 .unused,119153 .unused,
...@@ -114912,12 +119159,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114912,12 +119159,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114912 .dst_temps = .{ .mem, .unused },119159 .dst_temps = .{ .mem, .unused },
114913 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114914 .each = .{ .once = &.{119161 .each = .{ .once = &.{
114915 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119162 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114916 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119163 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114917 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114918 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119165 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
114919 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119166 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119167 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114921 } },119168 } },
114922 }, .{119169 }, .{
114923 .required_features = .{ .@"64bit", .sse, null, null },119170 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -114928,10 +119175,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114928,10 +119175,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114928 },119175 },
114929 .call_frame = .{ .alignment = .@"16" },119176 .call_frame = .{ .alignment = .@"16" },
114930 .extra_temps = .{119177 .extra_temps = .{
114931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119178 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114932 .{ .type = .i64, .kind = .{ .reg = .rdi } },119179 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114933 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },119180 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114934 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119181 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114935 .unused,119182 .unused,
114936 .unused,119183 .unused,
114937 .unused,119184 .unused,
...@@ -114943,12 +119190,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114943,12 +119190,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114943 .dst_temps = .{ .mem, .unused },119190 .dst_temps = .{ .mem, .unused },
114944 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114945 .each = .{ .once = &.{119192 .each = .{ .once = &.{
114946 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119193 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114947 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119194 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114948 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114949 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119196 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
114950 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119197 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119198 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114952 } },119199 } },
114953 }, .{119200 }, .{
114954 .required_features = .{ .@"64bit", .avx, null, null },119201 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -114959,10 +119206,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114959,10 +119206,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114959 },119206 },
114960 .call_frame = .{ .alignment = .@"16" },119207 .call_frame = .{ .alignment = .@"16" },
114961 .extra_temps = .{119208 .extra_temps = .{
114962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119209 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114963 .{ .type = .u64, .kind = .{ .reg = .rdi } },119210 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114964 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },119211 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
114965 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119212 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114966 .unused,119213 .unused,
114967 .unused,119214 .unused,
114968 .unused,119215 .unused,
...@@ -114974,12 +119221,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114974,12 +119221,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114974 .dst_temps = .{ .mem, .unused },119221 .dst_temps = .{ .mem, .unused },
114975 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119222 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114976 .each = .{ .once = &.{119223 .each = .{ .once = &.{
114977 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119224 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114978 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119225 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114979 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119226 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114980 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119227 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
114981 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119228 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
114982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119229 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114983 } },119230 } },
114984 }, .{119231 }, .{
114985 .required_features = .{ .@"64bit", .sse2, null, null },119232 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -114990,10 +119237,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114990,10 +119237,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114990 },119237 },
114991 .call_frame = .{ .alignment = .@"16" },119238 .call_frame = .{ .alignment = .@"16" },
114992 .extra_temps = .{119239 .extra_temps = .{
114993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119240 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114994 .{ .type = .u64, .kind = .{ .reg = .rdi } },119241 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114995 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },119242 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
114996 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119243 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114997 .unused,119244 .unused,
114998 .unused,119245 .unused,
114999 .unused,119246 .unused,
...@@ -115005,12 +119252,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115005,12 +119252,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115005 .dst_temps = .{ .mem, .unused },119252 .dst_temps = .{ .mem, .unused },
115006 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119253 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115007 .each = .{ .once = &.{119254 .each = .{ .once = &.{
115008 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119255 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
115009 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119256 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
115010 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119257 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115011 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119258 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115012 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119259 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119260 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115014 } },119261 } },
115015 }, .{119262 }, .{
115016 .required_features = .{ .@"64bit", .sse, null, null },119263 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -115021,10 +119268,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115021,10 +119268,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115021 },119268 },
115022 .call_frame = .{ .alignment = .@"16" },119269 .call_frame = .{ .alignment = .@"16" },
115023 .extra_temps = .{119270 .extra_temps = .{
115024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119271 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115025 .{ .type = .u64, .kind = .{ .reg = .rdi } },119272 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115026 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },119273 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115027 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119274 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115028 .unused,119275 .unused,
115029 .unused,119276 .unused,
115030 .unused,119277 .unused,
...@@ -115036,15 +119283,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115036,15 +119283,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115036 .dst_temps = .{ .mem, .unused },119283 .dst_temps = .{ .mem, .unused },
115037 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115038 .each = .{ .once = &.{119285 .each = .{ .once = &.{
115039 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },119286 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
115040 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },119287 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
115041 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },119288 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115042 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },119289 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115043 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119290 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119291 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115045 } },119292 } },
115046 }, .{119293 }, .{
115047 .required_features = .{ .@"64bit", .avx, null, null },119294 .required_cc_abi = .sysv64,
119295 .required_features = .{ .avx, null, null, null },
115048 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },119296 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115049 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },119297 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115050 .patterns = &.{119298 .patterns = &.{
...@@ -115052,11 +119300,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115052,11 +119300,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115052 },119300 },
115053 .call_frame = .{ .alignment = .@"16" },119301 .call_frame = .{ .alignment = .@"16" },
115054 .extra_temps = .{119302 .extra_temps = .{
115055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119303 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115056 .{ .type = .u64, .kind = .{ .reg = .rdi } },119304 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115057 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115058 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },119305 .{ .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,
115060 .unused,119308 .unused,
115061 .unused,119309 .unused,
115062 .unused,119310 .unused,
...@@ -115067,16 +119315,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115067,16 +119315,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115067 .dst_temps = .{ .mem, .unused },119315 .dst_temps = .{ .mem, .unused },
115068 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119316 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115069 .each = .{ .once = &.{119317 .each = .{ .once = &.{
115070 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119318 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115071 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },119319 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
115072 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },119320 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
115073 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },119321 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115074 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },119322 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115075 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119323 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115077 } },119325 } },
115078 }, .{119326 }, .{
115079 .required_features = .{ .@"64bit", .sse2, null, null },119327 .required_cc_abi = .win64,
119328 .required_features = .{ .avx, null, null, null },
115080 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },119329 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115081 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },119330 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115082 .patterns = &.{119331 .patterns = &.{
...@@ -115084,11 +119333,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115084,11 +119333,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115084 },119333 },
115085 .call_frame = .{ .alignment = .@"16" },119334 .call_frame = .{ .alignment = .@"16" },
115086 .extra_temps = .{119335 .extra_temps = .{
115087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115088 .{ .type = .u64, .kind = .{ .reg = .rdi } },119337 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115089 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115090 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },119338 .{ .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,
115092 .unused,119341 .unused,
115093 .unused,119342 .unused,
115094 .unused,119343 .unused,
...@@ -115099,16 +119348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115099,16 +119348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115099 .dst_temps = .{ .mem, .unused },119348 .dst_temps = .{ .mem, .unused },
115100 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119349 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115101 .each = .{ .once = &.{119350 .each = .{ .once = &.{
115102 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119351 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115103 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },119352 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
115104 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },119353 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115105 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },119354 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115106 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },119355 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115107 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119356 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115109 } },119357 } },
115110 }, .{119358 }, .{
115111 .required_features = .{ .@"64bit", .sse, null, null },119359 .required_cc_abi = .sysv64,
119360 .required_features = .{ .sse2, null, null, null },
115112 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },119361 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115113 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },119362 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115114 .patterns = &.{119363 .patterns = &.{
...@@ -115116,11 +119365,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115116,11 +119365,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115116 },119365 },
115117 .call_frame = .{ .alignment = .@"16" },119366 .call_frame = .{ .alignment = .@"16" },
115118 .extra_temps = .{119367 .extra_temps = .{
115119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115120 .{ .type = .u64, .kind = .{ .reg = .rdi } },119369 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115121 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115122 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },119370 .{ .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,
115124 .unused,119373 .unused,
115125 .unused,119374 .unused,
115126 .unused,119375 .unused,
...@@ -115131,16 +119380,114 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115131,16 +119380,114 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115131 .dst_temps = .{ .mem, .unused },119380 .dst_temps = .{ .mem, .unused },
115132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115133 .each = .{ .once = &.{119382 .each = .{ .once = &.{
115134 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119383 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115135 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },119384 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
115136 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },119385 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
115137 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },119386 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115138 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },119387 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115139 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119388 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119389 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115141 } },119390 } },
115142 }, .{119391 }, .{
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 },
115144 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },119491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115145 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },119492 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115146 .patterns = &.{119493 .patterns = &.{
...@@ -115148,11 +119495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115148,11 +119495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115148 },119495 },
115149 .call_frame = .{ .alignment = .@"16" },119496 .call_frame = .{ .alignment = .@"16" },
115150 .extra_temps = .{119497 .extra_temps = .{
115151 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119498 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115152 .{ .type = .u64, .kind = .{ .reg = .rdi } },119499 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115153 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115154 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },119500 .{ .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,
115156 .unused,119503 .unused,
115157 .unused,119504 .unused,
115158 .unused,119505 .unused,
...@@ -115163,16 +119510,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115163,16 +119510,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115163 .dst_temps = .{ .mem, .unused },119510 .dst_temps = .{ .mem, .unused },
115164 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119511 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115165 .each = .{ .once = &.{119512 .each = .{ .once = &.{
115166 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119513 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115167 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },119514 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
115168 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },119515 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
115169 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },119516 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115170 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },119517 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115171 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119518 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115172 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119519 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115173 } },119520 } },
115174 }, .{119521 }, .{
115175 .required_features = .{ .@"64bit", .sse2, null, null },119522 .required_cc_abi = .win64,
119523 .required_features = .{ .avx, null, null, null },
115176 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },119524 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115177 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },119525 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115178 .patterns = &.{119526 .patterns = &.{
...@@ -115180,11 +119528,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115180,11 +119528,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115180 },119528 },
115181 .call_frame = .{ .alignment = .@"16" },119529 .call_frame = .{ .alignment = .@"16" },
115182 .extra_temps = .{119530 .extra_temps = .{
115183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119531 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115184 .{ .type = .u64, .kind = .{ .reg = .rdi } },119532 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115185 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115186 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },119533 .{ .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,
115188 .unused,119536 .unused,
115189 .unused,119537 .unused,
115190 .unused,119538 .unused,
...@@ -115195,16 +119543,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115195,16 +119543,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115195 .dst_temps = .{ .mem, .unused },119543 .dst_temps = .{ .mem, .unused },
115196 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119544 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115197 .each = .{ .once = &.{119545 .each = .{ .once = &.{
115198 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119546 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115199 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },119547 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
115200 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },119548 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115201 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },119549 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115202 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },119550 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115203 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119551 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115205 } },119552 } },
115206 }, .{119553 }, .{
115207 .required_features = .{ .@"64bit", .sse, null, null },119554 .required_cc_abi = .sysv64,
119555 .required_features = .{ .sse2, null, null, null },
115208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },119556 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115209 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },119557 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115210 .patterns = &.{119558 .patterns = &.{
...@@ -115212,11 +119560,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115212,11 +119560,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115212 },119560 },
115213 .call_frame = .{ .alignment = .@"16" },119561 .call_frame = .{ .alignment = .@"16" },
115214 .extra_temps = .{119562 .extra_temps = .{
115215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119563 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115216 .{ .type = .u64, .kind = .{ .reg = .rdi } },119564 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115217 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115218 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },119565 .{ .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,
115220 .unused,119568 .unused,
115221 .unused,119569 .unused,
115222 .unused,119570 .unused,
...@@ -115227,13 +119575,110 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115227,13 +119575,110 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115227 .dst_temps = .{ .mem, .unused },119575 .dst_temps = .{ .mem, .unused },
115228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119576 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115229 .each = .{ .once = &.{119577 .each = .{ .once = &.{
115230 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119578 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115231 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },119579 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
115232 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },119580 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
115233 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },119581 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115234 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },119582 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
115235 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },119583 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115236 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
115237 } },119682 } },
115238 }, .{119683 }, .{
115239 .required_features = .{ .@"64bit", .avx, null, null },119684 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -115245,11 +119690,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115245,11 +119690,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115245 .call_frame = .{ .alignment = .@"16" },119690 .call_frame = .{ .alignment = .@"16" },
115246 .extra_temps = .{119691 .extra_temps = .{
115247 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },119692 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119693 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115249 .{ .type = .usize, .kind = .{ .reg = .rdi } },119694 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115250 .{ .type = .usize, .kind = .{ .reg = .rsi } },119695 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115251 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },119696 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115252 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119697 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115253 .unused,119698 .unused,
115254 .unused,119699 .unused,
115255 .unused,119700 .unused,
...@@ -115259,15 +119704,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115259,15 +119704,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115259 .dst_temps = .{ .mem, .unused },119704 .dst_temps = .{ .mem, .unused },
115260 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115261 .each = .{ .once = &.{119706 .each = .{ .once = &.{
115262 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },119707 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
115263 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119708 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115264 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },119709 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115265 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },119710 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115266 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },119711 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115267 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },119712 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
115268 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },119713 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
115269 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },119714 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
115270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119715 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115271 } },119716 } },
115272 }, .{119717 }, .{
115273 .required_features = .{ .@"64bit", .sse2, null, null },119718 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -115279,11 +119724,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115279,11 +119724,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115279 .call_frame = .{ .alignment = .@"16" },119724 .call_frame = .{ .alignment = .@"16" },
115280 .extra_temps = .{119725 .extra_temps = .{
115281 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },119726 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119727 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115283 .{ .type = .usize, .kind = .{ .reg = .rdi } },119728 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115284 .{ .type = .usize, .kind = .{ .reg = .rsi } },119729 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115285 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },119730 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115286 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119731 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115287 .unused,119732 .unused,
115288 .unused,119733 .unused,
115289 .unused,119734 .unused,
...@@ -115293,15 +119738,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115293,15 +119738,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115293 .dst_temps = .{ .mem, .unused },119738 .dst_temps = .{ .mem, .unused },
115294 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119739 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115295 .each = .{ .once = &.{119740 .each = .{ .once = &.{
115296 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },119741 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
115297 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119742 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115298 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },119743 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115299 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },119744 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115300 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },119745 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115301 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },119746 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
115302 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },119747 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
115303 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },119748 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
115304 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119749 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115305 } },119750 } },
115306 }, .{119751 }, .{
115307 .required_features = .{ .@"64bit", .sse, null, null },119752 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -115313,11 +119758,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115313,11 +119758,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115313 .call_frame = .{ .alignment = .@"16" },119758 .call_frame = .{ .alignment = .@"16" },
115314 .extra_temps = .{119759 .extra_temps = .{
115315 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },119760 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119761 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115317 .{ .type = .usize, .kind = .{ .reg = .rdi } },119762 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115318 .{ .type = .usize, .kind = .{ .reg = .rsi } },119763 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115319 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },119764 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115320 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119765 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115321 .unused,119766 .unused,
115322 .unused,119767 .unused,
115323 .unused,119768 .unused,
...@@ -115327,15 +119772,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115327,15 +119772,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115327 .dst_temps = .{ .mem, .unused },119772 .dst_temps = .{ .mem, .unused },
115328 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119773 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115329 .each = .{ .once = &.{119774 .each = .{ .once = &.{
115330 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },119775 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
115331 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119776 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115332 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },119777 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115333 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },119778 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115334 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },119779 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115335 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },119780 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
115336 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },119781 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
115337 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },119782 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
115338 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119783 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115339 } },119784 } },
115340 }, .{119785 }, .{
115341 .required_features = .{ .@"64bit", .avx, null, null },119786 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -115347,11 +119792,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115347,11 +119792,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115347 .call_frame = .{ .alignment = .@"16" },119792 .call_frame = .{ .alignment = .@"16" },
115348 .extra_temps = .{119793 .extra_temps = .{
115349 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },119794 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119795 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115351 .{ .type = .usize, .kind = .{ .reg = .rdi } },119796 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115352 .{ .type = .usize, .kind = .{ .reg = .rsi } },119797 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115353 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },119798 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115354 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119799 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115355 .unused,119800 .unused,
115356 .unused,119801 .unused,
115357 .unused,119802 .unused,
...@@ -115361,15 +119806,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115361,15 +119806,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115361 .dst_temps = .{ .mem, .unused },119806 .dst_temps = .{ .mem, .unused },
115362 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119807 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115363 .each = .{ .once = &.{119808 .each = .{ .once = &.{
115364 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },119809 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
115365 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119810 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115366 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },119811 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115367 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },119812 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115368 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },119813 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115369 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },119814 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
115370 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },119815 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
115371 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },119816 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
115372 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119817 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115373 } },119818 } },
115374 }, .{119819 }, .{
115375 .required_features = .{ .@"64bit", .sse2, null, null },119820 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -115381,11 +119826,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115381,11 +119826,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115381 .call_frame = .{ .alignment = .@"16" },119826 .call_frame = .{ .alignment = .@"16" },
115382 .extra_temps = .{119827 .extra_temps = .{
115383 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },119828 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119829 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115385 .{ .type = .usize, .kind = .{ .reg = .rdi } },119830 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115386 .{ .type = .usize, .kind = .{ .reg = .rsi } },119831 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115387 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },119832 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115388 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119833 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115389 .unused,119834 .unused,
115390 .unused,119835 .unused,
115391 .unused,119836 .unused,
...@@ -115395,15 +119840,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115395,15 +119840,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115395 .dst_temps = .{ .mem, .unused },119840 .dst_temps = .{ .mem, .unused },
115396 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115397 .each = .{ .once = &.{119842 .each = .{ .once = &.{
115398 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },119843 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
115399 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119844 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115400 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },119845 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115401 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },119846 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115402 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },119847 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115403 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },119848 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
115404 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },119849 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
115405 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },119850 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
115406 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119851 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115407 } },119852 } },
115408 }, .{119853 }, .{
115409 .required_features = .{ .@"64bit", .sse, null, null },119854 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -115415,11 +119860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115415,11 +119860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115415 .call_frame = .{ .alignment = .@"16" },119860 .call_frame = .{ .alignment = .@"16" },
115416 .extra_temps = .{119861 .extra_temps = .{
115417 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },119862 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },119863 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115419 .{ .type = .usize, .kind = .{ .reg = .rdi } },119864 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115420 .{ .type = .usize, .kind = .{ .reg = .rsi } },119865 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115421 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },119866 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115422 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },119867 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115423 .unused,119868 .unused,
115424 .unused,119869 .unused,
115425 .unused,119870 .unused,
...@@ -115429,15 +119874,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115429,15 +119874,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115429 .dst_temps = .{ .mem, .unused },119874 .dst_temps = .{ .mem, .unused },
115430 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },119875 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115431 .each = .{ .once = &.{119876 .each = .{ .once = &.{
115432 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },119877 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
115433 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },119878 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115434 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },119879 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115435 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },119880 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115436 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },119881 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115437 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },119882 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
115438 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },119883 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
115439 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },119884 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
115440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },119885 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115441 } },119886 } },
115442 }, .{119887 }, .{
115443 .required_features = .{ .x87, null, null, null },119888 .required_features = .{ .x87, null, null, null },
...@@ -115627,6 +120072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115627,6 +120072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115627 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },120072 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115628 } },120073 } },
115629 }, .{120074 }, .{
120075 .required_abi = .gnu,
115630 .required_features = .{ .x87, null, null, null },120076 .required_features = .{ .x87, null, null, null },
115631 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },120077 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
115632 .dst_constraints = .{ .{ .float = .tbyte }, .any },120078 .dst_constraints = .{ .{ .float = .tbyte }, .any },
...@@ -115634,10 +120080,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115634,10 +120080,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115634 .{ .src = .{ .to_mem, .none, .none } },120080 .{ .src = .{ .to_mem, .none, .none } },
115635 },120081 },
115636 .extra_temps = .{120082 .extra_temps = .{
120083 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115637 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120084 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115638 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
115639 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },120085 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },
115640 .{ .type = .f80, .kind = .{ .reg = .st7 } },120086 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
115641 .unused,120087 .unused,
115642 .unused,120088 .unused,
115643 .unused,120089 .unused,
...@@ -115650,18 +120096,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115650,18 +120096,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115650 .clobbers = .{ .eflags = true },120096 .clobbers = .{ .eflags = true },
115651 .each = .{ .once = &.{120097 .each = .{ .once = &.{
115652 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },120098 .{ ._, .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, ._, ._, ._ },
115654 .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ },120130 .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ },
115655 .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ },120131 .{ ._, ._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, ._, ._, ._ },
115657 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },120140 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115658 } },120141 } },
115659 }, .{120142 }, .{
115660 .required_features = .{ .@"64bit", .sse, null, null },120143 .required_cc_abi = .sysv64,
120144 .required_features = .{ .sse, null, null, null },
115661 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },120145 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
115662 .dst_constraints = .{ .{ .float = .tbyte }, .any },120146 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115663 .patterns = &.{120147 .patterns = &.{
115664 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },120148 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
115665 },120149 },
115666 .call_frame = .{ .alignment = .@"16" },120150 .call_frame = .{ .alignment = .@"16" },
115667 .extra_temps = .{120151 .extra_temps = .{
...@@ -115683,11 +120167,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115683,11 +120167,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115683 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },120167 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
115684 } },120168 } },
115685 }, .{120169 }, .{
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 },
115687 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },120200 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
115688 .dst_constraints = .{ .{ .float = .tbyte }, .any },120201 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115689 .patterns = &.{120202 .patterns = &.{
115690 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },120203 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
115691 },120204 },
115692 .call_frame = .{ .alignment = .@"16" },120205 .call_frame = .{ .alignment = .@"16" },
115693 .extra_temps = .{120206 .extra_temps = .{
...@@ -115709,7 +120222,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115709,7 +120222,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115709 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },120222 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
115710 } },120223 } },
115711 }, .{120224 }, .{
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 },
115713 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },120255 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115714 .dst_constraints = .{ .{ .float = .tbyte }, .any },120256 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115715 .patterns = &.{120257 .patterns = &.{
...@@ -115717,8 +120259,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115717,8 +120259,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115717 },120259 },
115718 .call_frame = .{ .alignment = .@"16" },120260 .call_frame = .{ .alignment = .@"16" },
115719 .extra_temps = .{120261 .extra_temps = .{
115720 .{ .type = .usize, .kind = .{ .reg = .rdi } },120262 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115721 .{ .type = .usize, .kind = .{ .reg = .rsi } },120263 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115722 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },120264 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
115723 .unused,120265 .unused,
115724 .unused,120266 .unused,
...@@ -115737,7 +120279,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115737,7 +120279,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115737 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },120279 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115738 } },120280 } },
115739 }, .{120281 }, .{
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 },
115741 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },120314 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115742 .dst_constraints = .{ .{ .float = .tbyte }, .any },120315 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115743 .patterns = &.{120316 .patterns = &.{
...@@ -115745,8 +120318,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115745,8 +120318,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115745 },120318 },
115746 .call_frame = .{ .alignment = .@"16" },120319 .call_frame = .{ .alignment = .@"16" },
115747 .extra_temps = .{120320 .extra_temps = .{
115748 .{ .type = .usize, .kind = .{ .reg = .rdi } },120321 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115749 .{ .type = .usize, .kind = .{ .reg = .rsi } },120322 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115750 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },120323 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
115751 .unused,120324 .unused,
115752 .unused,120325 .unused,
...@@ -115764,6 +120337,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115764,6 +120337,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115764 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },120337 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
115765 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },120338 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115766 } },120339 } },
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 } },
115767 }, .{120370 }, .{
115768 .required_features = .{ .x87, .slow_incdec, null, null },120371 .required_features = .{ .x87, .slow_incdec, null, null },
115769 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },120372 .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 {...@@ -115772,7 +120375,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115772 .{ .src = .{ .to_mem, .none, .none } },120375 .{ .src = .{ .to_mem, .none, .none } },
115773 },120376 },
115774 .extra_temps = .{120377 .extra_temps = .{
115775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120378 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115776 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120379 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115777 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },120380 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115778 .{ .type = .i16, .kind = .mem },120381 .{ .type = .i16, .kind = .mem },
...@@ -115787,15 +120390,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115787,15 +120390,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115787 .dst_temps = .{ .mem, .unused },120390 .dst_temps = .{ .mem, .unused },
115788 .clobbers = .{ .eflags = true },120391 .clobbers = .{ .eflags = true },
115789 .each = .{ .once = &.{120392 .each = .{ .once = &.{
115790 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120393 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115791 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120394 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115792 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120395 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115793 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },120396 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115794 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },120397 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115795 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120398 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115796 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120399 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115797 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },120400 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115798 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },120401 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115799 } },120402 } },
115800 }, .{120403 }, .{
115801 .required_features = .{ .x87, null, null, null },120404 .required_features = .{ .x87, null, null, null },
...@@ -115805,7 +120408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115805,7 +120408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115805 .{ .src = .{ .to_mem, .none, .none } },120408 .{ .src = .{ .to_mem, .none, .none } },
115806 },120409 },
115807 .extra_temps = .{120410 .extra_temps = .{
115808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120411 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115809 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120412 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115810 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },120413 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115811 .{ .type = .i16, .kind = .mem },120414 .{ .type = .i16, .kind = .mem },
...@@ -115820,15 +120423,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115820,15 +120423,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115820 .dst_temps = .{ .mem, .unused },120423 .dst_temps = .{ .mem, .unused },
115821 .clobbers = .{ .eflags = true },120424 .clobbers = .{ .eflags = true },
115822 .each = .{ .once = &.{120425 .each = .{ .once = &.{
115823 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120426 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115824 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120427 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115825 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120428 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115826 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },120429 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115827 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },120430 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115828 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120431 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115829 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120432 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115830 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },120433 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115831 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },120434 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115832 } },120435 } },
115833 }, .{120436 }, .{
115834 .required_features = .{ .x87, .slow_incdec, null, null },120437 .required_features = .{ .x87, .slow_incdec, null, null },
...@@ -115838,7 +120441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115838,7 +120441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115838 .{ .src = .{ .to_mem, .none, .none } },120441 .{ .src = .{ .to_mem, .none, .none } },
115839 },120442 },
115840 .extra_temps = .{120443 .extra_temps = .{
115841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120444 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115842 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120445 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115843 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },120446 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115844 .{ .type = .i16, .kind = .mem },120447 .{ .type = .i16, .kind = .mem },
...@@ -115853,15 +120456,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115853,15 +120456,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115853 .dst_temps = .{ .mem, .unused },120456 .dst_temps = .{ .mem, .unused },
115854 .clobbers = .{ .eflags = true },120457 .clobbers = .{ .eflags = true },
115855 .each = .{ .once = &.{120458 .each = .{ .once = &.{
115856 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120459 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115857 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120460 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115858 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120461 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115859 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },120462 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115860 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },120463 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115861 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120464 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115862 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120465 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115863 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },120466 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },120467 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115865 } },120468 } },
115866 }, .{120469 }, .{
115867 .required_features = .{ .x87, null, null, null },120470 .required_features = .{ .x87, null, null, null },
...@@ -115871,7 +120474,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115871,7 +120474,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115871 .{ .src = .{ .to_mem, .none, .none } },120474 .{ .src = .{ .to_mem, .none, .none } },
115872 },120475 },
115873 .extra_temps = .{120476 .extra_temps = .{
115874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120477 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115875 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120478 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115876 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },120479 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115877 .{ .type = .i16, .kind = .mem },120480 .{ .type = .i16, .kind = .mem },
...@@ -115886,17 +120489,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115886,17 +120489,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115886 .dst_temps = .{ .mem, .unused },120489 .dst_temps = .{ .mem, .unused },
115887 .clobbers = .{ .eflags = true },120490 .clobbers = .{ .eflags = true },
115888 .each = .{ .once = &.{120491 .each = .{ .once = &.{
115889 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120492 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115890 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120493 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115891 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120494 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115892 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },120495 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115893 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },120496 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115894 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120497 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115895 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120498 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115896 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },120499 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115897 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },120500 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115898 } },120501 } },
115899 }, .{120502 }, .{
120503 .required_cc_abi = .sysv64,
115900 .required_features = .{ .x87, .slow_incdec, null, null },120504 .required_features = .{ .x87, .slow_incdec, null, null },
115901 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },120505 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115902 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120506 .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 {...@@ -115905,9 +120509,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115905 },120509 },
115906 .call_frame = .{ .alignment = .@"16" },120510 .call_frame = .{ .alignment = .@"16" },
115907 .extra_temps = .{120511 .extra_temps = .{
115908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120512 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115909 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120513 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115910 .{ .type = .i32, .kind = .{ .reg = .edi } },120514 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115911 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },120515 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115912 .{ .type = .f80, .kind = .{ .reg = .st7 } },120516 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115913 .unused,120517 .unused,
...@@ -115920,17 +120524,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115920,17 +120524,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115920 .dst_temps = .{ .mem, .unused },120524 .dst_temps = .{ .mem, .unused },
115921 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120525 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115922 .each = .{ .once = &.{120526 .each = .{ .once = &.{
115923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120527 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115924 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120528 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115925 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120529 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115926 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },120530 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115927 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120531 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115928 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120532 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115929 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120533 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115930 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },120534 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115931 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },120535 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115932 } },120536 } },
115933 }, .{120537 }, .{
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,
115934 .required_features = .{ .x87, null, null, null },120573 .required_features = .{ .x87, null, null, null },
115935 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },120574 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115936 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120575 .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 {...@@ -115939,9 +120578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115939 },120578 },
115940 .call_frame = .{ .alignment = .@"16" },120579 .call_frame = .{ .alignment = .@"16" },
115941 .extra_temps = .{120580 .extra_temps = .{
115942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120581 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115943 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120582 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115944 .{ .type = .i32, .kind = .{ .reg = .edi } },120583 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115945 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },120584 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115946 .{ .type = .f80, .kind = .{ .reg = .st7 } },120585 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115947 .unused,120586 .unused,
...@@ -115954,17 +120593,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115954,17 +120593,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115954 .dst_temps = .{ .mem, .unused },120593 .dst_temps = .{ .mem, .unused },
115955 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115956 .each = .{ .once = &.{120595 .each = .{ .once = &.{
115957 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120596 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115958 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120597 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115959 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120598 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115960 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },120599 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115961 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120600 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115962 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120601 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115963 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120602 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115964 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },120603 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115965 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
115966 } },120638 } },
115967 }, .{120639 }, .{
120640 .required_cc_abi = .sysv64,
115968 .required_features = .{ .x87, .slow_incdec, null, null },120641 .required_features = .{ .x87, .slow_incdec, null, null },
115969 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },120642 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115970 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120643 .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 {...@@ -115973,9 +120646,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115973 },120646 },
115974 .call_frame = .{ .alignment = .@"16" },120647 .call_frame = .{ .alignment = .@"16" },
115975 .extra_temps = .{120648 .extra_temps = .{
115976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120649 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115977 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120650 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115978 .{ .type = .u32, .kind = .{ .reg = .edi } },120651 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115979 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },120652 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
115980 .{ .type = .f80, .kind = .{ .reg = .st7 } },120653 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115981 .unused,120654 .unused,
...@@ -115988,17 +120661,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115988,17 +120661,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115988 .dst_temps = .{ .mem, .unused },120661 .dst_temps = .{ .mem, .unused },
115989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115990 .each = .{ .once = &.{120663 .each = .{ .once = &.{
115991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120664 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115992 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120665 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
115993 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120666 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115994 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },120667 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115995 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120668 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115996 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120669 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115997 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120670 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
115998 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },120671 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115999 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
116000 } },120707 } },
116001 }, .{120708 }, .{
120709 .required_cc_abi = .sysv64,
116002 .required_features = .{ .x87, null, null, null },120710 .required_features = .{ .x87, null, null, null },
116003 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },120711 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
116004 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120712 .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 {...@@ -116007,9 +120715,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116007 },120715 },
116008 .call_frame = .{ .alignment = .@"16" },120716 .call_frame = .{ .alignment = .@"16" },
116009 .extra_temps = .{120717 .extra_temps = .{
116010 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116011 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },120719 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116012 .{ .type = .u32, .kind = .{ .reg = .edi } },120720 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116013 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },120721 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116014 .{ .type = .f80, .kind = .{ .reg = .st7 } },120722 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116015 .unused,120723 .unused,
...@@ -116022,15 +120730,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116022,15 +120730,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116022 .dst_temps = .{ .mem, .unused },120730 .dst_temps = .{ .mem, .unused },
116023 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116024 .each = .{ .once = &.{120732 .each = .{ .once = &.{
116025 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120733 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116026 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },120734 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116027 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },120735 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116028 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },120736 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116029 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120737 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116030 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },120738 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
116031 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },120739 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116032 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },120740 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
116033 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
116034 } },120775 } },
116035 }, .{120776 }, .{
116036 .required_features = .{ .x87, null, null, null },120777 .required_features = .{ .x87, null, null, null },
...@@ -116040,7 +120781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116040,7 +120781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116040 .{ .src = .{ .to_mem, .none, .none } },120781 .{ .src = .{ .to_mem, .none, .none } },
116041 },120782 },
116042 .extra_temps = .{120783 .extra_temps = .{
116043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116044 .{ .type = .f80, .kind = .{ .reg = .st7 } },120785 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116045 .unused,120786 .unused,
116046 .unused,120787 .unused,
...@@ -116055,13 +120796,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116055,13 +120796,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116055 .dst_temps = .{ .mem, .unused },120796 .dst_temps = .{ .mem, .unused },
116056 .clobbers = .{ .eflags = true },120797 .clobbers = .{ .eflags = true },
116057 .each = .{ .once = &.{120798 .each = .{ .once = &.{
116058 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120799 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
116059 .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ },120800 .{ .@"0:", .fi_, .ld, .memi(.src0w, .tmp0), ._, ._, ._ },
116060 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },120801 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
116061 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },120802 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
116062 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },120803 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116063 } },120804 } },
116064 }, .{120805 }, .{
120806 .required_cc_abi = .sysv64,
116065 .required_features = .{ .x87, null, null, null },120807 .required_features = .{ .x87, null, null, null },
116066 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },120808 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
116067 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120809 .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 {...@@ -116070,8 +120812,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116070 },120812 },
116071 .call_frame = .{ .alignment = .@"16" },120813 .call_frame = .{ .alignment = .@"16" },
116072 .extra_temps = .{120814 .extra_temps = .{
116073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120815 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116074 .{ .type = .i32, .kind = .{ .reg = .edi } },120816 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116075 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },120817 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116076 .{ .type = .f80, .kind = .{ .reg = .st7 } },120818 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116077 .unused,120819 .unused,
...@@ -116085,15 +120827,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116085,15 +120827,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116085 .dst_temps = .{ .mem, .unused },120827 .dst_temps = .{ .mem, .unused },
116086 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120828 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116087 .each = .{ .once = &.{120829 .each = .{ .once = &.{
116088 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120830 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
116089 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },120831 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
116090 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },120832 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116091 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120833 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116092 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },120834 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
116093 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },120835 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
116094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },120836 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116095 } },120837 } },
116096 }, .{120838 }, .{
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,
116097 .required_features = .{ .x87, null, null, null },120871 .required_features = .{ .x87, null, null, null },
116098 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },120872 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
116099 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120873 .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 {...@@ -116102,8 +120876,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116102 },120876 },
116103 .call_frame = .{ .alignment = .@"16" },120877 .call_frame = .{ .alignment = .@"16" },
116104 .extra_temps = .{120878 .extra_temps = .{
116105 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120879 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116106 .{ .type = .u32, .kind = .{ .reg = .edi } },120880 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116107 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },120881 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116108 .{ .type = .f80, .kind = .{ .reg = .st7 } },120882 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116109 .unused,120883 .unused,
...@@ -116117,13 +120891,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116117,13 +120891,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116117 .dst_temps = .{ .mem, .unused },120891 .dst_temps = .{ .mem, .unused },
116118 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116119 .each = .{ .once = &.{120893 .each = .{ .once = &.{
116120 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120894 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
116121 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },120895 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
116122 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },120896 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116123 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120897 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116124 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },120898 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
116125 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },120899 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
116126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
116127 } },120932 } },
116128 }, .{120933 }, .{
116129 .required_features = .{ .x87, null, null, null },120934 .required_features = .{ .x87, null, null, null },
...@@ -116133,7 +120938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116133,7 +120938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116133 .{ .src = .{ .to_mem, .none, .none } },120938 .{ .src = .{ .to_mem, .none, .none } },
116134 },120939 },
116135 .extra_temps = .{120940 .extra_temps = .{
116136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120941 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116137 .{ .type = .f80, .kind = .{ .reg = .st7 } },120942 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116138 .unused,120943 .unused,
116139 .unused,120944 .unused,
...@@ -116148,13 +120953,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116148,13 +120953,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116148 .dst_temps = .{ .mem, .unused },120953 .dst_temps = .{ .mem, .unused },
116149 .clobbers = .{ .eflags = true },120954 .clobbers = .{ .eflags = true },
116150 .each = .{ .once = &.{120955 .each = .{ .once = &.{
116151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120956 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
116152 .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },120957 .{ .@"0:", .fi_, .ld, .memi(.src0d, .tmp0), ._, ._, ._ },
116153 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },120958 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
116154 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },120959 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116155 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },120960 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116156 } },120961 } },
116157 }, .{120962 }, .{
120963 .required_cc_abi = .sysv64,
116158 .required_features = .{ .x87, null, null, null },120964 .required_features = .{ .x87, null, null, null },
116159 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },120965 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116160 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },120966 .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 {...@@ -116163,8 +120969,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116163 },120969 },
116164 .call_frame = .{ .alignment = .@"16" },120970 .call_frame = .{ .alignment = .@"16" },
116165 .extra_temps = .{120971 .extra_temps = .{
116166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },120972 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116167 .{ .type = .i32, .kind = .{ .reg = .edi } },120973 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116168 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },120974 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116169 .{ .type = .f80, .kind = .{ .reg = .st7 } },120975 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116170 .unused,120976 .unused,
...@@ -116178,15 +120984,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116178,15 +120984,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116178 .dst_temps = .{ .mem, .unused },120984 .dst_temps = .{ .mem, .unused },
116179 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },120985 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116180 .each = .{ .once = &.{120986 .each = .{ .once = &.{
116181 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },120987 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
116182 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },120988 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
116183 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },120989 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116184 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },120990 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116185 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },120991 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
116186 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },120992 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116187 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
116188 } },121025 } },
116189 }, .{121026 }, .{
121027 .required_cc_abi = .sysv64,
116190 .required_features = .{ .x87, null, null, null },121028 .required_features = .{ .x87, null, null, null },
116191 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },121029 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116192 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121030 .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 {...@@ -116195,8 +121033,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116195 },121033 },
116196 .call_frame = .{ .alignment = .@"16" },121034 .call_frame = .{ .alignment = .@"16" },
116197 .extra_temps = .{121035 .extra_temps = .{
116198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121036 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116199 .{ .type = .u32, .kind = .{ .reg = .edi } },121037 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116200 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },121038 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116201 .{ .type = .f80, .kind = .{ .reg = .st7 } },121039 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116202 .unused,121040 .unused,
...@@ -116210,13 +121048,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116210,13 +121048,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116210 .dst_temps = .{ .mem, .unused },121048 .dst_temps = .{ .mem, .unused },
116211 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121049 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116212 .each = .{ .once = &.{121050 .each = .{ .once = &.{
116213 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121051 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
116214 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },121052 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
116215 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },121053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116216 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121054 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116217 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },121055 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
116218 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },121056 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116219 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
116220 } },121089 } },
116221 }, .{121090 }, .{
116222 .required_features = .{ .x87, null, null, null },121091 .required_features = .{ .x87, null, null, null },
...@@ -116226,7 +121095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116226,7 +121095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116226 .{ .src = .{ .to_mem, .none, .none } },121095 .{ .src = .{ .to_mem, .none, .none } },
116227 },121096 },
116228 .extra_temps = .{121097 .extra_temps = .{
116229 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121098 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116230 .{ .type = .f80, .kind = .{ .reg = .st7 } },121099 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116231 .unused,121100 .unused,
116232 .unused,121101 .unused,
...@@ -116241,14 +121110,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116241,14 +121110,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116241 .dst_temps = .{ .mem, .unused },121110 .dst_temps = .{ .mem, .unused },
116242 .clobbers = .{ .eflags = true },121111 .clobbers = .{ .eflags = true },
116243 .each = .{ .once = &.{121112 .each = .{ .once = &.{
116244 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121113 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
116245 .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },121114 .{ .@"0:", .fi_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
116246 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },121115 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
116247 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },121116 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
116248 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121117 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116249 } },121118 } },
116250 }, .{121119 }, .{
116251 .required_features = .{ .@"64bit", .x87, null, null },121120 .required_cc_abi = .sysv64,
121121 .required_features = .{ .x87, null, null, null },
116252 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },121122 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116253 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121123 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116254 .patterns = &.{121124 .patterns = &.{
...@@ -116256,8 +121126,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116256,8 +121126,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116256 },121126 },
116257 .call_frame = .{ .alignment = .@"16" },121127 .call_frame = .{ .alignment = .@"16" },
116258 .extra_temps = .{121128 .extra_temps = .{
116259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116260 .{ .type = .i64, .kind = .{ .reg = .rdi } },121130 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116261 .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },121131 .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },
116262 .{ .type = .f80, .kind = .{ .reg = .st7 } },121132 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116263 .unused,121133 .unused,
...@@ -116271,16 +121141,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116271,16 +121141,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116271 .dst_temps = .{ .mem, .unused },121141 .dst_temps = .{ .mem, .unused },
116272 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116273 .each = .{ .once = &.{121143 .each = .{ .once = &.{
116274 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121144 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
116275 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },121145 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
116276 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },121146 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116277 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121147 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116278 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },121148 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
116279 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },121149 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
116280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121150 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116281 } },121151 } },
116282 }, .{121152 }, .{
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 },
116284 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },121186 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116285 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121187 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116286 .patterns = &.{121188 .patterns = &.{
...@@ -116288,8 +121190,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116288,8 +121190,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116288 },121190 },
116289 .call_frame = .{ .alignment = .@"16" },121191 .call_frame = .{ .alignment = .@"16" },
116290 .extra_temps = .{121192 .extra_temps = .{
116291 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116292 .{ .type = .u64, .kind = .{ .reg = .rdi } },121194 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116293 .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },121195 .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },
116294 .{ .type = .f80, .kind = .{ .reg = .st7 } },121196 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116295 .unused,121197 .unused,
...@@ -116303,16 +121205,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116303,16 +121205,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116303 .dst_temps = .{ .mem, .unused },121205 .dst_temps = .{ .mem, .unused },
116304 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121206 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116305 .each = .{ .once = &.{121207 .each = .{ .once = &.{
116306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121208 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
116307 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },121209 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
116308 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },121210 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116309 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121211 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116310 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },121212 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
116311 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },121213 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
116312 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121214 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116313 } },121215 } },
116314 }, .{121216 }, .{
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 },
116316 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },121250 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116317 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121251 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116318 .patterns = &.{121252 .patterns = &.{
...@@ -116320,9 +121254,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116320,9 +121254,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116320 },121254 },
116321 .call_frame = .{ .alignment = .@"16" },121255 .call_frame = .{ .alignment = .@"16" },
116322 .extra_temps = .{121256 .extra_temps = .{
116323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121257 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116324 .{ .type = .u64, .kind = .{ .reg = .rdi } },121258 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116325 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116326 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },121259 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
116327 .{ .type = .f80, .kind = .{ .reg = .st7 } },121260 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116328 .unused,121261 .unused,
...@@ -116331,21 +121264,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116331,21 +121264,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116331 .unused,121264 .unused,
116332 .unused,121265 .unused,
116333 .unused,121266 .unused,
121267 .unused,
116334 },121268 },
116335 .dst_temps = .{ .mem, .unused },121269 .dst_temps = .{ .mem, .unused },
116336 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116337 .each = .{ .once = &.{121271 .each = .{ .once = &.{
116338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121272 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
116339 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },121273 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
116340 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },121274 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
116341 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },121275 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116342 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121276 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116343 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },121277 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
116344 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },121278 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121279 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116346 } },121280 } },
116347 }, .{121281 }, .{
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 },
116349 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },121315 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116350 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121316 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116351 .patterns = &.{121317 .patterns = &.{
...@@ -116353,9 +121319,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116353,9 +121319,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116353 },121319 },
116354 .call_frame = .{ .alignment = .@"16" },121320 .call_frame = .{ .alignment = .@"16" },
116355 .extra_temps = .{121321 .extra_temps = .{
116356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121322 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116357 .{ .type = .u64, .kind = .{ .reg = .rdi } },121323 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116358 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116359 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },121324 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
116360 .{ .type = .f80, .kind = .{ .reg = .st7 } },121325 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116361 .unused,121326 .unused,
...@@ -116364,21 +121329,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116364,21 +121329,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116364 .unused,121329 .unused,
116365 .unused,121330 .unused,
116366 .unused,121331 .unused,
121332 .unused,
116367 },121333 },
116368 .dst_temps = .{ .mem, .unused },121334 .dst_temps = .{ .mem, .unused },
116369 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121335 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116370 .each = .{ .once = &.{121336 .each = .{ .once = &.{
116371 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121337 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
116372 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },121338 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
116373 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },121339 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
116374 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },121340 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116375 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121341 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116376 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },121342 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
116377 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },121343 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116378 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121344 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116379 } },121345 } },
116380 }, .{121346 }, .{
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 },
116382 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },121380 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116383 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121381 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116384 .patterns = &.{121382 .patterns = &.{
...@@ -116387,9 +121385,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116387,9 +121385,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116387 .call_frame = .{ .alignment = .@"16" },121385 .call_frame = .{ .alignment = .@"16" },
116388 .extra_temps = .{121386 .extra_temps = .{
116389 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },121387 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121388 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116391 .{ .type = .usize, .kind = .{ .reg = .rdi } },121389 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116392 .{ .type = .usize, .kind = .{ .reg = .rsi } },121390 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116393 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },121391 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
116394 .{ .type = .f80, .kind = .{ .reg = .st7 } },121392 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116395 .unused,121393 .unused,
...@@ -116401,19 +121399,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116401,19 +121399,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116401 .dst_temps = .{ .mem, .unused },121399 .dst_temps = .{ .mem, .unused },
116402 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121400 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116403 .each = .{ .once = &.{121401 .each = .{ .once = &.{
116404 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },121402 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
116405 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },121403 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
116406 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },121404 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116407 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },121405 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116408 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },121406 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116409 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121407 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116410 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },121408 .{ ._, .f_p, .st, .memi(.dst0t, .tmp1), ._, ._, ._ },
116411 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },121409 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
116412 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },121410 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
116413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121411 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116414 } },121412 } },
116415 }, .{121413 }, .{
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 },
116417 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },121450 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116418 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },121451 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116419 .patterns = &.{121452 .patterns = &.{
...@@ -116422,9 +121455,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116422,9 +121455,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116422 .call_frame = .{ .alignment = .@"16" },121455 .call_frame = .{ .alignment = .@"16" },
116423 .extra_temps = .{121456 .extra_temps = .{
116424 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },121457 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121458 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116426 .{ .type = .usize, .kind = .{ .reg = .rdi } },121459 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116427 .{ .type = .usize, .kind = .{ .reg = .rsi } },121460 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116428 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },121461 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
116429 .{ .type = .f80, .kind = .{ .reg = .st7 } },121462 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116430 .unused,121463 .unused,
...@@ -116436,16 +121469,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116436,16 +121469,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116436 .dst_temps = .{ .mem, .unused },121469 .dst_temps = .{ .mem, .unused },
116437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116438 .each = .{ .once = &.{121471 .each = .{ .once = &.{
116439 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },121472 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
116440 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },121473 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
116441 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },121474 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116442 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },121475 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116443 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },121476 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116444 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },121477 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116445 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },121478 .{ ._, .f_p, .st, .memi(.dst0t, .tmp1), ._, ._, ._ },
116446 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },121479 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
116447 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },121480 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
116448 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
116449 } },121516 } },
116450 }, .{121517 }, .{
116451 .required_features = .{ .sse, null, null, null },121518 .required_features = .{ .sse, null, null, null },
...@@ -116457,7 +121524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116457,7 +121524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116457 },121524 },
116458 .call_frame = .{ .alignment = .@"16" },121525 .call_frame = .{ .alignment = .@"16" },
116459 .extra_temps = .{121526 .extra_temps = .{
116460 .{ .type = .i32, .kind = .{ .reg = .edi } },121527 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116461 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },121528 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116462 .unused,121529 .unused,
116463 .unused,121530 .unused,
...@@ -116469,7 +121536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116469,7 +121536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116469 .unused,121536 .unused,
116470 .unused,121537 .unused,
116471 },121538 },
116472 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121539 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121540 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116474 .each = .{ .once = &.{121541 .each = .{ .once = &.{
116475 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },121542 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
...@@ -116485,7 +121552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116485,7 +121552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116485 },121552 },
116486 .call_frame = .{ .alignment = .@"16" },121553 .call_frame = .{ .alignment = .@"16" },
116487 .extra_temps = .{121554 .extra_temps = .{
116488 .{ .type = .u32, .kind = .{ .reg = .edi } },121555 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116489 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },121556 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116490 .unused,121557 .unused,
116491 .unused,121558 .unused,
...@@ -116497,7 +121564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116497,7 +121564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116497 .unused,121564 .unused,
116498 .unused,121565 .unused,
116499 },121566 },
116500 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121567 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116502 .each = .{ .once = &.{121569 .each = .{ .once = &.{
116503 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },121570 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
...@@ -116513,7 +121580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116513,7 +121580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116513 },121580 },
116514 .call_frame = .{ .alignment = .@"16" },121581 .call_frame = .{ .alignment = .@"16" },
116515 .extra_temps = .{121582 .extra_temps = .{
116516 .{ .type = .i32, .kind = .{ .reg = .edi } },121583 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116517 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },121584 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116518 .unused,121585 .unused,
116519 .unused,121586 .unused,
...@@ -116525,7 +121592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116525,7 +121592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116525 .unused,121592 .unused,
116526 .unused,121593 .unused,
116527 },121594 },
116528 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121595 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116529 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116530 .each = .{ .once = &.{121597 .each = .{ .once = &.{
116531 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },121598 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
...@@ -116541,7 +121608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116541,7 +121608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116541 },121608 },
116542 .call_frame = .{ .alignment = .@"16" },121609 .call_frame = .{ .alignment = .@"16" },
116543 .extra_temps = .{121610 .extra_temps = .{
116544 .{ .type = .u32, .kind = .{ .reg = .edi } },121611 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116545 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },121612 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116546 .unused,121613 .unused,
116547 .unused,121614 .unused,
...@@ -116553,7 +121620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116553,7 +121620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116553 .unused,121620 .unused,
116554 .unused,121621 .unused,
116555 },121622 },
116556 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121623 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116557 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121624 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116558 .each = .{ .once = &.{121625 .each = .{ .once = &.{
116559 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },121626 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
...@@ -116564,7 +121631,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116564,7 +121631,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116564 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },121631 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
116565 .dst_constraints = .{ .{ .float = .xword }, .any },121632 .dst_constraints = .{ .{ .float = .xword }, .any },
116566 .patterns = &.{121633 .patterns = &.{
116567 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },121634 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116568 },121635 },
116569 .call_frame = .{ .alignment = .@"16" },121636 .call_frame = .{ .alignment = .@"16" },
116570 .extra_temps = .{121637 .extra_temps = .{
...@@ -116580,7 +121647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116580,7 +121647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116580 .unused,121647 .unused,
116581 .unused,121648 .unused,
116582 },121649 },
116583 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121650 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121651 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116585 .each = .{ .once = &.{121652 .each = .{ .once = &.{
116586 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },121653 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -116590,7 +121657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116590,7 +121657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116590 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },121657 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
116591 .dst_constraints = .{ .{ .float = .xword }, .any },121658 .dst_constraints = .{ .{ .float = .xword }, .any },
116592 .patterns = &.{121659 .patterns = &.{
116593 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },121660 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116594 },121661 },
116595 .call_frame = .{ .alignment = .@"16" },121662 .call_frame = .{ .alignment = .@"16" },
116596 .extra_temps = .{121663 .extra_temps = .{
...@@ -116606,7 +121673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116606,7 +121673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116606 .unused,121673 .unused,
116607 .unused,121674 .unused,
116608 },121675 },
116609 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121676 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116610 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121677 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116611 .each = .{ .once = &.{121678 .each = .{ .once = &.{
116612 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },121679 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -116616,7 +121683,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116616,7 +121683,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116616 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },121683 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
116617 .dst_constraints = .{ .{ .float = .xword }, .any },121684 .dst_constraints = .{ .{ .float = .xword }, .any },
116618 .patterns = &.{121685 .patterns = &.{
116619 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },121686 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116620 },121687 },
116621 .call_frame = .{ .alignment = .@"16" },121688 .call_frame = .{ .alignment = .@"16" },
116622 .extra_temps = .{121689 .extra_temps = .{
...@@ -116632,7 +121699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116632,7 +121699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116632 .unused,121699 .unused,
116633 .unused,121700 .unused,
116634 },121701 },
116635 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121702 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121703 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116637 .each = .{ .once = &.{121704 .each = .{ .once = &.{
116638 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },121705 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -116642,7 +121709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116642,7 +121709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116642 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },121709 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
116643 .dst_constraints = .{ .{ .float = .xword }, .any },121710 .dst_constraints = .{ .{ .float = .xword }, .any },
116644 .patterns = &.{121711 .patterns = &.{
116645 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },121712 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116646 },121713 },
116647 .call_frame = .{ .alignment = .@"16" },121714 .call_frame = .{ .alignment = .@"16" },
116648 .extra_temps = .{121715 .extra_temps = .{
...@@ -116658,17 +121725,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116658,17 +121725,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116658 .unused,121725 .unused,
116659 .unused,121726 .unused,
116660 },121727 },
116661 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121728 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116663 .each = .{ .once = &.{121730 .each = .{ .once = &.{
116664 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },121731 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116665 } },121732 } },
116666 }, .{121733 }, .{
116667 .required_features = .{ .@"64bit", .sse, null, null },121734 .required_cc_abi = .sysv64,
121735 .required_features = .{ .sse, null, null, null },
116668 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },121736 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
116669 .dst_constraints = .{ .{ .float = .xword }, .any },121737 .dst_constraints = .{ .{ .float = .xword }, .any },
116670 .patterns = &.{121738 .patterns = &.{
116671 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },121739 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116672 },121740 },
116673 .call_frame = .{ .alignment = .@"16" },121741 .call_frame = .{ .alignment = .@"16" },
116674 .extra_temps = .{121742 .extra_temps = .{
...@@ -116684,17 +121752,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116684,17 +121752,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116684 .unused,121752 .unused,
116685 .unused,121753 .unused,
116686 },121754 },
116687 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121755 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121756 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116689 .each = .{ .once = &.{121757 .each = .{ .once = &.{
116690 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },121758 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116691 } },121759 } },
116692 }, .{121760 }, .{
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 },
116694 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },121791 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
116695 .dst_constraints = .{ .{ .float = .xword }, .any },121792 .dst_constraints = .{ .{ .float = .xword }, .any },
116696 .patterns = &.{121793 .patterns = &.{
116697 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },121794 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116698 },121795 },
116699 .call_frame = .{ .alignment = .@"16" },121796 .call_frame = .{ .alignment = .@"16" },
116700 .extra_temps = .{121797 .extra_temps = .{
...@@ -116710,11 +121807,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116710,11 +121807,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116710 .unused,121807 .unused,
116711 .unused,121808 .unused,
116712 },121809 },
116713 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121810 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116715 .each = .{ .once = &.{121812 .each = .{ .once = &.{
116716 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },121813 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116717 } },121814 } },
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 } },
116718 }, .{121843 }, .{
116719 .required_features = .{ .@"64bit", .sse, null, null },121844 .required_features = .{ .@"64bit", .sse, null, null },
116720 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },121845 .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 {...@@ -116724,8 +121849,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116724 },121849 },
116725 .call_frame = .{ .alignment = .@"16" },121850 .call_frame = .{ .alignment = .@"16" },
116726 .extra_temps = .{121851 .extra_temps = .{
116727 .{ .type = .usize, .kind = .{ .reg = .rdi } },121852 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116728 .{ .type = .usize, .kind = .{ .reg = .rsi } },121853 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116729 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },121854 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
116730 .unused,121855 .unused,
116731 .unused,121856 .unused,
...@@ -116736,7 +121861,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116736,7 +121861,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116736 .unused,121861 .unused,
116737 .unused,121862 .unused,
116738 },121863 },
116739 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121864 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116740 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121865 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116741 .each = .{ .once = &.{121866 .each = .{ .once = &.{
116742 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },121867 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -116752,8 +121877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116752,8 +121877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116752 },121877 },
116753 .call_frame = .{ .alignment = .@"16" },121878 .call_frame = .{ .alignment = .@"16" },
116754 .extra_temps = .{121879 .extra_temps = .{
116755 .{ .type = .usize, .kind = .{ .reg = .rdi } },121880 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116756 .{ .type = .usize, .kind = .{ .reg = .rsi } },121881 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116757 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },121882 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
116758 .unused,121883 .unused,
116759 .unused,121884 .unused,
...@@ -116764,7 +121889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116764,7 +121889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116764 .unused,121889 .unused,
116765 .unused,121890 .unused,
116766 },121891 },
116767 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },121892 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121893 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116769 .each = .{ .once = &.{121894 .each = .{ .once = &.{
116770 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },121895 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
...@@ -116780,11 +121905,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116780,11 +121905,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116780 },121905 },
116781 .call_frame = .{ .alignment = .@"16" },121906 .call_frame = .{ .alignment = .@"16" },
116782 .extra_temps = .{121907 .extra_temps = .{
116783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121908 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116784 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },121909 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116785 .{ .type = .i32, .kind = .{ .reg = .edi } },121910 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116786 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },121911 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116787 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },121912 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116788 .unused,121913 .unused,
116789 .unused,121914 .unused,
116790 .unused,121915 .unused,
...@@ -116795,14 +121920,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116795,14 +121920,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116795 .dst_temps = .{ .mem, .unused },121920 .dst_temps = .{ .mem, .unused },
116796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121921 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116797 .each = .{ .once = &.{121922 .each = .{ .once = &.{
116798 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121923 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116799 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },121924 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116800 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },121925 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116801 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },121926 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116802 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },121927 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116803 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },121928 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116804 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },121929 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
116805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121930 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116806 } },121931 } },
116807 }, .{121932 }, .{
116808 .required_features = .{ .avx, null, null, null },121933 .required_features = .{ .avx, null, null, null },
...@@ -116813,11 +121938,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116813,11 +121938,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116813 },121938 },
116814 .call_frame = .{ .alignment = .@"16" },121939 .call_frame = .{ .alignment = .@"16" },
116815 .extra_temps = .{121940 .extra_temps = .{
116816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121941 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116817 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },121942 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116818 .{ .type = .i32, .kind = .{ .reg = .edi } },121943 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116819 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },121944 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116820 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },121945 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116821 .unused,121946 .unused,
116822 .unused,121947 .unused,
116823 .unused,121948 .unused,
...@@ -116828,14 +121953,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116828,14 +121953,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116828 .dst_temps = .{ .mem, .unused },121953 .dst_temps = .{ .mem, .unused },
116829 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116830 .each = .{ .once = &.{121955 .each = .{ .once = &.{
116831 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121956 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116832 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },121957 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116833 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },121958 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116834 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },121959 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116835 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },121960 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116836 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },121961 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116837 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },121962 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
116838 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },121963 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116839 } },121964 } },
116840 }, .{121965 }, .{
116841 .required_features = .{ .sse2, .slow_incdec, null, null },121966 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -116846,11 +121971,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116846,11 +121971,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116846 },121971 },
116847 .call_frame = .{ .alignment = .@"16" },121972 .call_frame = .{ .alignment = .@"16" },
116848 .extra_temps = .{121973 .extra_temps = .{
116849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },121974 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116850 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },121975 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116851 .{ .type = .i32, .kind = .{ .reg = .edi } },121976 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116852 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },121977 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116853 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },121978 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116854 .unused,121979 .unused,
116855 .unused,121980 .unused,
116856 .unused,121981 .unused,
...@@ -116861,14 +121986,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116861,14 +121986,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116861 .dst_temps = .{ .mem, .unused },121986 .dst_temps = .{ .mem, .unused },
116862 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },121987 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116863 .each = .{ .once = &.{121988 .each = .{ .once = &.{
116864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },121989 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116865 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },121990 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116866 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },121991 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116867 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },121992 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116868 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },121993 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116869 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },121994 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116870 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },121995 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
116871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },121996 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116872 } },121997 } },
116873 }, .{121998 }, .{
116874 .required_features = .{ .sse2, null, null, null },121999 .required_features = .{ .sse2, null, null, null },
...@@ -116879,11 +122004,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116879,11 +122004,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116879 },122004 },
116880 .call_frame = .{ .alignment = .@"16" },122005 .call_frame = .{ .alignment = .@"16" },
116881 .extra_temps = .{122006 .extra_temps = .{
116882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122007 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116883 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122008 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116884 .{ .type = .i32, .kind = .{ .reg = .edi } },122009 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116885 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122010 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116886 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122011 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116887 .unused,122012 .unused,
116888 .unused,122013 .unused,
116889 .unused,122014 .unused,
...@@ -116894,14 +122019,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116894,14 +122019,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116894 .dst_temps = .{ .mem, .unused },122019 .dst_temps = .{ .mem, .unused },
116895 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116896 .each = .{ .once = &.{122021 .each = .{ .once = &.{
116897 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122022 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116898 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122023 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116899 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122024 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116900 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122025 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116901 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },122026 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116902 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122027 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116903 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },122028 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
116904 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },122029 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116905 } },122030 } },
116906 }, .{122031 }, .{
116907 .required_features = .{ .sse, .slow_incdec, null, null },122032 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -116912,11 +122037,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116912,11 +122037,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116912 },122037 },
116913 .call_frame = .{ .alignment = .@"16" },122038 .call_frame = .{ .alignment = .@"16" },
116914 .extra_temps = .{122039 .extra_temps = .{
116915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122040 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116916 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122041 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116917 .{ .type = .i32, .kind = .{ .reg = .edi } },122042 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116918 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122043 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122044 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116920 .unused,122045 .unused,
116921 .unused,122046 .unused,
116922 .unused,122047 .unused,
...@@ -116927,14 +122052,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116927,14 +122052,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116927 .dst_temps = .{ .mem, .unused },122052 .dst_temps = .{ .mem, .unused },
116928 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116929 .each = .{ .once = &.{122054 .each = .{ .once = &.{
116930 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122055 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116931 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122056 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116932 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122057 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116933 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122058 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116934 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },122059 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
116935 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122060 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116936 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },122061 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
116937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122062 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116938 } },122063 } },
116939 }, .{122064 }, .{
116940 .required_features = .{ .sse, null, null, null },122065 .required_features = .{ .sse, null, null, null },
...@@ -116945,11 +122070,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116945,11 +122070,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116945 },122070 },
116946 .call_frame = .{ .alignment = .@"16" },122071 .call_frame = .{ .alignment = .@"16" },
116947 .extra_temps = .{122072 .extra_temps = .{
116948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122073 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116949 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122074 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116950 .{ .type = .i32, .kind = .{ .reg = .edi } },122075 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116951 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122076 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116952 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122077 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116953 .unused,122078 .unused,
116954 .unused,122079 .unused,
116955 .unused,122080 .unused,
...@@ -116960,14 +122085,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116960,14 +122085,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116960 .dst_temps = .{ .mem, .unused },122085 .dst_temps = .{ .mem, .unused },
116961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122086 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116962 .each = .{ .once = &.{122087 .each = .{ .once = &.{
116963 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122088 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116964 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122089 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116965 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122090 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116966 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122091 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116967 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },122092 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
116968 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122093 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
116969 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },122094 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
116970 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },122095 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116971 } },122096 } },
116972 }, .{122097 }, .{
116973 .required_features = .{ .avx, .slow_incdec, null, null },122098 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -116978,11 +122103,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116978,11 +122103,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116978 },122103 },
116979 .call_frame = .{ .alignment = .@"16" },122104 .call_frame = .{ .alignment = .@"16" },
116980 .extra_temps = .{122105 .extra_temps = .{
116981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122106 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116982 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122107 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116983 .{ .type = .u32, .kind = .{ .reg = .edi } },122108 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116984 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122109 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116985 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122110 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116986 .unused,122111 .unused,
116987 .unused,122112 .unused,
116988 .unused,122113 .unused,
...@@ -116993,14 +122118,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116993,14 +122118,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116993 .dst_temps = .{ .mem, .unused },122118 .dst_temps = .{ .mem, .unused },
116994 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116995 .each = .{ .once = &.{122120 .each = .{ .once = &.{
116996 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122121 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
116997 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122122 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
116998 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122123 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116999 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122124 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117000 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },122125 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117001 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122126 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
117002 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },122127 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
117003 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122128 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117004 } },122129 } },
117005 }, .{122130 }, .{
117006 .required_features = .{ .avx, null, null, null },122131 .required_features = .{ .avx, null, null, null },
...@@ -117011,11 +122136,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117011,11 +122136,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117011 },122136 },
117012 .call_frame = .{ .alignment = .@"16" },122137 .call_frame = .{ .alignment = .@"16" },
117013 .extra_temps = .{122138 .extra_temps = .{
117014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122139 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117015 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122140 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117016 .{ .type = .u32, .kind = .{ .reg = .edi } },122141 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117017 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122142 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117018 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122143 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117019 .unused,122144 .unused,
117020 .unused,122145 .unused,
117021 .unused,122146 .unused,
...@@ -117026,14 +122151,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117026,14 +122151,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117026 .dst_temps = .{ .mem, .unused },122151 .dst_temps = .{ .mem, .unused },
117027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122152 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117028 .each = .{ .once = &.{122153 .each = .{ .once = &.{
117029 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122154 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117030 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122155 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
117031 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122156 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117032 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122157 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117033 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },122158 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117034 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122159 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
117035 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },122160 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
117036 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },122161 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
117037 } },122162 } },
117038 }, .{122163 }, .{
117039 .required_features = .{ .sse2, .slow_incdec, null, null },122164 .required_features = .{ .sse2, .slow_incdec, null, null },
...@@ -117044,11 +122169,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117044,11 +122169,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117044 },122169 },
117045 .call_frame = .{ .alignment = .@"16" },122170 .call_frame = .{ .alignment = .@"16" },
117046 .extra_temps = .{122171 .extra_temps = .{
117047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117048 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122173 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117049 .{ .type = .u32, .kind = .{ .reg = .edi } },122174 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117050 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122175 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117051 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122176 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117052 .unused,122177 .unused,
117053 .unused,122178 .unused,
117054 .unused,122179 .unused,
...@@ -117059,14 +122184,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117059,14 +122184,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117059 .dst_temps = .{ .mem, .unused },122184 .dst_temps = .{ .mem, .unused },
117060 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117061 .each = .{ .once = &.{122186 .each = .{ .once = &.{
117062 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122187 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117063 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122188 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
117064 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122189 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117065 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122190 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117066 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },122191 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117067 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122192 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
117068 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },122193 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
117069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122194 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117070 } },122195 } },
117071 }, .{122196 }, .{
117072 .required_features = .{ .sse2, null, null, null },122197 .required_features = .{ .sse2, null, null, null },
...@@ -117077,11 +122202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117077,11 +122202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117077 },122202 },
117078 .call_frame = .{ .alignment = .@"16" },122203 .call_frame = .{ .alignment = .@"16" },
117079 .extra_temps = .{122204 .extra_temps = .{
117080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122205 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117081 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122206 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117082 .{ .type = .u32, .kind = .{ .reg = .edi } },122207 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117083 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122208 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117084 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122209 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117085 .unused,122210 .unused,
117086 .unused,122211 .unused,
117087 .unused,122212 .unused,
...@@ -117092,14 +122217,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117092,14 +122217,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117092 .dst_temps = .{ .mem, .unused },122217 .dst_temps = .{ .mem, .unused },
117093 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122218 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117094 .each = .{ .once = &.{122219 .each = .{ .once = &.{
117095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122220 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117096 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122221 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
117097 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122222 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117098 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122223 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117099 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },122224 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117100 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122225 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
117101 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },122226 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
117102 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },122227 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
117103 } },122228 } },
117104 }, .{122229 }, .{
117105 .required_features = .{ .sse, .slow_incdec, null, null },122230 .required_features = .{ .sse, .slow_incdec, null, null },
...@@ -117110,11 +122235,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117110,11 +122235,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117110 },122235 },
117111 .call_frame = .{ .alignment = .@"16" },122236 .call_frame = .{ .alignment = .@"16" },
117112 .extra_temps = .{122237 .extra_temps = .{
117113 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122238 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117114 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122239 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117115 .{ .type = .u32, .kind = .{ .reg = .edi } },122240 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117116 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122241 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117117 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122242 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117118 .unused,122243 .unused,
117119 .unused,122244 .unused,
117120 .unused,122245 .unused,
...@@ -117125,14 +122250,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117125,14 +122250,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117125 .dst_temps = .{ .mem, .unused },122250 .dst_temps = .{ .mem, .unused },
117126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122251 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117127 .each = .{ .once = &.{122252 .each = .{ .once = &.{
117128 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122253 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117129 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122254 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
117130 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122255 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117131 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122256 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117132 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },122257 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
117133 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122258 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
117134 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },122259 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
117135 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122260 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117136 } },122261 } },
117137 }, .{122262 }, .{
117138 .required_features = .{ .sse, null, null, null },122263 .required_features = .{ .sse, null, null, null },
...@@ -117143,11 +122268,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117143,11 +122268,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117143 },122268 },
117144 .call_frame = .{ .alignment = .@"16" },122269 .call_frame = .{ .alignment = .@"16" },
117145 .extra_temps = .{122270 .extra_temps = .{
117146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122271 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117147 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },122272 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117148 .{ .type = .u32, .kind = .{ .reg = .edi } },122273 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117149 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122274 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117150 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122275 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117151 .unused,122276 .unused,
117152 .unused,122277 .unused,
117153 .unused,122278 .unused,
...@@ -117158,14 +122283,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117158,14 +122283,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117158 .dst_temps = .{ .mem, .unused },122283 .dst_temps = .{ .mem, .unused },
117159 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117160 .each = .{ .once = &.{122285 .each = .{ .once = &.{
117161 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122286 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117162 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },122287 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
117163 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },122288 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117164 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122289 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117165 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },122290 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
117166 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },122291 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
117167 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },122292 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
117168 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },122293 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
117169 } },122294 } },
117170 }, .{122295 }, .{
117171 .required_features = .{ .avx, null, null, null },122296 .required_features = .{ .avx, null, null, null },
...@@ -117176,10 +122301,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117176,10 +122301,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117176 },122301 },
117177 .call_frame = .{ .alignment = .@"16" },122302 .call_frame = .{ .alignment = .@"16" },
117178 .extra_temps = .{122303 .extra_temps = .{
117179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122304 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117180 .{ .type = .i32, .kind = .{ .reg = .edi } },122305 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117181 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122306 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117182 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122307 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117183 .unused,122308 .unused,
117184 .unused,122309 .unused,
117185 .unused,122310 .unused,
...@@ -117191,12 +122316,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117191,12 +122316,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117191 .dst_temps = .{ .mem, .unused },122316 .dst_temps = .{ .mem, .unused },
117192 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122317 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117193 .each = .{ .once = &.{122318 .each = .{ .once = &.{
117194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122319 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
117195 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },122320 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117196 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122321 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117197 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122322 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
117198 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },122323 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117200 } },122325 } },
117201 }, .{122326 }, .{
117202 .required_features = .{ .sse2, null, null, null },122327 .required_features = .{ .sse2, null, null, null },
...@@ -117207,10 +122332,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117207,10 +122332,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117207 },122332 },
117208 .call_frame = .{ .alignment = .@"16" },122333 .call_frame = .{ .alignment = .@"16" },
117209 .extra_temps = .{122334 .extra_temps = .{
117210 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122335 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117211 .{ .type = .i32, .kind = .{ .reg = .edi } },122336 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117212 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122337 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117213 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122338 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117214 .unused,122339 .unused,
117215 .unused,122340 .unused,
117216 .unused,122341 .unused,
...@@ -117222,12 +122347,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117222,12 +122347,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117222 .dst_temps = .{ .mem, .unused },122347 .dst_temps = .{ .mem, .unused },
117223 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122348 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117224 .each = .{ .once = &.{122349 .each = .{ .once = &.{
117225 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122350 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
117226 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },122351 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117227 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122352 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117228 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122353 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
117229 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },122354 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122355 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117231 } },122356 } },
117232 }, .{122357 }, .{
117233 .required_features = .{ .sse, null, null, null },122358 .required_features = .{ .sse, null, null, null },
...@@ -117238,10 +122363,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117238,10 +122363,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117238 },122363 },
117239 .call_frame = .{ .alignment = .@"16" },122364 .call_frame = .{ .alignment = .@"16" },
117240 .extra_temps = .{122365 .extra_temps = .{
117241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122366 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117242 .{ .type = .i32, .kind = .{ .reg = .edi } },122367 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117243 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122368 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117244 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122369 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117245 .unused,122370 .unused,
117246 .unused,122371 .unused,
117247 .unused,122372 .unused,
...@@ -117253,12 +122378,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117253,12 +122378,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117253 .dst_temps = .{ .mem, .unused },122378 .dst_temps = .{ .mem, .unused },
117254 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117255 .each = .{ .once = &.{122380 .each = .{ .once = &.{
117256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122381 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
117257 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },122382 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117258 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122383 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117259 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122384 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
117260 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },122385 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122386 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117262 } },122387 } },
117263 }, .{122388 }, .{
117264 .required_features = .{ .avx, null, null, null },122389 .required_features = .{ .avx, null, null, null },
...@@ -117269,10 +122394,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117269,10 +122394,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117269 },122394 },
117270 .call_frame = .{ .alignment = .@"16" },122395 .call_frame = .{ .alignment = .@"16" },
117271 .extra_temps = .{122396 .extra_temps = .{
117272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122397 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117273 .{ .type = .u32, .kind = .{ .reg = .edi } },122398 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117274 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122399 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117275 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122400 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117276 .unused,122401 .unused,
117277 .unused,122402 .unused,
117278 .unused,122403 .unused,
...@@ -117284,12 +122409,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117284,12 +122409,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117284 .dst_temps = .{ .mem, .unused },122409 .dst_temps = .{ .mem, .unused },
117285 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122410 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117286 .each = .{ .once = &.{122411 .each = .{ .once = &.{
117287 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122412 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
117288 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },122413 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117289 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122414 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117290 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122415 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
117291 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },122416 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122417 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117293 } },122418 } },
117294 }, .{122419 }, .{
117295 .required_features = .{ .sse2, null, null, null },122420 .required_features = .{ .sse2, null, null, null },
...@@ -117300,10 +122425,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117300,10 +122425,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117300 },122425 },
117301 .call_frame = .{ .alignment = .@"16" },122426 .call_frame = .{ .alignment = .@"16" },
117302 .extra_temps = .{122427 .extra_temps = .{
117303 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122428 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117304 .{ .type = .u32, .kind = .{ .reg = .edi } },122429 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117305 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122430 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117306 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122431 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117307 .unused,122432 .unused,
117308 .unused,122433 .unused,
117309 .unused,122434 .unused,
...@@ -117315,12 +122440,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117315,12 +122440,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117315 .dst_temps = .{ .mem, .unused },122440 .dst_temps = .{ .mem, .unused },
117316 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117317 .each = .{ .once = &.{122442 .each = .{ .once = &.{
117318 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122443 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
117319 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },122444 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117320 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122445 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117321 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122446 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
117322 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },122447 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117323 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122448 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117324 } },122449 } },
117325 }, .{122450 }, .{
117326 .required_features = .{ .sse, null, null, null },122451 .required_features = .{ .sse, null, null, null },
...@@ -117331,10 +122456,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117331,10 +122456,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117331 },122456 },
117332 .call_frame = .{ .alignment = .@"16" },122457 .call_frame = .{ .alignment = .@"16" },
117333 .extra_temps = .{122458 .extra_temps = .{
117334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122459 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117335 .{ .type = .u32, .kind = .{ .reg = .edi } },122460 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117336 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122461 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117337 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122462 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117338 .unused,122463 .unused,
117339 .unused,122464 .unused,
117340 .unused,122465 .unused,
...@@ -117346,12 +122471,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117346,12 +122471,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117346 .dst_temps = .{ .mem, .unused },122471 .dst_temps = .{ .mem, .unused },
117347 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122472 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117348 .each = .{ .once = &.{122473 .each = .{ .once = &.{
117349 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122474 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
117350 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },122475 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117351 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122476 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117352 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122477 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
117353 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },122478 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122479 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117355 } },122480 } },
117356 }, .{122481 }, .{
117357 .required_features = .{ .avx, null, null, null },122482 .required_features = .{ .avx, null, null, null },
...@@ -117362,10 +122487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117362,10 +122487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117362 },122487 },
117363 .call_frame = .{ .alignment = .@"16" },122488 .call_frame = .{ .alignment = .@"16" },
117364 .extra_temps = .{122489 .extra_temps = .{
117365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122490 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117366 .{ .type = .i32, .kind = .{ .reg = .edi } },122491 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117367 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122492 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117368 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122493 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117369 .unused,122494 .unused,
117370 .unused,122495 .unused,
117371 .unused,122496 .unused,
...@@ -117377,12 +122502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117377,12 +122502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117377 .dst_temps = .{ .mem, .unused },122502 .dst_temps = .{ .mem, .unused },
117378 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122503 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117379 .each = .{ .once = &.{122504 .each = .{ .once = &.{
117380 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122505 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
117381 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },122506 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117382 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122507 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117383 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122508 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
117384 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },122509 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117385 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122510 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117386 } },122511 } },
117387 }, .{122512 }, .{
117388 .required_features = .{ .sse2, null, null, null },122513 .required_features = .{ .sse2, null, null, null },
...@@ -117393,10 +122518,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117393,10 +122518,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117393 },122518 },
117394 .call_frame = .{ .alignment = .@"16" },122519 .call_frame = .{ .alignment = .@"16" },
117395 .extra_temps = .{122520 .extra_temps = .{
117396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122521 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117397 .{ .type = .i32, .kind = .{ .reg = .edi } },122522 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117398 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122523 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117399 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122524 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117400 .unused,122525 .unused,
117401 .unused,122526 .unused,
117402 .unused,122527 .unused,
...@@ -117408,12 +122533,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117408,12 +122533,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117408 .dst_temps = .{ .mem, .unused },122533 .dst_temps = .{ .mem, .unused },
117409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117410 .each = .{ .once = &.{122535 .each = .{ .once = &.{
117411 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122536 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
117412 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },122537 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117413 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122538 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117414 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122539 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
117415 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },122540 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122541 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117417 } },122542 } },
117418 }, .{122543 }, .{
117419 .required_features = .{ .sse, null, null, null },122544 .required_features = .{ .sse, null, null, null },
...@@ -117424,10 +122549,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117424,10 +122549,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117424 },122549 },
117425 .call_frame = .{ .alignment = .@"16" },122550 .call_frame = .{ .alignment = .@"16" },
117426 .extra_temps = .{122551 .extra_temps = .{
117427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122552 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117428 .{ .type = .i32, .kind = .{ .reg = .edi } },122553 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117429 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },122554 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117430 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122555 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117431 .unused,122556 .unused,
117432 .unused,122557 .unused,
117433 .unused,122558 .unused,
...@@ -117439,12 +122564,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117439,12 +122564,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117439 .dst_temps = .{ .mem, .unused },122564 .dst_temps = .{ .mem, .unused },
117440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122565 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117441 .each = .{ .once = &.{122566 .each = .{ .once = &.{
117442 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122567 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
117443 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },122568 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122569 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117445 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122570 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
117446 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },122571 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122572 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117448 } },122573 } },
117449 }, .{122574 }, .{
117450 .required_features = .{ .avx, null, null, null },122575 .required_features = .{ .avx, null, null, null },
...@@ -117455,10 +122580,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117455,10 +122580,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117455 },122580 },
117456 .call_frame = .{ .alignment = .@"16" },122581 .call_frame = .{ .alignment = .@"16" },
117457 .extra_temps = .{122582 .extra_temps = .{
117458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122583 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117459 .{ .type = .u32, .kind = .{ .reg = .edi } },122584 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117460 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122585 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117461 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122586 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117462 .unused,122587 .unused,
117463 .unused,122588 .unused,
117464 .unused,122589 .unused,
...@@ -117470,12 +122595,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117470,12 +122595,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117470 .dst_temps = .{ .mem, .unused },122595 .dst_temps = .{ .mem, .unused },
117471 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117472 .each = .{ .once = &.{122597 .each = .{ .once = &.{
117473 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122598 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
117474 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },122599 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117475 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122600 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117476 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122601 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
117477 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },122602 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122603 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117479 } },122604 } },
117480 }, .{122605 }, .{
117481 .required_features = .{ .sse2, null, null, null },122606 .required_features = .{ .sse2, null, null, null },
...@@ -117486,10 +122611,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117486,10 +122611,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117486 },122611 },
117487 .call_frame = .{ .alignment = .@"16" },122612 .call_frame = .{ .alignment = .@"16" },
117488 .extra_temps = .{122613 .extra_temps = .{
117489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122614 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117490 .{ .type = .u32, .kind = .{ .reg = .edi } },122615 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117491 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122616 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117492 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122617 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117493 .unused,122618 .unused,
117494 .unused,122619 .unused,
117495 .unused,122620 .unused,
...@@ -117501,12 +122626,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117501,12 +122626,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117501 .dst_temps = .{ .mem, .unused },122626 .dst_temps = .{ .mem, .unused },
117502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122627 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117503 .each = .{ .once = &.{122628 .each = .{ .once = &.{
117504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122629 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
117505 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },122630 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117506 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122631 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117507 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122632 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
117508 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },122633 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122634 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117510 } },122635 } },
117511 }, .{122636 }, .{
117512 .required_features = .{ .sse, null, null, null },122637 .required_features = .{ .sse, null, null, null },
...@@ -117517,10 +122642,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117517,10 +122642,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117517 },122642 },
117518 .call_frame = .{ .alignment = .@"16" },122643 .call_frame = .{ .alignment = .@"16" },
117519 .extra_temps = .{122644 .extra_temps = .{
117520 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122645 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117521 .{ .type = .u32, .kind = .{ .reg = .edi } },122646 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117522 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },122647 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122648 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117524 .unused,122649 .unused,
117525 .unused,122650 .unused,
117526 .unused,122651 .unused,
...@@ -117532,12 +122657,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117532,12 +122657,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117532 .dst_temps = .{ .mem, .unused },122657 .dst_temps = .{ .mem, .unused },
117533 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122658 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117534 .each = .{ .once = &.{122659 .each = .{ .once = &.{
117535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122660 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
117536 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },122661 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117537 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122662 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117538 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122663 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
117539 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },122664 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122665 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117541 } },122666 } },
117542 }, .{122667 }, .{
117543 .required_features = .{ .@"64bit", .avx, null, null },122668 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -117548,10 +122673,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117548,10 +122673,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117548 },122673 },
117549 .call_frame = .{ .alignment = .@"16" },122674 .call_frame = .{ .alignment = .@"16" },
117550 .extra_temps = .{122675 .extra_temps = .{
117551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122676 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117552 .{ .type = .i64, .kind = .{ .reg = .rdi } },122677 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117553 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },122678 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117554 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122679 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117555 .unused,122680 .unused,
117556 .unused,122681 .unused,
117557 .unused,122682 .unused,
...@@ -117563,12 +122688,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117563,12 +122688,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117563 .dst_temps = .{ .mem, .unused },122688 .dst_temps = .{ .mem, .unused },
117564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122689 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117565 .each = .{ .once = &.{122690 .each = .{ .once = &.{
117566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122691 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
117567 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122692 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117568 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122693 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117569 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122694 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
117570 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },122695 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
117571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122696 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117572 } },122697 } },
117573 }, .{122698 }, .{
117574 .required_features = .{ .@"64bit", .sse2, null, null },122699 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -117579,10 +122704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117579,10 +122704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117579 },122704 },
117580 .call_frame = .{ .alignment = .@"16" },122705 .call_frame = .{ .alignment = .@"16" },
117581 .extra_temps = .{122706 .extra_temps = .{
117582 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122707 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117583 .{ .type = .i64, .kind = .{ .reg = .rdi } },122708 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117584 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },122709 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117585 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122710 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117586 .unused,122711 .unused,
117587 .unused,122712 .unused,
117588 .unused,122713 .unused,
...@@ -117594,12 +122719,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117594,12 +122719,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117594 .dst_temps = .{ .mem, .unused },122719 .dst_temps = .{ .mem, .unused },
117595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122720 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117596 .each = .{ .once = &.{122721 .each = .{ .once = &.{
117597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122722 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
117598 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122723 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117599 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122724 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117600 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122725 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
117601 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },122726 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
117602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122727 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117603 } },122728 } },
117604 }, .{122729 }, .{
117605 .required_features = .{ .@"64bit", .sse, null, null },122730 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -117610,10 +122735,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117610,10 +122735,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117610 },122735 },
117611 .call_frame = .{ .alignment = .@"16" },122736 .call_frame = .{ .alignment = .@"16" },
117612 .extra_temps = .{122737 .extra_temps = .{
117613 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122738 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117614 .{ .type = .i64, .kind = .{ .reg = .rdi } },122739 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117615 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },122740 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117616 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122741 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117617 .unused,122742 .unused,
117618 .unused,122743 .unused,
117619 .unused,122744 .unused,
...@@ -117625,12 +122750,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117625,12 +122750,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117625 .dst_temps = .{ .mem, .unused },122750 .dst_temps = .{ .mem, .unused },
117626 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122751 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117627 .each = .{ .once = &.{122752 .each = .{ .once = &.{
117628 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122753 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
117629 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122754 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117630 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122755 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117631 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122756 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
117632 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },122757 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
117633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122758 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117634 } },122759 } },
117635 }, .{122760 }, .{
117636 .required_features = .{ .@"64bit", .avx, null, null },122761 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -117641,10 +122766,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117641,10 +122766,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117641 },122766 },
117642 .call_frame = .{ .alignment = .@"16" },122767 .call_frame = .{ .alignment = .@"16" },
117643 .extra_temps = .{122768 .extra_temps = .{
117644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117645 .{ .type = .u64, .kind = .{ .reg = .rdi } },122770 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117646 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },122771 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117647 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122772 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117648 .unused,122773 .unused,
117649 .unused,122774 .unused,
117650 .unused,122775 .unused,
...@@ -117656,12 +122781,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117656,12 +122781,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117656 .dst_temps = .{ .mem, .unused },122781 .dst_temps = .{ .mem, .unused },
117657 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122782 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117658 .each = .{ .once = &.{122783 .each = .{ .once = &.{
117659 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122784 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
117660 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122785 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117661 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122786 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117662 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122787 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
117663 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },122788 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
117664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122789 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117665 } },122790 } },
117666 }, .{122791 }, .{
117667 .required_features = .{ .@"64bit", .sse2, null, null },122792 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -117672,10 +122797,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117672,10 +122797,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117672 },122797 },
117673 .call_frame = .{ .alignment = .@"16" },122798 .call_frame = .{ .alignment = .@"16" },
117674 .extra_temps = .{122799 .extra_temps = .{
117675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122800 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117676 .{ .type = .u64, .kind = .{ .reg = .rdi } },122801 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117677 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },122802 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117678 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122803 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117679 .unused,122804 .unused,
117680 .unused,122805 .unused,
117681 .unused,122806 .unused,
...@@ -117687,12 +122812,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117687,12 +122812,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117687 .dst_temps = .{ .mem, .unused },122812 .dst_temps = .{ .mem, .unused },
117688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122813 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117689 .each = .{ .once = &.{122814 .each = .{ .once = &.{
117690 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122815 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
117691 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122816 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117692 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122817 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117693 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122818 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
117694 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },122819 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
117695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122820 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117696 } },122821 } },
117697 }, .{122822 }, .{
117698 .required_features = .{ .@"64bit", .sse, null, null },122823 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -117703,10 +122828,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117703,10 +122828,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117703 },122828 },
117704 .call_frame = .{ .alignment = .@"16" },122829 .call_frame = .{ .alignment = .@"16" },
117705 .extra_temps = .{122830 .extra_temps = .{
117706 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122831 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117707 .{ .type = .u64, .kind = .{ .reg = .rdi } },122832 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117708 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },122833 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117709 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },122834 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117710 .unused,122835 .unused,
117711 .unused,122836 .unused,
117712 .unused,122837 .unused,
...@@ -117718,15 +122843,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117718,15 +122843,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117718 .dst_temps = .{ .mem, .unused },122843 .dst_temps = .{ .mem, .unused },
117719 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122844 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117720 .each = .{ .once = &.{122845 .each = .{ .once = &.{
117721 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122846 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
117722 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122847 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117723 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },122848 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117724 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },122849 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
117725 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },122850 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
117726 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122851 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117727 } },122852 } },
117728 }, .{122853 }, .{
117729 .required_features = .{ .@"64bit", .avx, null, null },122854 .required_cc_abi = .sysv64,
122855 .required_features = .{ .avx, null, null, null },
117730 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },122856 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117731 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },122857 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117732 .patterns = &.{122858 .patterns = &.{
...@@ -117734,11 +122860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117734,11 +122860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117734 },122860 },
117735 .call_frame = .{ .alignment = .@"16" },122861 .call_frame = .{ .alignment = .@"16" },
117736 .extra_temps = .{122862 .extra_temps = .{
117737 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122863 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117738 .{ .type = .u64, .kind = .{ .reg = .rdi } },122864 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117739 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117740 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },122865 .{ .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,
117742 .unused,122868 .unused,
117743 .unused,122869 .unused,
117744 .unused,122870 .unused,
...@@ -117749,16 +122875,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117749,16 +122875,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117749 .dst_temps = .{ .mem, .unused },122875 .dst_temps = .{ .mem, .unused },
117750 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122876 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117751 .each = .{ .once = &.{122877 .each = .{ .once = &.{
117752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122878 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
117753 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122879 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
117754 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },122880 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
117755 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122881 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117756 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },122882 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
117757 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },122883 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117758 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122884 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117759 } },122885 } },
117760 }, .{122886 }, .{
117761 .required_features = .{ .@"64bit", .sse2, null, null },122887 .required_cc_abi = .win64,
122888 .required_features = .{ .avx, null, null, null },
117762 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },122889 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117763 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },122890 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117764 .patterns = &.{122891 .patterns = &.{
...@@ -117766,11 +122893,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117766,11 +122893,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117766 },122893 },
117767 .call_frame = .{ .alignment = .@"16" },122894 .call_frame = .{ .alignment = .@"16" },
117768 .extra_temps = .{122895 .extra_temps = .{
117769 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122896 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117770 .{ .type = .u64, .kind = .{ .reg = .rdi } },122897 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117771 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117772 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },122898 .{ .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,
117774 .unused,122901 .unused,
117775 .unused,122902 .unused,
117776 .unused,122903 .unused,
...@@ -117781,16 +122908,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117781,16 +122908,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117781 .dst_temps = .{ .mem, .unused },122908 .dst_temps = .{ .mem, .unused },
117782 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117783 .each = .{ .once = &.{122910 .each = .{ .once = &.{
117784 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122911 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
117785 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122912 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
117786 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },122913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117787 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122914 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
117788 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },122915 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117789 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },122916 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117791 } },122917 } },
117792 }, .{122918 }, .{
117793 .required_features = .{ .@"64bit", .sse, null, null },122919 .required_cc_abi = .sysv64,
122920 .required_features = .{ .sse2, null, null, null },
117794 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },122921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117795 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },122922 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117796 .patterns = &.{122923 .patterns = &.{
...@@ -117798,11 +122925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117798,11 +122925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117798 },122925 },
117799 .call_frame = .{ .alignment = .@"16" },122926 .call_frame = .{ .alignment = .@"16" },
117800 .extra_temps = .{122927 .extra_temps = .{
117801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },122928 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117802 .{ .type = .u64, .kind = .{ .reg = .rdi } },122929 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117803 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117804 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },122930 .{ .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,
117806 .unused,122933 .unused,
117807 .unused,122934 .unused,
117808 .unused,122935 .unused,
...@@ -117813,16 +122940,114 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117813,16 +122940,114 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117813 .dst_temps = .{ .mem, .unused },122940 .dst_temps = .{ .mem, .unused },
117814 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },122941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117815 .each = .{ .once = &.{122942 .each = .{ .once = &.{
117816 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },122943 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
117817 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },122944 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
117818 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },122945 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
117819 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },122946 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117820 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },122947 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
117821 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },122948 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117822 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },122949 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117823 } },122950 } },
117824 }, .{122951 }, .{
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 },
117826 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },123051 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117827 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },123052 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117828 .patterns = &.{123053 .patterns = &.{
...@@ -117830,11 +123055,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117830,11 +123055,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117830 },123055 },
117831 .call_frame = .{ .alignment = .@"16" },123056 .call_frame = .{ .alignment = .@"16" },
117832 .extra_temps = .{123057 .extra_temps = .{
117833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123058 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117834 .{ .type = .u64, .kind = .{ .reg = .rdi } },123059 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117835 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117836 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },123060 .{ .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,
117838 .unused,123063 .unused,
117839 .unused,123064 .unused,
117840 .unused,123065 .unused,
...@@ -117845,16 +123070,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117845,16 +123070,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117845 .dst_temps = .{ .mem, .unused },123070 .dst_temps = .{ .mem, .unused },
117846 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123071 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117847 .each = .{ .once = &.{123072 .each = .{ .once = &.{
117848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },123073 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
117849 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },123074 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
117850 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },123075 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
117851 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },123076 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117852 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },123077 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
117853 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },123078 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117854 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123079 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117855 } },123080 } },
117856 }, .{123081 }, .{
117857 .required_features = .{ .@"64bit", .sse2, null, null },123082 .required_cc_abi = .win64,
123083 .required_features = .{ .avx, null, null, null },
117858 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },123084 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117859 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },123085 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117860 .patterns = &.{123086 .patterns = &.{
...@@ -117862,11 +123088,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117862,11 +123088,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117862 },123088 },
117863 .call_frame = .{ .alignment = .@"16" },123089 .call_frame = .{ .alignment = .@"16" },
117864 .extra_temps = .{123090 .extra_temps = .{
117865 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117866 .{ .type = .u64, .kind = .{ .reg = .rdi } },123092 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117867 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117868 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },123093 .{ .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,
117870 .unused,123096 .unused,
117871 .unused,123097 .unused,
117872 .unused,123098 .unused,
...@@ -117877,16 +123103,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117877,16 +123103,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117877 .dst_temps = .{ .mem, .unused },123103 .dst_temps = .{ .mem, .unused },
117878 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123104 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117879 .each = .{ .once = &.{123105 .each = .{ .once = &.{
117880 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },123106 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
117881 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },123107 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
117882 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },123108 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117883 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },123109 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
117884 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },123110 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117885 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },123111 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117886 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117887 } },123112 } },
117888 }, .{123113 }, .{
117889 .required_features = .{ .@"64bit", .sse, null, null },123114 .required_cc_abi = .sysv64,
123115 .required_features = .{ .sse2, null, null, null },
117890 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },123116 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117891 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },123117 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117892 .patterns = &.{123118 .patterns = &.{
...@@ -117894,11 +123120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117894,11 +123120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117894 },123120 },
117895 .call_frame = .{ .alignment = .@"16" },123121 .call_frame = .{ .alignment = .@"16" },
117896 .extra_temps = .{123122 .extra_temps = .{
117897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123123 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117898 .{ .type = .u64, .kind = .{ .reg = .rdi } },123124 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117899 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117900 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },123125 .{ .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,
117902 .unused,123128 .unused,
117903 .unused,123129 .unused,
117904 .unused,123130 .unused,
...@@ -117909,13 +123135,110 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117909,13 +123135,110 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117909 .dst_temps = .{ .mem, .unused },123135 .dst_temps = .{ .mem, .unused },
117910 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123136 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117911 .each = .{ .once = &.{123137 .each = .{ .once = &.{
117912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },123138 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
117913 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },123139 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
117914 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },123140 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
117915 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },123141 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117916 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },123142 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
117917 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },123143 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
117918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
117919 } },123242 } },
117920 }, .{123243 }, .{
117921 .required_features = .{ .@"64bit", .avx, null, null },123244 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -117927,11 +123250,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117927,11 +123250,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117927 .call_frame = .{ .alignment = .@"16" },123250 .call_frame = .{ .alignment = .@"16" },
117928 .extra_temps = .{123251 .extra_temps = .{
117929 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },123252 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123253 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117931 .{ .type = .usize, .kind = .{ .reg = .rdi } },123254 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117932 .{ .type = .usize, .kind = .{ .reg = .rsi } },123255 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
117933 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },123256 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
117934 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },123257 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117935 .unused,123258 .unused,
117936 .unused,123259 .unused,
117937 .unused,123260 .unused,
...@@ -117941,15 +123264,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117941,15 +123264,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117941 .dst_temps = .{ .mem, .unused },123264 .dst_temps = .{ .mem, .unused },
117942 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123265 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117943 .each = .{ .once = &.{123266 .each = .{ .once = &.{
117944 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },123267 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
117945 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },123268 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
117946 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },123269 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
117947 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },123270 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
117948 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },123271 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
117949 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },123272 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
117950 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },123273 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
117951 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },123274 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
117952 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123275 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117953 } },123276 } },
117954 }, .{123277 }, .{
117955 .required_features = .{ .@"64bit", .sse2, null, null },123278 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -117961,11 +123284,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117961,11 +123284,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117961 .call_frame = .{ .alignment = .@"16" },123284 .call_frame = .{ .alignment = .@"16" },
117962 .extra_temps = .{123285 .extra_temps = .{
117963 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },123286 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123287 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117965 .{ .type = .usize, .kind = .{ .reg = .rdi } },123288 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117966 .{ .type = .usize, .kind = .{ .reg = .rsi } },123289 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
117967 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },123290 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
117968 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },123291 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117969 .unused,123292 .unused,
117970 .unused,123293 .unused,
117971 .unused,123294 .unused,
...@@ -117975,15 +123298,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117975,15 +123298,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117975 .dst_temps = .{ .mem, .unused },123298 .dst_temps = .{ .mem, .unused },
117976 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123299 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117977 .each = .{ .once = &.{123300 .each = .{ .once = &.{
117978 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },123301 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
117979 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },123302 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
117980 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },123303 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
117981 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },123304 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
117982 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },123305 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
117983 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },123306 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
117984 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },123307 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
117985 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },123308 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
117986 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123309 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117987 } },123310 } },
117988 }, .{123311 }, .{
117989 .required_features = .{ .@"64bit", .sse, null, null },123312 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -117995,11 +123318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117995,11 +123318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117995 .call_frame = .{ .alignment = .@"16" },123318 .call_frame = .{ .alignment = .@"16" },
117996 .extra_temps = .{123319 .extra_temps = .{
117997 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },123320 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123321 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117999 .{ .type = .usize, .kind = .{ .reg = .rdi } },123322 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118000 .{ .type = .usize, .kind = .{ .reg = .rsi } },123323 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118001 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },123324 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
118002 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },123325 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118003 .unused,123326 .unused,
118004 .unused,123327 .unused,
118005 .unused,123328 .unused,
...@@ -118009,15 +123332,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118009,15 +123332,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118009 .dst_temps = .{ .mem, .unused },123332 .dst_temps = .{ .mem, .unused },
118010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123333 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118011 .each = .{ .once = &.{123334 .each = .{ .once = &.{
118012 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },123335 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
118013 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },123336 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118014 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },123337 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118015 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },123338 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118016 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },123339 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118017 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },123340 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
118018 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },123341 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
118019 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },123342 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
118020 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123343 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118021 } },123344 } },
118022 }, .{123345 }, .{
118023 .required_features = .{ .@"64bit", .avx, null, null },123346 .required_features = .{ .@"64bit", .avx, null, null },
...@@ -118029,11 +123352,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118029,11 +123352,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118029 .call_frame = .{ .alignment = .@"16" },123352 .call_frame = .{ .alignment = .@"16" },
118030 .extra_temps = .{123353 .extra_temps = .{
118031 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },123354 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
118032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123355 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118033 .{ .type = .usize, .kind = .{ .reg = .rdi } },123356 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118034 .{ .type = .usize, .kind = .{ .reg = .rsi } },123357 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118035 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },123358 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118036 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },123359 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118037 .unused,123360 .unused,
118038 .unused,123361 .unused,
118039 .unused,123362 .unused,
...@@ -118043,15 +123366,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118043,15 +123366,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118043 .dst_temps = .{ .mem, .unused },123366 .dst_temps = .{ .mem, .unused },
118044 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123367 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118045 .each = .{ .once = &.{123368 .each = .{ .once = &.{
118046 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },123369 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
118047 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },123370 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118048 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },123371 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118049 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },123372 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118050 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },123373 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118051 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },123374 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
118052 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },123375 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
118053 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },123376 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
118054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123377 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118055 } },123378 } },
118056 }, .{123379 }, .{
118057 .required_features = .{ .@"64bit", .sse2, null, null },123380 .required_features = .{ .@"64bit", .sse2, null, null },
...@@ -118063,11 +123386,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118063,11 +123386,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118063 .call_frame = .{ .alignment = .@"16" },123386 .call_frame = .{ .alignment = .@"16" },
118064 .extra_temps = .{123387 .extra_temps = .{
118065 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },123388 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
118066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123389 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118067 .{ .type = .usize, .kind = .{ .reg = .rdi } },123390 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118068 .{ .type = .usize, .kind = .{ .reg = .rsi } },123391 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118069 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },123392 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118070 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },123393 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118071 .unused,123394 .unused,
118072 .unused,123395 .unused,
118073 .unused,123396 .unused,
...@@ -118077,15 +123400,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118077,15 +123400,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118077 .dst_temps = .{ .mem, .unused },123400 .dst_temps = .{ .mem, .unused },
118078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118079 .each = .{ .once = &.{123402 .each = .{ .once = &.{
118080 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },123403 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
118081 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },123404 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118082 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },123405 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118083 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },123406 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118084 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },123407 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118085 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },123408 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
118086 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },123409 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
118087 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },123410 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
118088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123411 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118089 } },123412 } },
118090 }, .{123413 }, .{
118091 .required_features = .{ .@"64bit", .sse, null, null },123414 .required_features = .{ .@"64bit", .sse, null, null },
...@@ -118097,11 +123420,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118097,11 +123420,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118097 .call_frame = .{ .alignment = .@"16" },123420 .call_frame = .{ .alignment = .@"16" },
118098 .extra_temps = .{123421 .extra_temps = .{
118099 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },123422 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
118100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },123423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118101 .{ .type = .usize, .kind = .{ .reg = .rdi } },123424 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118102 .{ .type = .usize, .kind = .{ .reg = .rsi } },123425 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118103 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },123426 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118104 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },123427 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118105 .unused,123428 .unused,
118106 .unused,123429 .unused,
118107 .unused,123430 .unused,
...@@ -118111,15 +123434,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118111,15 +123434,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118111 .dst_temps = .{ .mem, .unused },123434 .dst_temps = .{ .mem, .unused },
118112 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },123435 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118113 .each = .{ .once = &.{123436 .each = .{ .once = &.{
118114 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },123437 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
118115 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },123438 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118116 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },123439 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118117 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },123440 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118118 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },123441 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118119 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },123442 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
118120 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },123443 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
118121 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },123444 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
118122 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },123445 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118123 } },123446 } },
118124 } }) catch |err| switch (err) {123447 } }) catch |err| switch (err) {
118125 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{123448 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
...@@ -118132,7 +123455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118132,7 +123455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118132 };123455 };
118133 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);123456 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
118134 },123457 },
118135 .reduce => |air_tag| if (use_old) try cg.airReduce(inst) else {123458 .reduce => |air_tag| {
118136 const nan = std.math.nan(f16);123459 const nan = std.math.nan(f16);
118137 const reduce = air_datas[@intFromEnum(inst)].reduce;123460 const reduce = air_datas[@intFromEnum(inst)].reduce;
118138 const res_ty = cg.typeOfIndex(inst);123461 const res_ty = cg.typeOfIndex(inst);
...@@ -131814,7 +137137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131814,7 +137137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131814 .call_frame = .{ .alignment = .@"16" },137137 .call_frame = .{ .alignment = .@"16" },
131815 .extra_temps = .{137138 .extra_temps = .{
131816 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },137139 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131817 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },137140 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
131818 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },137141 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131819 .unused,137142 .unused,
131820 .unused,137143 .unused,
...@@ -131825,7 +137148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131825,7 +137148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131825 .unused,137148 .unused,
131826 .unused,137149 .unused,
131827 },137150 },
131828 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },137151 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
131829 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },137152 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131830 .each = .{ .once = &.{137153 .each = .{ .once = &.{
131831 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },137154 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -131847,7 +137170,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131847,7 +137170,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131847 .call_frame = .{ .alignment = .@"16" },137170 .call_frame = .{ .alignment = .@"16" },
131848 .extra_temps = .{137171 .extra_temps = .{
131849 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },137172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131850 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },137173 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
131851 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },137174 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131852 .unused,137175 .unused,
131853 .unused,137176 .unused,
...@@ -131858,7 +137181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131858,7 +137181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131858 .unused,137181 .unused,
131859 .unused,137182 .unused,
131860 },137183 },
131861 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },137184 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
131862 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },137185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131863 .each = .{ .once = &.{137186 .each = .{ .once = &.{
131864 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },137187 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -131882,7 +137205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131882,7 +137205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },137205 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131883 .{ .type = .f16, .kind = .{ .reg = .ax } },137206 .{ .type = .f16, .kind = .{ .reg = .ax } },
131884 .{ .type = .f32, .kind = .mem },137207 .{ .type = .f32, .kind = .mem },
131885 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },137208 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
131886 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },137209 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131887 .unused,137210 .unused,
131888 .unused,137211 .unused,
...@@ -131891,7 +137214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131891,7 +137214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131891 .unused,137214 .unused,
131892 .unused,137215 .unused,
131893 },137216 },
131894 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },137217 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
131895 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },137218 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131896 .each = .{ .once = &.{137219 .each = .{ .once = &.{
131897 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },137220 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -133482,7 +138805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133482,7 +138805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133482 .call_frame = .{ .alignment = .@"16" },138805 .call_frame = .{ .alignment = .@"16" },
133483 .extra_temps = .{138806 .extra_temps = .{
133484 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },138807 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133485 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },138808 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
133486 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },138809 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133487 .unused,138810 .unused,
133488 .unused,138811 .unused,
...@@ -133493,7 +138816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133493,7 +138816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133493 .unused,138816 .unused,
133494 .unused,138817 .unused,
133495 },138818 },
133496 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },138819 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
133497 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },138820 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
133498 .each = .{ .once = &.{138821 .each = .{ .once = &.{
133499 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },138822 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -133513,7 +138836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133513,7 +138836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133513 .call_frame = .{ .alignment = .@"16" },138836 .call_frame = .{ .alignment = .@"16" },
133514 .extra_temps = .{138837 .extra_temps = .{
133515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },138838 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133516 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },138839 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
133517 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },138840 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133518 .unused,138841 .unused,
133519 .unused,138842 .unused,
...@@ -133524,7 +138847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133524,7 +138847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133524 .unused,138847 .unused,
133525 .unused,138848 .unused,
133526 },138849 },
133527 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },138850 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
133528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },138851 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
133529 .each = .{ .once = &.{138852 .each = .{ .once = &.{
133530 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },138853 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -133544,7 +138867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133544,7 +138867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133544 .call_frame = .{ .alignment = .@"16" },138867 .call_frame = .{ .alignment = .@"16" },
133545 .extra_temps = .{138868 .extra_temps = .{
133546 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },138869 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133547 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },138870 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
133548 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },138871 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133549 .unused,138872 .unused,
133550 .unused,138873 .unused,
...@@ -133555,7 +138878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133555,7 +138878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133555 .unused,138878 .unused,
133556 .unused,138879 .unused,
133557 },138880 },
133558 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },138881 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
133559 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },138882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
133560 .each = .{ .once = &.{138883 .each = .{ .once = &.{
133561 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },138884 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -141934,7 +147257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -141934,7 +147257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141934 .call_frame = .{ .alignment = .@"16" },147257 .call_frame = .{ .alignment = .@"16" },
141935 .extra_temps = .{147258 .extra_temps = .{
141936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },147259 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141937 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },147260 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
141938 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },147261 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
141939 .unused,147262 .unused,
141940 .unused,147263 .unused,
...@@ -141945,7 +147268,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -141945,7 +147268,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141945 .unused,147268 .unused,
141946 .unused,147269 .unused,
141947 },147270 },
141948 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },147271 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
141949 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },147272 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141950 .each = .{ .once = &.{147273 .each = .{ .once = &.{
141951 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },147274 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -141967,7 +147290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -141967,7 +147290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141967 .call_frame = .{ .alignment = .@"16" },147290 .call_frame = .{ .alignment = .@"16" },
141968 .extra_temps = .{147291 .extra_temps = .{
141969 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },147292 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141970 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },147293 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
141971 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },147294 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
141972 .unused,147295 .unused,
141973 .unused,147296 .unused,
...@@ -141978,7 +147301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -141978,7 +147301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141978 .unused,147301 .unused,
141979 .unused,147302 .unused,
141980 },147303 },
141981 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },147304 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
141982 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },147305 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141983 .each = .{ .once = &.{147306 .each = .{ .once = &.{
141984 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },147307 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -142002,7 +147325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -142002,7 +147325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142002 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },147325 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142003 .{ .type = .f16, .kind = .{ .reg = .ax } },147326 .{ .type = .f16, .kind = .{ .reg = .ax } },
142004 .{ .type = .f32, .kind = .mem },147327 .{ .type = .f32, .kind = .mem },
142005 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },147328 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
142006 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },147329 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
142007 .unused,147330 .unused,
142008 .unused,147331 .unused,
...@@ -142011,7 +147334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -142011,7 +147334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142011 .unused,147334 .unused,
142012 .unused,147335 .unused,
142013 },147336 },
142014 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },147337 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
142015 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },147338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
142016 .each = .{ .once = &.{147339 .each = .{ .once = &.{
142017 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },147340 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -143610,7 +148933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143610,7 +148933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143610 .call_frame = .{ .alignment = .@"16" },148933 .call_frame = .{ .alignment = .@"16" },
143611 .extra_temps = .{148934 .extra_temps = .{
143612 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },148935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143613 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },148936 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
143614 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },148937 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143615 .unused,148938 .unused,
143616 .unused,148939 .unused,
...@@ -143621,7 +148944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143621,7 +148944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143621 .unused,148944 .unused,
143622 .unused,148945 .unused,
143623 },148946 },
143624 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },148947 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
143625 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },148948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
143626 .each = .{ .once = &.{148949 .each = .{ .once = &.{
143627 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },148950 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -143641,7 +148964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143641,7 +148964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143641 .call_frame = .{ .alignment = .@"16" },148964 .call_frame = .{ .alignment = .@"16" },
143642 .extra_temps = .{148965 .extra_temps = .{
143643 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },148966 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143644 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },148967 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
143645 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },148968 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143646 .unused,148969 .unused,
143647 .unused,148970 .unused,
...@@ -143652,7 +148975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143652,7 +148975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143652 .unused,148975 .unused,
143653 .unused,148976 .unused,
143654 },148977 },
143655 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },148978 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
143656 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },148979 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
143657 .each = .{ .once = &.{148980 .each = .{ .once = &.{
143658 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },148981 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -143672,7 +148995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143672,7 +148995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143672 .call_frame = .{ .alignment = .@"16" },148995 .call_frame = .{ .alignment = .@"16" },
143673 .extra_temps = .{148996 .extra_temps = .{
143674 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },148997 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143675 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },148998 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
143676 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },148999 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143677 .unused,149000 .unused,
143678 .unused,149001 .unused,
...@@ -143683,7 +149006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143683,7 +149006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143683 .unused,149006 .unused,
143684 .unused,149007 .unused,
143685 },149008 },
143686 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },149009 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
143687 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },149010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
143688 .each = .{ .once = &.{149011 .each = .{ .once = &.{
143689 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },149012 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -147548,7 +152871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147548,7 +152871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147548 .unused,152871 .unused,
147549 .unused,152872 .unused,
147550 },152873 },
147551 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },152874 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147552 .clobbers = .{ .eflags = true },152875 .clobbers = .{ .eflags = true },
147553 .each = .{ .once = &.{152876 .each = .{ .once = &.{
147554 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },152877 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -147581,7 +152904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147581,7 +152904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147581 .unused,152904 .unused,
147582 .unused,152905 .unused,
147583 },152906 },
147584 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },152907 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147585 .clobbers = .{ .eflags = true },152908 .clobbers = .{ .eflags = true },
147586 .each = .{ .once = &.{152909 .each = .{ .once = &.{
147587 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },152910 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -147605,7 +152928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147605,7 +152928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147605 .call_frame = .{ .alignment = .@"16" },152928 .call_frame = .{ .alignment = .@"16" },
147606 .extra_temps = .{152929 .extra_temps = .{
147607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },152930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147608 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },152931 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
147609 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },152932 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147610 .unused,152933 .unused,
147611 .unused,152934 .unused,
...@@ -147616,7 +152939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147616,7 +152939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147616 .unused,152939 .unused,
147617 .unused,152940 .unused,
147618 },152941 },
147619 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },152942 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147620 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },152943 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
147621 .each = .{ .once = &.{152944 .each = .{ .once = &.{
147622 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },152945 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -147638,7 +152961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147638,7 +152961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147638 .call_frame = .{ .alignment = .@"16" },152961 .call_frame = .{ .alignment = .@"16" },
147639 .extra_temps = .{152962 .extra_temps = .{
147640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },152963 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147641 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },152964 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
147642 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },152965 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147643 .unused,152966 .unused,
147644 .unused,152967 .unused,
...@@ -147649,7 +152972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147649,7 +152972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147649 .unused,152972 .unused,
147650 .unused,152973 .unused,
147651 },152974 },
147652 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },152975 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147653 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },152976 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
147654 .each = .{ .once = &.{152977 .each = .{ .once = &.{
147655 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },152978 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -147673,7 +152996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147673,7 +152996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },152996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147674 .{ .type = .f16, .kind = .{ .reg = .ax } },152997 .{ .type = .f16, .kind = .{ .reg = .ax } },
147675 .{ .type = .f32, .kind = .mem },152998 .{ .type = .f32, .kind = .mem },
147676 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },152999 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
147677 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },153000 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147678 .unused,153001 .unused,
147679 .unused,153002 .unused,
...@@ -147682,7 +153005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147682,7 +153005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147682 .unused,153005 .unused,
147683 .unused,153006 .unused,
147684 },153007 },
147685 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },153008 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147686 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },153009 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
147687 .each = .{ .once = &.{153010 .each = .{ .once = &.{
147688 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },153011 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -148150,6 +153473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148150,6 +153473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148150 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },153473 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
148151 } },153474 } },
148152 }, .{153475 }, .{
153476 .required_abi = .gnu,
148153 .required_features = .{ .x87, null, null, null },153477 .required_features = .{ .x87, null, null, null },
148154 .dst_constraints = .{ .{ .float = .tbyte }, .any },153478 .dst_constraints = .{ .{ .float = .tbyte }, .any },
148155 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },153479 .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 {...@@ -148157,8 +153481,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148157 .{ .src = .{ .to_mem, .none, .none } },153481 .{ .src = .{ .to_mem, .none, .none } },
148158 },153482 },
148159 .extra_temps = .{153483 .extra_temps = .{
148160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148161 .{ .type = .f80, .kind = .{ .reg = .st7 } },153484 .{ .type = .f80, .kind = .{ .reg = .st7 } },
153485 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148162 .{ .type = .f80, .kind = .{ .reg = .st6 } },153486 .{ .type = .f80, .kind = .{ .reg = .st6 } },
148163 .unused,153487 .unused,
148164 .unused,153488 .unused,
...@@ -148172,13 +153496,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148172,13 +153496,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148172 .dst_temps = .{ .{ .rc = .x87 }, .unused },153496 .dst_temps = .{ .{ .rc = .x87 }, .unused },
148173 .clobbers = .{ .eflags = true },153497 .clobbers = .{ .eflags = true },
148174 .each = .{ .once = &.{153498 .each = .{ .once = &.{
148175 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
148176 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },153499 .{ ._, .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), ._, ._, ._ },
148178 .{ ._, .f_p, .add, ._, ._, ._, ._ },153502 .{ ._, .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), ._, ._ },
148180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },153541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
148181 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },153542 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
153543 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
148182 } },153544 } },
148183 }, .{153545 }, .{
148184 .required_features = .{ .avx, null, null, null },153546 .required_features = .{ .avx, null, null, null },
...@@ -148190,7 +153552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148190,7 +153552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148190 .call_frame = .{ .alignment = .@"16" },153552 .call_frame = .{ .alignment = .@"16" },
148191 .extra_temps = .{153553 .extra_temps = .{
148192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },153554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148193 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },153555 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
148194 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },153556 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148195 .unused,153557 .unused,
148196 .unused,153558 .unused,
...@@ -148201,7 +153563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148201,7 +153563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148201 .unused,153563 .unused,
148202 .unused,153564 .unused,
148203 },153565 },
148204 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },153566 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
148205 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },153567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
148206 .each = .{ .once = &.{153568 .each = .{ .once = &.{
148207 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },153569 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
...@@ -148221,7 +153583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148221,7 +153583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148221 .call_frame = .{ .alignment = .@"16" },153583 .call_frame = .{ .alignment = .@"16" },
148222 .extra_temps = .{153584 .extra_temps = .{
148223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },153585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148224 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },153586 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
148225 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },153587 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148226 .unused,153588 .unused,
148227 .unused,153589 .unused,
...@@ -148232,7 +153594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148232,7 +153594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148232 .unused,153594 .unused,
148233 .unused,153595 .unused,
148234 },153596 },
148235 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },153597 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
148236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },153598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
148237 .each = .{ .once = &.{153599 .each = .{ .once = &.{
148238 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },153600 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
...@@ -148252,7 +153614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148252,7 +153614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148252 .call_frame = .{ .alignment = .@"16" },153614 .call_frame = .{ .alignment = .@"16" },
148253 .extra_temps = .{153615 .extra_temps = .{
148254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },153616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148255 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },153617 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
148256 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },153618 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148257 .unused,153619 .unused,
148258 .unused,153620 .unused,
...@@ -148263,7 +153625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148263,7 +153625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148263 .unused,153625 .unused,
148264 .unused,153626 .unused,
148265 },153627 },
148266 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },153628 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
148267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },153629 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
148268 .each = .{ .once = &.{153630 .each = .{ .once = &.{
148269 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },153631 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
...@@ -151240,7 +156602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151240,7 +156602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151240 .unused,156602 .unused,
151241 .unused,156603 .unused,
151242 },156604 },
151243 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },156605 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151244 .clobbers = .{ .eflags = true },156606 .clobbers = .{ .eflags = true },
151245 .each = .{ .once = &.{156607 .each = .{ .once = &.{
151246 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },156608 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -151264,7 +156626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151264,7 +156626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151264 .call_frame = .{ .alignment = .@"16" },156626 .call_frame = .{ .alignment = .@"16" },
151265 .extra_temps = .{156627 .extra_temps = .{
151266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },156628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151267 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },156629 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151268 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },156630 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151269 .unused,156631 .unused,
151270 .unused,156632 .unused,
...@@ -151275,7 +156637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151275,7 +156637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151275 .unused,156637 .unused,
151276 .unused,156638 .unused,
151277 },156639 },
151278 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },156640 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151279 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },156641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151280 .each = .{ .once = &.{156642 .each = .{ .once = &.{
151281 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },156643 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -151297,7 +156659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151297,7 +156659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151297 .call_frame = .{ .alignment = .@"16" },156659 .call_frame = .{ .alignment = .@"16" },
151298 .extra_temps = .{156660 .extra_temps = .{
151299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },156661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151300 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },156662 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151301 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },156663 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151302 .unused,156664 .unused,
151303 .unused,156665 .unused,
...@@ -151308,7 +156670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151308,7 +156670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151308 .unused,156670 .unused,
151309 .unused,156671 .unused,
151310 },156672 },
151311 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },156673 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151312 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },156674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151313 .each = .{ .once = &.{156675 .each = .{ .once = &.{
151314 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },156676 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -151332,7 +156694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151332,7 +156694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },156694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151333 .{ .type = .f16, .kind = .{ .reg = .ax } },156695 .{ .type = .f16, .kind = .{ .reg = .ax } },
151334 .{ .type = .f32, .kind = .mem },156696 .{ .type = .f32, .kind = .mem },
151335 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },156697 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151336 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },156698 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151337 .unused,156699 .unused,
151338 .unused,156700 .unused,
...@@ -151341,7 +156703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151341,7 +156703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151341 .unused,156703 .unused,
151342 .unused,156704 .unused,
151343 },156705 },
151344 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },156706 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151345 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },156707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151346 .each = .{ .once = &.{156708 .each = .{ .once = &.{
151347 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },156709 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -151689,6 +157051,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151689,6 +157051,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151689 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },157051 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
151690 } },157052 } },
151691 }, .{157053 }, .{
157054 .required_abi = .gnu,
151692 .required_features = .{ .x87, null, null, null },157055 .required_features = .{ .x87, null, null, null },
151693 .dst_constraints = .{ .{ .float = .tbyte }, .any },157056 .dst_constraints = .{ .{ .float = .tbyte }, .any },
151694 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },157057 .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 {...@@ -151696,8 +157059,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151696 .{ .src = .{ .to_mem, .none, .none } },157059 .{ .src = .{ .to_mem, .none, .none } },
151697 },157060 },
151698 .extra_temps = .{157061 .extra_temps = .{
151699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151700 .{ .type = .f80, .kind = .{ .reg = .st7 } },157062 .{ .type = .f80, .kind = .{ .reg = .st7 } },
157063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151701 .{ .type = .f80, .kind = .{ .reg = .st6 } },157064 .{ .type = .f80, .kind = .{ .reg = .st6 } },
151702 .unused,157065 .unused,
151703 .unused,157066 .unused,
...@@ -151711,14 +157074,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151711,14 +157074,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151711 .dst_temps = .{ .{ .rc = .x87 }, .unused },157074 .dst_temps = .{ .{ .rc = .x87 }, .unused },
151712 .clobbers = .{ .eflags = true },157075 .clobbers = .{ .eflags = true },
151713 .each = .{ .once = &.{157076 .each = .{ .once = &.{
151714 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
151715 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },157077 .{ ._, .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), ._, ._, ._ },
151717 .{ ._, .f_p, .mul, ._, ._, ._, ._ },157080 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
151718 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },157081 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
151719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },157082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
151720 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },157083 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
151721 } },157084 } },
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 } },
151722 }, .{157123 }, .{
151723 .required_features = .{ .avx, null, null, null },157124 .required_features = .{ .avx, null, null, null },
151724 .dst_constraints = .{ .{ .float = .xword }, .any },157125 .dst_constraints = .{ .{ .float = .xword }, .any },
...@@ -151729,7 +157130,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151729,7 +157130,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151729 .call_frame = .{ .alignment = .@"16" },157130 .call_frame = .{ .alignment = .@"16" },
151730 .extra_temps = .{157131 .extra_temps = .{
151731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },157132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151732 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },157133 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151733 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },157134 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151734 .unused,157135 .unused,
151735 .unused,157136 .unused,
...@@ -151740,7 +157141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151740,7 +157141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151740 .unused,157141 .unused,
151741 .unused,157142 .unused,
151742 },157143 },
151743 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },157144 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151744 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },157145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151745 .each = .{ .once = &.{157146 .each = .{ .once = &.{
151746 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },157147 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
...@@ -151760,7 +157161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151760,7 +157161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151760 .call_frame = .{ .alignment = .@"16" },157161 .call_frame = .{ .alignment = .@"16" },
151761 .extra_temps = .{157162 .extra_temps = .{
151762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },157163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151763 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },157164 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151764 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },157165 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151765 .unused,157166 .unused,
151766 .unused,157167 .unused,
...@@ -151771,7 +157172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151771,7 +157172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151771 .unused,157172 .unused,
151772 .unused,157173 .unused,
151773 },157174 },
151774 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },157175 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151775 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },157176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151776 .each = .{ .once = &.{157177 .each = .{ .once = &.{
151777 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },157178 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
...@@ -151791,7 +157192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151791,7 +157192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151791 .call_frame = .{ .alignment = .@"16" },157192 .call_frame = .{ .alignment = .@"16" },
151792 .extra_temps = .{157193 .extra_temps = .{
151793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },157194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151794 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },157195 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151795 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },157196 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151796 .unused,157197 .unused,
151797 .unused,157198 .unused,
...@@ -151802,7 +157203,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151802,7 +157203,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151802 .unused,157203 .unused,
151803 .unused,157204 .unused,
151804 },157205 },
151805 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },157206 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151806 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },157207 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151807 .each = .{ .once = &.{157208 .each = .{ .once = &.{
151808 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },157209 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
...@@ -151836,7 +157237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151836,7 +157237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151836 }157237 }
151837 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);157238 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
151838 },157239 },
151839 .reduce_optimized => |air_tag| if (use_old) try cg.airReduce(inst) else {157240 .reduce_optimized => |air_tag| {
151840 const inf = std.math.inf(f16);157241 const inf = std.math.inf(f16);
151841 const reduce = air_datas[@intFromEnum(inst)].reduce;157242 const reduce = air_datas[@intFromEnum(inst)].reduce;
151842 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});157243 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});
...@@ -152303,7 +157704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152303,7 +157704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152303 .call_frame = .{ .alignment = .@"16" },157704 .call_frame = .{ .alignment = .@"16" },
152304 .extra_temps = .{157705 .extra_temps = .{
152305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157706 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152306 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },157707 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
152307 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },157708 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152308 .unused,157709 .unused,
152309 .unused,157710 .unused,
...@@ -152314,7 +157715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152314,7 +157715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152314 .unused,157715 .unused,
152315 .unused,157716 .unused,
152316 },157717 },
152317 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },157718 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
152318 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },157719 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
152319 .each = .{ .once = &.{157720 .each = .{ .once = &.{
152320 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },157721 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -152336,7 +157737,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152336,7 +157737,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152336 .call_frame = .{ .alignment = .@"16" },157737 .call_frame = .{ .alignment = .@"16" },
152337 .extra_temps = .{157738 .extra_temps = .{
152338 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157739 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152339 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },157740 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
152340 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },157741 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152341 .unused,157742 .unused,
152342 .unused,157743 .unused,
...@@ -152347,7 +157748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152347,7 +157748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152347 .unused,157748 .unused,
152348 .unused,157749 .unused,
152349 },157750 },
152350 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },157751 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
152351 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },157752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
152352 .each = .{ .once = &.{157753 .each = .{ .once = &.{
152353 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },157754 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -152371,7 +157772,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152371,7 +157772,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152371 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157772 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152372 .{ .type = .f16, .kind = .{ .reg = .ax } },157773 .{ .type = .f16, .kind = .{ .reg = .ax } },
152373 .{ .type = .f32, .kind = .mem },157774 .{ .type = .f32, .kind = .mem },
152374 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },157775 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
152375 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },157776 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152376 .unused,157777 .unused,
152377 .unused,157778 .unused,
...@@ -152380,7 +157781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152380,7 +157781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152380 .unused,157781 .unused,
152381 .unused,157782 .unused,
152382 },157783 },
152383 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },157784 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
152384 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },157785 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
152385 .each = .{ .once = &.{157786 .each = .{ .once = &.{
152386 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },157787 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -153451,7 +158852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153451,7 +158852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153451 .call_frame = .{ .alignment = .@"16" },158852 .call_frame = .{ .alignment = .@"16" },
153452 .extra_temps = .{158853 .extra_temps = .{
153453 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },158854 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153454 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },158855 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153455 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },158856 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153456 .unused,158857 .unused,
153457 .unused,158858 .unused,
...@@ -153462,7 +158863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153462,7 +158863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153462 .unused,158863 .unused,
153463 .unused,158864 .unused,
153464 },158865 },
153465 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },158866 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
153466 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },158867 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
153467 .each = .{ .once = &.{158868 .each = .{ .once = &.{
153468 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },158869 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -153482,7 +158883,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153482,7 +158883,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153482 .call_frame = .{ .alignment = .@"16" },158883 .call_frame = .{ .alignment = .@"16" },
153483 .extra_temps = .{158884 .extra_temps = .{
153484 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },158885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153485 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },158886 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153486 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },158887 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153487 .unused,158888 .unused,
153488 .unused,158889 .unused,
...@@ -153493,7 +158894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153493,7 +158894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153493 .unused,158894 .unused,
153494 .unused,158895 .unused,
153495 },158896 },
153496 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },158897 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
153497 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },158898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
153498 .each = .{ .once = &.{158899 .each = .{ .once = &.{
153499 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },158900 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -153513,7 +158914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153513,7 +158914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153513 .call_frame = .{ .alignment = .@"16" },158914 .call_frame = .{ .alignment = .@"16" },
153514 .extra_temps = .{158915 .extra_temps = .{
153515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },158916 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153516 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },158917 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153517 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },158918 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153518 .unused,158919 .unused,
153519 .unused,158920 .unused,
...@@ -153524,7 +158925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153524,7 +158925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153524 .unused,158925 .unused,
153525 .unused,158926 .unused,
153526 },158927 },
153527 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },158928 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
153528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },158929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
153529 .each = .{ .once = &.{158930 .each = .{ .once = &.{
153530 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },158931 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -153995,7 +159396,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153995,7 +159396,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153995 .call_frame = .{ .alignment = .@"16" },159396 .call_frame = .{ .alignment = .@"16" },
153996 .extra_temps = .{159397 .extra_temps = .{
153997 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },159398 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153998 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },159399 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153999 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },159400 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154000 .unused,159401 .unused,
154001 .unused,159402 .unused,
...@@ -154006,7 +159407,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154006,7 +159407,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154006 .unused,159407 .unused,
154007 .unused,159408 .unused,
154008 },159409 },
154009 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },159410 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
154010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },159411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
154011 .each = .{ .once = &.{159412 .each = .{ .once = &.{
154012 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },159413 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -154028,7 +159429,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154028,7 +159429,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154028 .call_frame = .{ .alignment = .@"16" },159429 .call_frame = .{ .alignment = .@"16" },
154029 .extra_temps = .{159430 .extra_temps = .{
154030 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },159431 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154031 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },159432 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
154032 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },159433 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154033 .unused,159434 .unused,
154034 .unused,159435 .unused,
...@@ -154039,7 +159440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154039,7 +159440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154039 .unused,159440 .unused,
154040 .unused,159441 .unused,
154041 },159442 },
154042 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },159443 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
154043 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },159444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
154044 .each = .{ .once = &.{159445 .each = .{ .once = &.{
154045 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },159446 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -154063,7 +159464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154063,7 +159464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154063 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },159464 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154064 .{ .type = .f16, .kind = .{ .reg = .ax } },159465 .{ .type = .f16, .kind = .{ .reg = .ax } },
154065 .{ .type = .f32, .kind = .mem },159466 .{ .type = .f32, .kind = .mem },
154066 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },159467 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
154067 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },159468 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154068 .unused,159469 .unused,
154069 .unused,159470 .unused,
...@@ -154072,7 +159473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154072,7 +159473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154072 .unused,159473 .unused,
154073 .unused,159474 .unused,
154074 },159475 },
154075 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },159476 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
154076 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },159477 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
154077 .each = .{ .once = &.{159478 .each = .{ .once = &.{
154078 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },159479 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -155143,7 +160544,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155143,7 +160544,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155143 .call_frame = .{ .alignment = .@"16" },160544 .call_frame = .{ .alignment = .@"16" },
155144 .extra_temps = .{160545 .extra_temps = .{
155145 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },160546 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155146 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },160547 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155147 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },160548 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155148 .unused,160549 .unused,
155149 .unused,160550 .unused,
...@@ -155154,7 +160555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155154,7 +160555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155154 .unused,160555 .unused,
155155 .unused,160556 .unused,
155156 },160557 },
155157 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },160558 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },160559 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155159 .each = .{ .once = &.{160560 .each = .{ .once = &.{
155160 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },160561 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -155174,7 +160575,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155174,7 +160575,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155174 .call_frame = .{ .alignment = .@"16" },160575 .call_frame = .{ .alignment = .@"16" },
155175 .extra_temps = .{160576 .extra_temps = .{
155176 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },160577 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155177 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },160578 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155178 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },160579 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155179 .unused,160580 .unused,
155180 .unused,160581 .unused,
...@@ -155185,7 +160586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155185,7 +160586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155185 .unused,160586 .unused,
155186 .unused,160587 .unused,
155187 },160588 },
155188 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },160589 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },160590 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155190 .each = .{ .once = &.{160591 .each = .{ .once = &.{
155191 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },160592 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -155205,7 +160606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155205,7 +160606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155205 .call_frame = .{ .alignment = .@"16" },160606 .call_frame = .{ .alignment = .@"16" },
155206 .extra_temps = .{160607 .extra_temps = .{
155207 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },160608 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155208 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },160609 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155209 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },160610 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155210 .unused,160611 .unused,
155211 .unused,160612 .unused,
...@@ -155216,7 +160617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155216,7 +160617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155216 .unused,160617 .unused,
155217 .unused,160618 .unused,
155218 },160619 },
155219 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },160620 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155220 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },160621 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155221 .each = .{ .once = &.{160622 .each = .{ .once = &.{
155222 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },160623 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -155936,7 +161337,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155936,7 +161337,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155936 .call_frame = .{ .alignment = .@"16" },161337 .call_frame = .{ .alignment = .@"16" },
155937 .extra_temps = .{161338 .extra_temps = .{
155938 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },161339 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155939 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161340 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155940 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },161341 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
155941 .unused,161342 .unused,
155942 .unused,161343 .unused,
...@@ -155947,7 +161348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155947,7 +161348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155947 .unused,161348 .unused,
155948 .unused,161349 .unused,
155949 },161350 },
155950 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },161351 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155951 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },161352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155952 .each = .{ .once = &.{161353 .each = .{ .once = &.{
155953 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },161354 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -155969,7 +161370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155969,7 +161370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155969 .call_frame = .{ .alignment = .@"16" },161370 .call_frame = .{ .alignment = .@"16" },
155970 .extra_temps = .{161371 .extra_temps = .{
155971 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },161372 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155972 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161373 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155973 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },161374 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
155974 .unused,161375 .unused,
155975 .unused,161376 .unused,
...@@ -155980,7 +161381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155980,7 +161381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155980 .unused,161381 .unused,
155981 .unused,161382 .unused,
155982 },161383 },
155983 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },161384 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155984 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },161385 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155985 .each = .{ .once = &.{161386 .each = .{ .once = &.{
155986 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },161387 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -156004,7 +161405,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -156004,7 +161405,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156004 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },161405 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
156005 .{ .type = .f16, .kind = .{ .reg = .ax } },161406 .{ .type = .f16, .kind = .{ .reg = .ax } },
156006 .{ .type = .f32, .kind = .mem },161407 .{ .type = .f32, .kind = .mem },
156007 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161408 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
156008 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },161409 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
156009 .unused,161410 .unused,
156010 .unused,161411 .unused,
...@@ -156013,7 +161414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -156013,7 +161414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156013 .unused,161414 .unused,
156014 .unused,161415 .unused,
156015 },161416 },
156016 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },161417 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
156017 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },161418 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
156018 .each = .{ .once = &.{161419 .each = .{ .once = &.{
156019 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },161420 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -157362,6 +162763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157362,6 +162763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157362 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },162763 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
157363 } },162764 } },
157364 }, .{162765 }, .{
162766 .required_abi = .gnu,
157365 .required_features = .{ .x87, null, null, null },162767 .required_features = .{ .x87, null, null, null },
157366 .dst_constraints = .{ .{ .float = .tbyte }, .any },162768 .dst_constraints = .{ .{ .float = .tbyte }, .any },
157367 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },162769 .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 {...@@ -157369,8 +162771,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157369 .{ .src = .{ .to_mem, .none, .none } },162771 .{ .src = .{ .to_mem, .none, .none } },
157370 },162772 },
157371 .extra_temps = .{162773 .extra_temps = .{
157372 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157373 .{ .type = .f80, .kind = .{ .reg = .st7 } },162774 .{ .type = .f80, .kind = .{ .reg = .st7 } },
162775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157374 .{ .type = .f80, .kind = .{ .reg = .st6 } },162776 .{ .type = .f80, .kind = .{ .reg = .st6 } },
157375 .unused,162777 .unused,
157376 .unused,162778 .unused,
...@@ -157384,14 +162786,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157384,14 +162786,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157384 .dst_temps = .{ .{ .rc = .x87 }, .unused },162786 .dst_temps = .{ .{ .rc = .x87 }, .unused },
157385 .clobbers = .{ .eflags = true },162787 .clobbers = .{ .eflags = true },
157386 .each = .{ .once = &.{162788 .each = .{ .once = &.{
157387 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
157388 .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ },162789 .{ ._, .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), ._, ._, ._ },
157390 .{ ._, .f_p, .add, ._, ._, ._, ._ },162792 .{ ._, .f_p, .add, ._, ._, ._, ._ },
157391 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },162793 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
157392 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },162794 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
157393 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },162795 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
157394 } },162796 } },
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 } },
157395 }, .{162835 }, .{
157396 .required_features = .{ .avx, null, null, null },162836 .required_features = .{ .avx, null, null, null },
157397 .dst_constraints = .{ .{ .float = .xword }, .any },162837 .dst_constraints = .{ .{ .float = .xword }, .any },
...@@ -157402,7 +162842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157402,7 +162842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157402 .call_frame = .{ .alignment = .@"16" },162842 .call_frame = .{ .alignment = .@"16" },
157403 .extra_temps = .{162843 .extra_temps = .{
157404 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },162844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157405 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },162845 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157406 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },162846 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157407 .unused,162847 .unused,
157408 .unused,162848 .unused,
...@@ -157413,7 +162853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157413,7 +162853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157413 .unused,162853 .unused,
157414 .unused,162854 .unused,
157415 },162855 },
157416 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },162856 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157417 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },162857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157418 .each = .{ .once = &.{162858 .each = .{ .once = &.{
157419 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },162859 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -157433,7 +162873,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157433,7 +162873,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157433 .call_frame = .{ .alignment = .@"16" },162873 .call_frame = .{ .alignment = .@"16" },
157434 .extra_temps = .{162874 .extra_temps = .{
157435 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },162875 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157436 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },162876 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157437 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },162877 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157438 .unused,162878 .unused,
157439 .unused,162879 .unused,
...@@ -157444,7 +162884,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157444,7 +162884,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157444 .unused,162884 .unused,
157445 .unused,162885 .unused,
157446 },162886 },
157447 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },162887 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157448 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },162888 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157449 .each = .{ .once = &.{162889 .each = .{ .once = &.{
157450 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },162890 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -157464,7 +162904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157464,7 +162904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157464 .call_frame = .{ .alignment = .@"16" },162904 .call_frame = .{ .alignment = .@"16" },
157465 .extra_temps = .{162905 .extra_temps = .{
157466 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },162906 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157467 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },162907 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157468 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },162908 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157469 .unused,162909 .unused,
157470 .unused,162910 .unused,
...@@ -157475,7 +162915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157475,7 +162915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157475 .unused,162915 .unused,
157476 .unused,162916 .unused,
157477 },162917 },
157478 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },162918 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },162919 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157480 .each = .{ .once = &.{162920 .each = .{ .once = &.{
157481 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },162921 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -157946,7 +163386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157946,7 +163386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157946 .call_frame = .{ .alignment = .@"16" },163386 .call_frame = .{ .alignment = .@"16" },
157947 .extra_temps = .{163387 .extra_temps = .{
157948 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },163388 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157949 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },163389 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157950 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },163390 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
157951 .unused,163391 .unused,
157952 .unused,163392 .unused,
...@@ -157957,7 +163397,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157957,7 +163397,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157957 .unused,163397 .unused,
157958 .unused,163398 .unused,
157959 },163399 },
157960 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },163400 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },163401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157962 .each = .{ .once = &.{163402 .each = .{ .once = &.{
157963 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },163403 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
...@@ -157979,7 +163419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157979,7 +163419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157979 .call_frame = .{ .alignment = .@"16" },163419 .call_frame = .{ .alignment = .@"16" },
157980 .extra_temps = .{163420 .extra_temps = .{
157981 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },163421 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157982 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },163422 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157983 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },163423 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
157984 .unused,163424 .unused,
157985 .unused,163425 .unused,
...@@ -157990,7 +163430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157990,7 +163430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157990 .unused,163430 .unused,
157991 .unused,163431 .unused,
157992 },163432 },
157993 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },163433 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157994 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },163434 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157995 .each = .{ .once = &.{163435 .each = .{ .once = &.{
157996 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },163436 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -158014,7 +163454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158014,7 +163454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },163454 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158015 .{ .type = .f16, .kind = .{ .reg = .ax } },163455 .{ .type = .f16, .kind = .{ .reg = .ax } },
158016 .{ .type = .f32, .kind = .mem },163456 .{ .type = .f32, .kind = .mem },
158017 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },163457 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
158018 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },163458 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158019 .unused,163459 .unused,
158020 .unused,163460 .unused,
...@@ -158023,7 +163463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158023,7 +163463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158023 .unused,163463 .unused,
158024 .unused,163464 .unused,
158025 },163465 },
158026 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },163466 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
158027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },163467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
158028 .each = .{ .once = &.{163468 .each = .{ .once = &.{
158029 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },163469 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
...@@ -158905,6 +164345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158905,6 +164345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158905 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },164345 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
158906 } },164346 } },
158907 }, .{164347 }, .{
164348 .required_abi = .gnu,
158908 .required_features = .{ .x87, null, null, null },164349 .required_features = .{ .x87, null, null, null },
158909 .dst_constraints = .{ .{ .float = .tbyte }, .any },164350 .dst_constraints = .{ .{ .float = .tbyte }, .any },
158910 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },164351 .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 {...@@ -158935,6 +164376,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158935 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },164376 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
158936 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },164377 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
158937 } },164378 } },
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 } },
158938 }, .{164417 }, .{
158939 .required_features = .{ .avx, null, null, null },164418 .required_features = .{ .avx, null, null, null },
158940 .dst_constraints = .{ .{ .float = .xword }, .any },164419 .dst_constraints = .{ .{ .float = .xword }, .any },
...@@ -158945,7 +164424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158945,7 +164424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158945 .call_frame = .{ .alignment = .@"16" },164424 .call_frame = .{ .alignment = .@"16" },
158946 .extra_temps = .{164425 .extra_temps = .{
158947 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },164426 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158948 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },164427 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
158949 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },164428 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
158950 .unused,164429 .unused,
158951 .unused,164430 .unused,
...@@ -158956,7 +164435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158956,7 +164435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158956 .unused,164435 .unused,
158957 .unused,164436 .unused,
158958 },164437 },
158959 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },164438 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
158960 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },164439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
158961 .each = .{ .once = &.{164440 .each = .{ .once = &.{
158962 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },164441 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -158976,7 +164455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158976,7 +164455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158976 .call_frame = .{ .alignment = .@"16" },164455 .call_frame = .{ .alignment = .@"16" },
158977 .extra_temps = .{164456 .extra_temps = .{
158978 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },164457 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158979 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },164458 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
158980 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },164459 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
158981 .unused,164460 .unused,
158982 .unused,164461 .unused,
...@@ -158987,7 +164466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158987,7 +164466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158987 .unused,164466 .unused,
158988 .unused,164467 .unused,
158989 },164468 },
158990 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },164469 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
158991 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },164470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
158992 .each = .{ .once = &.{164471 .each = .{ .once = &.{
158993 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },164472 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -159007,7 +164486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -159007,7 +164486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159007 .call_frame = .{ .alignment = .@"16" },164486 .call_frame = .{ .alignment = .@"16" },
159008 .extra_temps = .{164487 .extra_temps = .{
159009 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },164488 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
159010 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },164489 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
159011 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },164490 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159012 .unused,164491 .unused,
159013 .unused,164492 .unused,
...@@ -159018,7 +164497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -159018,7 +164497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159018 .unused,164497 .unused,
159019 .unused,164498 .unused,
159020 },164499 },
159021 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },164500 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
159022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },164501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
159023 .each = .{ .once = &.{164502 .each = .{ .once = &.{
159024 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },164503 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
...@@ -159040,7 +164519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -159040,7 +164519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159040 };164519 };
159041 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);164520 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
159042 },164521 },
159043 .splat => |air_tag| if (use_old) try cg.airSplat(inst) else fallback: {164522 .splat => |air_tag| fallback: {
159044 const ty_op = air_datas[@intFromEnum(inst)].ty_op;164523 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
159045 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);164524 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);
159046 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});164525 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
...@@ -160345,16 +165824,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160345,16 +165824,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160345 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },165824 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
160346 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },165825 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
160347 } },165826 } },
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 = &.{} },
160358 }, .{165827 }, .{
160359 .required_features = .{ .avx2, null, null, null },165828 .required_features = .{ .avx2, null, null, null },
160360 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },165829 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },
...@@ -160592,16 +166061,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160592,16 +166061,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160592 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },166061 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
160593 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },166062 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
160594 } },166063 } },
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 = &.{} },
160605 }, .{166064 }, .{
160606 .required_features = .{ .@"64bit", .avx2, null, null },166065 .required_features = .{ .@"64bit", .avx2, null, null },
160607 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },166066 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
...@@ -160859,11 +166318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160859,11 +166318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160859166318
160860 .memset => try cg.airMemset(inst, false),166319 .memset => try cg.airMemset(inst, false),
160861 .memset_safe => try cg.airMemset(inst, true),166320 .memset_safe => try cg.airMemset(inst, true),
160862 .memcpy, .memmove => |air_tag| if (use_old) switch (air_tag) {166321 .memcpy, .memmove => |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 {
160867 const bin_op = air_datas[@intFromEnum(inst)].bin_op;166322 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
160868 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }) ++ .{undefined};166323 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }) ++ .{undefined};
160869 ops[2] = ops[0].getByteLen(cg) catch |err| switch (err) {166324 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 {...@@ -160882,9 +166337,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160882 inline .memcpy, .memmove => |symbol| comptime &.{.{166337 inline .memcpy, .memmove => |symbol| comptime &.{.{
160883 .patterns = &.{166338 .patterns = &.{
160884 .{ .src = .{166339 .{ .src = .{
160885 .{ .to_param_gpr = .{ .cc = .ccc, .at = 0 } },166340 .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } },
160886 .{ .to_param_gpr = .{ .cc = .ccc, .at = 1 } },166341 .{ .to_param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } },
160887 .{ .to_param_gpr = .{ .cc = .ccc, .at = 2 } },166342 .{ .to_param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } },
160888 } },166343 } },
160889 },166344 },
160890 .call_frame = .{ .alignment = .@"16" },166345 .call_frame = .{ .alignment = .@"16" },
...@@ -160926,7 +166381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160926,7 +166381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160926 .atomic_store_release => try cg.airAtomicStore(inst, .release),166381 .atomic_store_release => try cg.airAtomicStore(inst, .release),
160927 .atomic_store_seq_cst => try cg.airAtomicStore(inst, .seq_cst),166382 .atomic_store_seq_cst => try cg.airAtomicStore(inst, .seq_cst),
160928 .atomic_rmw => try cg.airAtomicRmw(inst),166383 .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| {
160930 const un_op = air_datas[@intFromEnum(inst)].un_op;166385 const un_op = air_datas[@intFromEnum(inst)].un_op;
160931 var ops = try cg.tempsFromOperands(inst, .{un_op});166386 var ops = try cg.tempsFromOperands(inst, .{un_op});
160932 var res: [1]Temp = undefined;166387 var res: [1]Temp = undefined;
...@@ -160934,7 +166389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160934,7 +166389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160934 .required_features = .{ .avx, null, null, null },166389 .required_features = .{ .avx, null, null, null },
160935 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166390 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
160936 .patterns = &.{166391 .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 } },
160938 },166393 },
160939 .call_frame = .{ .alignment = .@"32" },166394 .call_frame = .{ .alignment = .@"32" },
160940 .extra_temps = .{166395 .extra_temps = .{
...@@ -160960,7 +166415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160960,7 +166415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160960 .required_features = .{ .sse, null, null, null },166415 .required_features = .{ .sse, null, null, null },
160961 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166416 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
160962 .patterns = &.{166417 .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 } },
160964 },166419 },
160965 .call_frame = .{ .alignment = .@"16" },166420 .call_frame = .{ .alignment = .@"16" },
160966 .extra_temps = .{166421 .extra_temps = .{
...@@ -160985,7 +166440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160985,7 +166440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160985 }, .{166440 }, .{
160986 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166441 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
160987 .patterns = &.{166442 .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 } },
160989 },166444 },
160990 .call_frame = .{ .alignment = .@"8" },166445 .call_frame = .{ .alignment = .@"8" },
160991 .extra_temps = .{166446 .extra_temps = .{
...@@ -161017,7 +166472,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161017,7 +166472,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161017 };166472 };
161018 try res[0].finish(inst, &.{un_op}, &ops, cg);166473 try res[0].finish(inst, &.{un_op}, &ops, cg);
161019 },166474 },
161020 .tag_name => |air_tag| if (use_old) try cg.airTagName(inst, false) else {166475 .tag_name => |air_tag| {
161021 const un_op = air_datas[@intFromEnum(inst)].un_op;166476 const un_op = air_datas[@intFromEnum(inst)].un_op;
161022 var ops = try cg.tempsFromOperands(inst, .{un_op});166477 var ops = try cg.tempsFromOperands(inst, .{un_op});
161023 var res: [1]Temp = undefined;166478 var res: [1]Temp = undefined;
...@@ -161025,7 +166480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161025,7 +166480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161025 .required_features = .{ .avx, null, null, null },166480 .required_features = .{ .avx, null, null, null },
161026 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166481 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161027 .patterns = &.{166482 .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 } },
161029 },166484 },
161030 .call_frame = .{ .alignment = .@"32" },166485 .call_frame = .{ .alignment = .@"32" },
161031 .extra_temps = .{166486 .extra_temps = .{
...@@ -161041,7 +166496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161041,7 +166496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161041 .unused,166496 .unused,
161042 .unused,166497 .unused,
161043 },166498 },
161044 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .at = 1 } }, .unused },166499 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .after = 1, .at = 1 } }, .unused },
161045 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },166500 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },
161046 .each = .{ .once = &.{166501 .each = .{ .once = &.{
161047 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },166502 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -161050,7 +166505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161050,7 +166505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161050 .required_features = .{ .sse, null, null, null },166505 .required_features = .{ .sse, null, null, null },
161051 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166506 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161052 .patterns = &.{166507 .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 } },
161054 },166509 },
161055 .call_frame = .{ .alignment = .@"16" },166510 .call_frame = .{ .alignment = .@"16" },
161056 .extra_temps = .{166511 .extra_temps = .{
...@@ -161066,7 +166521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161066,7 +166521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161066 .unused,166521 .unused,
161067 .unused,166522 .unused,
161068 },166523 },
161069 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .at = 1 } }, .unused },166524 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .after = 1, .at = 1 } }, .unused },
161070 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },166525 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },
161071 .each = .{ .once = &.{166526 .each = .{ .once = &.{
161072 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },166527 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -161074,7 +166529,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161074,7 +166529,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161074 }, .{166529 }, .{
161075 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166530 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161076 .patterns = &.{166531 .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 } },
161078 },166533 },
161079 .call_frame = .{ .alignment = .@"8" },166534 .call_frame = .{ .alignment = .@"8" },
161080 .extra_temps = .{166535 .extra_temps = .{
...@@ -161090,7 +166545,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161090,7 +166545,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161090 .unused,166545 .unused,
161091 .unused,166546 .unused,
161092 },166547 },
161093 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .at = 1 } }, .unused },166548 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .after = 1, .at = 1 } }, .unused },
161094 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },166549 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },
161095 .each = .{ .once = &.{166550 .each = .{ .once = &.{
161096 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },166551 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
...@@ -161106,7 +166561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161106,7 +166561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161106 try ops[0].toPair(&res[0], cg);166561 try ops[0].toPair(&res[0], cg);
161107 try res[0].finish(inst, &.{un_op}, &ops, cg);166562 try res[0].finish(inst, &.{un_op}, &ops, cg);
161108 },166563 },
161109 .error_name => |air_tag| if (use_old) try cg.airErrorName(inst) else {166564 .error_name => |air_tag| {
161110 const un_op = air_datas[@intFromEnum(inst)].un_op;166565 const un_op = air_datas[@intFromEnum(inst)].un_op;
161111 var ops = try cg.tempsFromOperands(inst, .{un_op});166566 var ops = try cg.tempsFromOperands(inst, .{un_op});
161112 var res: [2]Temp = undefined;166567 var res: [2]Temp = undefined;
...@@ -161214,7 +166669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161214,7 +166669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161214 };166669 };
161215 try res[0].finish(inst, &.{un_op}, &ops, cg);166670 try res[0].finish(inst, &.{un_op}, &ops, cg);
161216 },166671 },
161217 .error_set_has_value => |air_tag| if (use_old) try cg.airErrorSetHasValue(inst) else {166672 .error_set_has_value => |air_tag| {
161218 const ty_op = air_datas[@intFromEnum(inst)].ty_op;166673 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
161219 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}) ++ .{try cg.tempInit(ty_op.ty.toType(), .none)};166674 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}) ++ .{try cg.tempInit(ty_op.ty.toType(), .none)};
161220 var res: [1]Temp = undefined;166675 var res: [1]Temp = undefined;
...@@ -161222,7 +166677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161222,7 +166677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161222 .required_features = .{ .avx, null, null, null },166677 .required_features = .{ .avx, null, null, null },
161223 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166678 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161224 .patterns = &.{166679 .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 } },
161226 },166681 },
161227 .call_frame = .{ .alignment = .@"32" },166682 .call_frame = .{ .alignment = .@"32" },
161228 .extra_temps = .{166683 .extra_temps = .{
...@@ -161248,7 +166703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161248,7 +166703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161248 .required_features = .{ .sse, null, null, null },166703 .required_features = .{ .sse, null, null, null },
161249 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166704 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161250 .patterns = &.{166705 .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 } },
161252 },166707 },
161253 .call_frame = .{ .alignment = .@"16" },166708 .call_frame = .{ .alignment = .@"16" },
161254 .extra_temps = .{166709 .extra_temps = .{
...@@ -161273,7 +166728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161273,7 +166728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161273 }, .{166728 }, .{
161274 .src_constraints = .{ .{ .int = .gpr }, .any, .any },166729 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161275 .patterns = &.{166730 .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 } },
161277 },166732 },
161278 .call_frame = .{ .alignment = .@"8" },166733 .call_frame = .{ .alignment = .@"8" },
161279 .extra_temps = .{166734 .extra_temps = .{
...@@ -161306,7 +166761,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161306,7 +166761,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161306 for (ops[1..]) |op| try op.die(cg);166761 for (ops[1..]) |op| try op.die(cg);
161307 try res[0].finish(inst, &.{ty_op.operand}, ops[0..1], cg);166762 try res[0].finish(inst, &.{ty_op.operand}, ops[0..1], cg);
161308 },166763 },
161309 .aggregate_init => |air_tag| if (use_old) try cg.airAggregateInit(inst) else fallback: {166764 .aggregate_init => |air_tag| fallback: {
161310 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;166765 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
161311 const agg_ty = ty_pl.ty.toType();166766 const agg_ty = ty_pl.ty.toType();
161312 if ((agg_ty.isVector(zcu) and agg_ty.childType(zcu).toIntern() == .bool_type) or166767 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 {...@@ -161376,7 +166831,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161376 }166831 }
161377 try res.finish(inst, &.{}, &.{}, cg);166832 try res.finish(inst, &.{}, &.{}, cg);
161378 },166833 },
161379 .union_init => if (use_old) try cg.airUnionInit(inst) else {166834 .union_init => {
161380 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;166835 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
161381 const union_init = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;166836 const union_init = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;
161382 const union_ty = ty_pl.ty.toType();166837 const union_ty = ty_pl.ty.toType();
...@@ -161425,7 +166880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161425,7 +166880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161425 const res = try cg.tempInit(.void, .none);166880 const res = try cg.tempInit(.void, .none);
161426 try res.finish(inst, &.{prefetch.ptr}, &ops, cg);166881 try res.finish(inst, &.{prefetch.ptr}, &ops, cg);
161427 },166882 },
161428 .mul_add => |air_tag| if (use_old) try cg.airMulAdd(inst) else {166883 .mul_add => |air_tag| {
161429 const pl_op = air_datas[@intFromEnum(inst)].pl_op;166884 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
161430 const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data;166885 const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data;
161431 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs, pl_op.operand });166886 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 {...@@ -161469,7 +166924,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161469 .{ .scalar_float = .{ .of = .word, .is = .word } },166924 .{ .scalar_float = .{ .of = .word, .is = .word } },
161470 },166925 },
161471 .patterns = &.{166926 .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 } },
161473 },166932 },
161474 .call_frame = .{ .alignment = .@"16" },166933 .call_frame = .{ .alignment = .@"16" },
161475 .extra_temps = .{166934 .extra_temps = .{
...@@ -161577,7 +167036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161577,7 +167036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161577 .{ .src = .{ .to_mem, .to_mem, .to_mem } },167036 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
161578 },167037 },
161579 .extra_temps = .{167038 .extra_temps = .{
161580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167039 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161581 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },167040 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
161582 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },167041 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
161583 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },167042 .{ .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 {...@@ -161591,14 +167050,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161591 },167050 },
161592 .dst_temps = .{ .mem, .unused },167051 .dst_temps = .{ .mem, .unused },
161593 .each = .{ .once = &.{167052 .each = .{ .once = &.{
161594 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167053 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
161595 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },167054 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
161596 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },167055 .{ ._, .v_ps, .cvtph2, .tmp2y, .memi(.src1x, .tmp0), ._, ._ },
161597 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },167056 .{ ._, .v_ps, .cvtph2, .tmp3y, .memi(.src2x, .tmp0), ._, ._ },
161598 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ },167057 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ },
161599 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },167058 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
161600 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },167059 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
161601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167060 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161602 } },167061 } },
161603 }, .{167062 }, .{
161604 .required_features = .{ .avx, null, null, null },167063 .required_features = .{ .avx, null, null, null },
...@@ -161612,10 +167071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161612,10 +167071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161612 },167071 },
161613 .call_frame = .{ .alignment = .@"16" },167072 .call_frame = .{ .alignment = .@"16" },
161614 .extra_temps = .{167073 .extra_temps = .{
161615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167074 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161616 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },167075 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
161617 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },167076 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
161618 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },167077 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161619 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },167078 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161620 .unused,167079 .unused,
161621 .unused,167080 .unused,
...@@ -161627,15 +167086,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161627,15 +167086,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161627 .dst_temps = .{ .mem, .unused },167086 .dst_temps = .{ .mem, .unused },
161628 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161629 .each = .{ .once = &.{167088 .each = .{ .once = &.{
161630 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167089 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161631 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },167090 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
161632 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },167091 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memi(.src0w, .tmp0), .ui(0) },
161633 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },167092 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memi(.src1w, .tmp0), .ui(0) },
161634 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0) },167093 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memi(.src2w, .tmp0), .ui(0) },
161635 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167094 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
161636 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },167095 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
161637 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },167096 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
161638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167097 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161639 } },167098 } },
161640 }, .{167099 }, .{
161641 .required_features = .{ .sse4_1, null, null, null },167100 .required_features = .{ .sse4_1, null, null, null },
...@@ -161649,10 +167108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161649,10 +167108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161649 },167108 },
161650 .call_frame = .{ .alignment = .@"16" },167109 .call_frame = .{ .alignment = .@"16" },
161651 .extra_temps = .{167110 .extra_temps = .{
161652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167111 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161653 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },167112 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
161654 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },167113 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
161655 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },167114 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161656 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },167115 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161657 .unused,167116 .unused,
161658 .unused,167117 .unused,
...@@ -161664,17 +167123,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161664,17 +167123,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161664 .dst_temps = .{ .mem, .unused },167123 .dst_temps = .{ .mem, .unused },
161665 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167124 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161666 .each = .{ .once = &.{167125 .each = .{ .once = &.{
161667 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167126 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161668 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },167127 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
161669 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },167128 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
161670 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },167129 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
161671 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },167130 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
161672 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },167131 .{ ._, .p_w, .insr, .tmp2x, .memi(.src1w, .tmp0), .ui(0), ._ },
161673 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },167132 .{ ._, .p_w, .insr, .tmp3x, .memi(.src2w, .tmp0), .ui(0), ._ },
161674 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167133 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
161675 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },167134 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
161676 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },167135 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
161677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167136 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161678 } },167137 } },
161679 }, .{167138 }, .{
161680 .required_features = .{ .sse2, null, null, null },167139 .required_features = .{ .sse2, null, null, null },
...@@ -161688,10 +167147,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161688,10 +167147,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161688 },167147 },
161689 .call_frame = .{ .alignment = .@"16" },167148 .call_frame = .{ .alignment = .@"16" },
161690 .extra_temps = .{167149 .extra_temps = .{
161691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167150 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161692 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },167151 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
161693 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },167152 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
161694 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },167153 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161695 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },167154 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161696 .{ .type = .f16, .kind = .{ .reg = .ax } },167155 .{ .type = .f16, .kind = .{ .reg = .ax } },
161697 .unused,167156 .unused,
...@@ -161703,18 +167162,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161703,18 +167162,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161703 .dst_temps = .{ .mem, .unused },167162 .dst_temps = .{ .mem, .unused },
161704 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167163 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161705 .each = .{ .once = &.{167164 .each = .{ .once = &.{
161706 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167165 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161707 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },167166 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
161708 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },167167 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
161709 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },167168 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
161710 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },167169 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
161711 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },167170 .{ ._, .p_w, .insr, .tmp2x, .memi(.src1w, .tmp0), .ui(0), ._ },
161712 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },167171 .{ ._, .p_w, .insr, .tmp3x, .memi(.src2w, .tmp0), .ui(0), ._ },
161713 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167172 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
161714 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },167173 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
161715 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },167174 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp5w, ._, ._ },
161716 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },167175 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
161717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167176 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161718 } },167177 } },
161719 }, .{167178 }, .{
161720 .required_features = .{ .sse, null, null, null },167179 .required_features = .{ .sse, null, null, null },
...@@ -161728,12 +167187,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161728,12 +167187,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161728 },167187 },
161729 .call_frame = .{ .alignment = .@"16" },167188 .call_frame = .{ .alignment = .@"16" },
161730 .extra_temps = .{167189 .extra_temps = .{
161731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167190 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161732 .{ .type = .f16, .kind = .{ .reg = .ax } },167191 .{ .type = .f16, .kind = .{ .reg = .ax } },
161733 .{ .type = .f32, .kind = .mem },167192 .{ .type = .f32, .kind = .mem },
161734 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },167193 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
161735 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },167194 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
161736 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },167195 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161737 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },167196 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161738 .unused,167197 .unused,
161739 .unused,167198 .unused,
...@@ -161743,22 +167202,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161743,22 +167202,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161743 .dst_temps = .{ .mem, .unused },167202 .dst_temps = .{ .mem, .unused },
161744 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167203 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161745 .each = .{ .once = &.{167204 .each = .{ .once = &.{
161746 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167205 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161747 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },167206 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
161748 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },167207 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
161749 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },167208 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
161750 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },167209 .{ ._, ._, .movzx, .tmp1d, .memi(.src1w, .tmp0), ._, ._ },
161751 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },167210 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
161752 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },167211 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
161753 .{ ._, ._, .movzx, .tmp1d, .memia(.src2w, .tmp0, .add_unaligned_size), ._, ._ },167212 .{ ._, ._, .movzx, .tmp1d, .memi(.src2w, .tmp0), ._, ._ },
161754 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },167213 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
161755 .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ },167214 .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ },
161756 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },167215 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
161757 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },167216 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
161758 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },167217 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
161759 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },167218 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
161760 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },167219 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
161761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167220 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161762 } },167221 } },
161763 }, .{167222 }, .{
161764 .required_features = .{ .fma, null, null, null },167223 .required_features = .{ .fma, null, null, null },
...@@ -161818,7 +167277,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161818,7 +167277,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161818 .{ .scalar_float = .{ .of = .dword, .is = .dword } },167277 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
161819 },167278 },
161820 .patterns = &.{167279 .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 } },
161822 },167285 },
161823 .call_frame = .{ .alignment = .@"16" },167286 .call_frame = .{ .alignment = .@"16" },
161824 .extra_temps = .{167287 .extra_temps = .{
...@@ -161950,7 +167413,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161950,7 +167413,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161950 .{ .src = .{ .to_mem, .to_mem, .to_mem } },167413 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
161951 },167414 },
161952 .extra_temps = .{167415 .extra_temps = .{
161953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167416 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161954 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },167417 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
161955 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },167418 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
161956 .unused,167419 .unused,
...@@ -161964,13 +167427,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161964,13 +167427,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161964 },167427 },
161965 .dst_temps = .{ .mem, .unused },167428 .dst_temps = .{ .mem, .unused },
161966 .each = .{ .once = &.{167429 .each = .{ .once = &.{
161967 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167430 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
161968 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },167431 .{ .@"0:", .v_ps, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
161969 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },167432 .{ ._, .v_ps, .mova, .tmp2y, .memi(.src1y, .tmp0), ._, ._ },
161970 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },167433 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memi(.src2y, .tmp0), ._ },
161971 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },167434 .{ ._, .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
161972 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },167435 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
161973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167436 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161974 } },167437 } },
161975 }, .{167438 }, .{
161976 .required_features = .{ .avx, null, null, null },167439 .required_features = .{ .avx, null, null, null },
...@@ -161984,10 +167447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161984,10 +167447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161984 },167447 },
161985 .call_frame = .{ .alignment = .@"16" },167448 .call_frame = .{ .alignment = .@"16" },
161986 .extra_temps = .{167449 .extra_temps = .{
161987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161988 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },167451 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
161989 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },167452 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
161990 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },167453 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161991 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },167454 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
161992 .unused,167455 .unused,
161993 .unused,167456 .unused,
...@@ -161999,14 +167462,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161999,14 +167462,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161999 .dst_temps = .{ .mem, .unused },167462 .dst_temps = .{ .mem, .unused },
162000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162001 .each = .{ .once = &.{167464 .each = .{ .once = &.{
162002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167465 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
162003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },167466 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
162004 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },167467 .{ ._, .v_ss, .mov, .tmp2x, .memi(.src1d, .tmp0), ._, ._ },
162005 .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },167468 .{ ._, .v_ss, .mov, .tmp3x, .memi(.src2d, .tmp0), ._, ._ },
162006 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167469 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162007 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },167470 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
162008 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },167471 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
162009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167472 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162010 } },167473 } },
162011 }, .{167474 }, .{
162012 .required_features = .{ .sse, null, null, null },167475 .required_features = .{ .sse, null, null, null },
...@@ -162020,10 +167483,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162020,10 +167483,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162020 },167483 },
162021 .call_frame = .{ .alignment = .@"16" },167484 .call_frame = .{ .alignment = .@"16" },
162022 .extra_temps = .{167485 .extra_temps = .{
162023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167486 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162024 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },167487 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162025 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },167488 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162026 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },167489 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162027 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },167490 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
162028 .unused,167491 .unused,
162029 .unused,167492 .unused,
...@@ -162035,14 +167498,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162035,14 +167498,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162035 .dst_temps = .{ .mem, .unused },167498 .dst_temps = .{ .mem, .unused },
162036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167499 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162037 .each = .{ .once = &.{167500 .each = .{ .once = &.{
162038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167501 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
162039 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },167502 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
162040 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },167503 .{ ._, ._ss, .mov, .tmp2x, .memi(.src1d, .tmp0), ._, ._ },
162041 .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },167504 .{ ._, ._ss, .mov, .tmp3x, .memi(.src2d, .tmp0), ._, ._ },
162042 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167505 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162043 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },167506 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
162044 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },167507 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
162045 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167508 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162046 } },167509 } },
162047 }, .{167510 }, .{
162048 .required_features = .{ .fma, null, null, null },167511 .required_features = .{ .fma, null, null, null },
...@@ -162102,7 +167565,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162102,7 +167565,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162102 .{ .scalar_float = .{ .of = .qword, .is = .qword } },167565 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
162103 },167566 },
162104 .patterns = &.{167567 .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 } },
162106 },167573 },
162107 .call_frame = .{ .alignment = .@"16" },167574 .call_frame = .{ .alignment = .@"16" },
162108 .extra_temps = .{167575 .extra_temps = .{
...@@ -162234,7 +167701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162234,7 +167701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162234 .{ .src = .{ .to_mem, .to_mem, .to_mem } },167701 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
162235 },167702 },
162236 .extra_temps = .{167703 .extra_temps = .{
162237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167704 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162238 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },167705 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
162239 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },167706 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
162240 .unused,167707 .unused,
...@@ -162248,13 +167715,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162248,13 +167715,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162248 },167715 },
162249 .dst_temps = .{ .mem, .unused },167716 .dst_temps = .{ .mem, .unused },
162250 .each = .{ .once = &.{167717 .each = .{ .once = &.{
162251 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167718 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
162252 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },167719 .{ .@"0:", .v_pd, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
162253 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },167720 .{ ._, .v_pd, .mova, .tmp2y, .memi(.src1y, .tmp0), ._, ._ },
162254 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },167721 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memi(.src2y, .tmp0), ._ },
162255 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },167722 .{ ._, .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
162256 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },167723 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
162257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167724 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162258 } },167725 } },
162259 }, .{167726 }, .{
162260 .required_features = .{ .avx, null, null, null },167727 .required_features = .{ .avx, null, null, null },
...@@ -162268,10 +167735,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162268,10 +167735,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162268 },167735 },
162269 .call_frame = .{ .alignment = .@"16" },167736 .call_frame = .{ .alignment = .@"16" },
162270 .extra_temps = .{167737 .extra_temps = .{
162271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167738 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162272 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },167739 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162273 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },167740 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162274 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },167741 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162275 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },167742 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162276 .unused,167743 .unused,
162277 .unused,167744 .unused,
...@@ -162283,14 +167750,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162283,14 +167750,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162283 .dst_temps = .{ .mem, .unused },167750 .dst_temps = .{ .mem, .unused },
162284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167751 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162285 .each = .{ .once = &.{167752 .each = .{ .once = &.{
162286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167753 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
162287 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },167754 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
162288 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },167755 .{ ._, .v_sd, .mov, .tmp2x, .memi(.src1q, .tmp0), ._, ._ },
162289 .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },167756 .{ ._, .v_sd, .mov, .tmp3x, .memi(.src2q, .tmp0), ._, ._ },
162290 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167757 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162291 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },167758 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
162292 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },167759 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
162293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167760 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162294 } },167761 } },
162295 }, .{167762 }, .{
162296 .required_features = .{ .sse2, null, null, null },167763 .required_features = .{ .sse2, null, null, null },
...@@ -162304,10 +167771,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162304,10 +167771,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162304 },167771 },
162305 .call_frame = .{ .alignment = .@"16" },167772 .call_frame = .{ .alignment = .@"16" },
162306 .extra_temps = .{167773 .extra_temps = .{
162307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167774 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162308 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },167775 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162309 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },167776 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162310 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },167777 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162311 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },167778 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162312 .unused,167779 .unused,
162313 .unused,167780 .unused,
...@@ -162319,14 +167786,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162319,14 +167786,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162319 .dst_temps = .{ .mem, .unused },167786 .dst_temps = .{ .mem, .unused },
162320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162321 .each = .{ .once = &.{167788 .each = .{ .once = &.{
162322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167789 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
162323 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },167790 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
162324 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },167791 .{ ._, ._sd, .mov, .tmp2x, .memi(.src1q, .tmp0), ._, ._ },
162325 .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },167792 .{ ._, ._sd, .mov, .tmp3x, .memi(.src2q, .tmp0), ._, ._ },
162326 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167793 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162327 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },167794 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
162328 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },167795 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
162329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167796 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162330 } },167797 } },
162331 }, .{167798 }, .{
162332 .required_features = .{ .sse, null, null, null },167799 .required_features = .{ .sse, null, null, null },
...@@ -162340,10 +167807,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162340,10 +167807,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162340 },167807 },
162341 .call_frame = .{ .alignment = .@"16" },167808 .call_frame = .{ .alignment = .@"16" },
162342 .extra_temps = .{167809 .extra_temps = .{
162343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167810 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162344 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },167811 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162345 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },167812 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162346 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },167813 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162347 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },167814 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162348 .unused,167815 .unused,
162349 .unused,167816 .unused,
...@@ -162355,19 +167822,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162355,19 +167822,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162355 .dst_temps = .{ .mem, .unused },167822 .dst_temps = .{ .mem, .unused },
162356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167823 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162357 .each = .{ .once = &.{167824 .each = .{ .once = &.{
162358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167825 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
162359 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },167826 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
162360 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },167827 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
162361 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },167828 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
162362 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },167829 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
162363 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },167830 .{ ._, ._ps, .movl, .tmp2x, .memi(.src1q, .tmp0), ._, ._ },
162364 .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },167831 .{ ._, ._ps, .movl, .tmp3x, .memi(.src2q, .tmp0), ._, ._ },
162365 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },167832 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162366 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },167833 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
162367 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },167834 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
162368 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },167835 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162369 } },167836 } },
162370 }, .{167837 }, .{
167838 .required_cc_abi = .sysv64,
162371 .required_features = .{ .sse, .x87, null, null },167839 .required_features = .{ .sse, .x87, null, null },
162372 .src_constraints = .{167840 .src_constraints = .{
162373 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },167841 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -162379,7 +167847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162379,7 +167847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162379 },167847 },
162380 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },167848 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
162381 .extra_temps = .{167849 .extra_temps = .{
162382 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },167850 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162383 .{ .type = .f80, .kind = .{ .frame = .call_frame } },167851 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162384 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },167852 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162385 .unused,167853 .unused,
...@@ -162403,6 +167871,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162403,6 +167871,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162403 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },167871 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
162404 } },167872 } },
162405 }, .{167873 }, .{
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,
162406 .required_features = .{ .sse, .x87, null, null },167908 .required_features = .{ .sse, .x87, null, null },
162407 .src_constraints = .{167909 .src_constraints = .{
162408 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },167910 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
...@@ -162414,8 +167916,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162414,8 +167916,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162414 },167916 },
162415 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },167917 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
162416 .extra_temps = .{167918 .extra_temps = .{
162417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },167919 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162418 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },167920 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162419 .{ .type = .f80, .kind = .{ .frame = .call_frame } },167921 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162420 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },167922 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162421 .unused,167923 .unused,
...@@ -162429,18 +167931,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162429,18 +167931,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162429 .dst_temps = .{ .mem, .unused },167931 .dst_temps = .{ .mem, .unused },
162430 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },167932 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162431 .each = .{ .once = &.{167933 .each = .{ .once = &.{
162432 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },167934 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
162433 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },167935 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
162434 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },167936 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
162435 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },167937 .{ ._, ._ps, .mova, .tmp1x, .memi(.src1x, .tmp0), ._, ._ },
162436 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },167938 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
162437 .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },167939 .{ ._, ._ps, .mova, .tmp1x, .memi(.src2x, .tmp0), ._, ._ },
162438 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },167940 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },
162439 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },167941 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
162440 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },167942 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
162441 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },167943 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
162442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },167944 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
162443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
162444 } },167982 } },
162445 }, .{167983 }, .{
162446 .required_features = .{ .sse, null, null, null },167984 .required_features = .{ .sse, null, null, null },
...@@ -162450,7 +167988,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162450,7 +167988,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162450 .{ .scalar_float = .{ .of = .xword, .is = .xword } },167988 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
162451 },167989 },
162452 .patterns = &.{167990 .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 } },
162454 },167996 },
162455 .call_frame = .{ .alignment = .@"16" },167997 .call_frame = .{ .alignment = .@"16" },
162456 .extra_temps = .{167998 .extra_temps = .{
...@@ -162483,10 +168025,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162483,10 +168025,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162483 },168025 },
162484 .call_frame = .{ .alignment = .@"16" },168026 .call_frame = .{ .alignment = .@"16" },
162485 .extra_temps = .{168027 .extra_temps = .{
162486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },168028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162487 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },168029 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162488 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },168030 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162489 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },168031 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162490 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },168032 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162491 .unused,168033 .unused,
162492 .unused,168034 .unused,
...@@ -162498,14 +168040,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162498,14 +168040,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162498 .dst_temps = .{ .mem, .unused },168040 .dst_temps = .{ .mem, .unused },
162499 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },168041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162500 .each = .{ .once = &.{168042 .each = .{ .once = &.{
162501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },168043 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
162502 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },168044 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
162503 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },168045 .{ ._, .v_dqa, .mov, .tmp2x, .memi(.src1x, .tmp0), ._, ._ },
162504 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },168046 .{ ._, .v_dqa, .mov, .tmp3x, .memi(.src2x, .tmp0), ._, ._ },
162505 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },168047 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162506 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },168048 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
162507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },168049 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
162508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },168050 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162509 } },168051 } },
162510 }, .{168052 }, .{
162511 .required_features = .{ .sse2, null, null, null },168053 .required_features = .{ .sse2, null, null, null },
...@@ -162519,10 +168061,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162519,10 +168061,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162519 },168061 },
162520 .call_frame = .{ .alignment = .@"16" },168062 .call_frame = .{ .alignment = .@"16" },
162521 .extra_temps = .{168063 .extra_temps = .{
162522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },168064 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },168065 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162524 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },168066 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162525 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },168067 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162526 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },168068 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162527 .unused,168069 .unused,
162528 .unused,168070 .unused,
...@@ -162534,14 +168076,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162534,14 +168076,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162534 .dst_temps = .{ .mem, .unused },168076 .dst_temps = .{ .mem, .unused },
162535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },168077 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162536 .each = .{ .once = &.{168078 .each = .{ .once = &.{
162537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },168079 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
162538 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },168080 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
162539 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },168081 .{ ._, ._dqa, .mov, .tmp2x, .memi(.src1x, .tmp0), ._, ._ },
162540 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },168082 .{ ._, ._dqa, .mov, .tmp3x, .memi(.src2x, .tmp0), ._, ._ },
162541 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },168083 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162542 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },168084 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
162543 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },168085 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
162544 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },168086 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162545 } },168087 } },
162546 }, .{168088 }, .{
162547 .required_features = .{ .sse, null, null, null },168089 .required_features = .{ .sse, null, null, null },
...@@ -162555,10 +168097,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162555,10 +168097,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162555 },168097 },
162556 .call_frame = .{ .alignment = .@"16" },168098 .call_frame = .{ .alignment = .@"16" },
162557 .extra_temps = .{168099 .extra_temps = .{
162558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },168100 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162559 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },168101 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162560 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },168102 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
162561 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },168103 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162562 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },168104 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162563 .unused,168105 .unused,
162564 .unused,168106 .unused,
...@@ -162570,14 +168112,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162570,14 +168112,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162570 .dst_temps = .{ .mem, .unused },168112 .dst_temps = .{ .mem, .unused },
162571 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },168113 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162572 .each = .{ .once = &.{168114 .each = .{ .once = &.{
162573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },168115 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .sub_unaligned_size), ._, ._ },
162574 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },168116 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
162575 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },168117 .{ ._, ._ps, .mova, .tmp2x, .memi(.src1x, .tmp0), ._, ._ },
162576 .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },168118 .{ ._, ._ps, .mova, .tmp3x, .memi(.src2x, .tmp0), ._, ._ },
162577 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },168119 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162578 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },168120 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
162579 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },168121 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
162580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },168122 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162581 } },168123 } },
162582 } }) catch |err| switch (err) {168124 } }) catch |err| switch (err) {
162583 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{168125 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
...@@ -162591,7 +168133,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162591,7 +168133,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162591 };168133 };
162592 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg);168134 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg);
162593 },168135 },
162594 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {168136 .field_parent_ptr => {
162595 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;168137 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
162596 const field_parent_ptr = cg.air.extraData(Air.FieldParentPtr, ty_pl.payload).data;168138 const field_parent_ptr = cg.air.extraData(Air.FieldParentPtr, ty_pl.payload).data;
162597 var ops = try cg.tempsFromOperands(inst, .{field_parent_ptr.field_ptr});168139 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 {...@@ -162603,7 +168145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162603 try ops[0].finish(inst, &.{field_parent_ptr.field_ptr}, &ops, cg);168145 try ops[0].finish(inst, &.{field_parent_ptr.field_ptr}, &ops, cg);
162604 },168146 },
162605 .wasm_memory_size, .wasm_memory_grow => unreachable,168147 .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| {
162607 const un_op = air_datas[@intFromEnum(inst)].un_op;168149 const un_op = air_datas[@intFromEnum(inst)].un_op;
162608 var ops = try cg.tempsFromOperands(inst, .{un_op});168150 var ops = try cg.tempsFromOperands(inst, .{un_op});
162609 var res: [1]Temp = undefined;168151 var res: [1]Temp = undefined;
...@@ -163494,36 +169036,38 @@ fn getValueIfFree(self: *CodeGen, value: MCValue, inst: ?Air.Inst.Index) void {...@@ -163494,36 +169036,38 @@ fn getValueIfFree(self: *CodeGen, value: MCValue, inst: ?Air.Inst.Index) void {
163494 self.register_manager.getRegAssumeFree(reg, inst);169036 self.register_manager.getRegAssumeFree(reg, inst);
163495}169037}
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 {
163498 self.register_manager.freeReg(reg);169042 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);
163500}169044}
163501169045
163502fn freeValue(self: *CodeGen, value: MCValue) !void {169046fn freeValue(self: *CodeGen, value: MCValue, comptime opts: FreeOptions) !void {
163503 switch (value) {169047 switch (value) {
163504 .register => |reg| try self.freeReg(reg),169048 .register => |reg| try self.freeReg(reg, opts),
163505 inline .register_pair,169049 inline .register_pair,
163506 .register_triple,169050 .register_triple,
163507 .register_quadruple,169051 .register_quadruple,
163508 => |regs| for (regs) |reg| try self.freeReg(reg),169052 => |regs| for (regs) |reg| try self.freeReg(reg, opts),
163509 .register_offset, .indirect => |reg_off| try self.freeReg(reg_off.reg),169053 .register_offset, .indirect => |reg_off| try self.freeReg(reg_off.reg, opts),
163510 .register_overflow => |reg_ov| {169054 .register_overflow => |reg_ov| {
163511 try self.freeReg(reg_ov.reg);169055 try self.freeReg(reg_ov.reg, opts);
163512 self.eflags_inst = null;169056 self.eflags_inst = null;
163513 },169057 },
163514 .register_mask => |reg_mask| try self.freeReg(reg_mask.reg),169058 .register_mask => |reg_mask| try self.freeReg(reg_mask.reg, opts),
163515 .eflags => self.eflags_inst = null,169059 .eflags => self.eflags_inst = null,
163516 else => {}, // TODO process stack allocation death169060 else => {}, // TODO process stack allocation death
163517 }169061 }
163518}169062}
163519169063
163520fn feed(self: *CodeGen, bt: *Air.Liveness.BigTomb, operand: Air.Inst.Ref) !void {169064fn 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, .{});
163522}169066}
163523169067
163524/// Asserts there is already capacity to insert into top branch inst_table.169068/// Asserts there is already capacity to insert into top branch inst_table.
163525fn processDeath(self: *CodeGen, inst: Air.Inst.Index) !void {169069fn processDeath(self: *CodeGen, inst: Air.Inst.Index, comptime opts: FreeOptions) !void {
163526 try self.inst_tracking.getPtr(inst).?.die(self, inst);169070 try self.inst_tracking.getPtr(inst).?.die(self, inst, opts);
163527}169071}
163528169072
163529fn finishAirResult(self: *CodeGen, inst: Air.Inst.Index, result: MCValue) void {169073fn finishAirResult(self: *CodeGen, inst: Air.Inst.Index, result: MCValue) void {
...@@ -163550,7 +169094,7 @@ fn finishAir(...@@ -163550,7 +169094,7 @@ fn finishAir(
163550 for (0.., operands) |op_index, op| {169094 for (0.., operands) |op_index, op| {
163551 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;169095 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;
163552 if (self.reused_operands.isSet(op_index)) continue;169096 if (self.reused_operands.isSet(op_index)) continue;
163553 try self.processDeath(op.toIndexAllowNone() orelse continue);169097 try self.processDeath(op.toIndexAllowNone() orelse continue, .{});
163554 }169098 }
163555 self.finishAirResult(inst, result);169099 self.finishAirResult(inst, result);
163556}169100}
...@@ -163772,21 +169316,6 @@ fn vectorSize(cg: *CodeGen, kind: enum { int, float }) u6 {...@@ -163772,21 +169316,6 @@ fn vectorSize(cg: *CodeGen, kind: enum { int, float }) u6 {
163772 })) 32 else if (cg.hasFeature(.sse)) 16 else 8;169316 })) 32 else if (cg.hasFeature(.sse)) 16 else 8;
163773}169317}
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
163790const State = struct {169319const State = struct {
163791 registers: RegisterManager.TrackedRegisters,169320 registers: RegisterManager.TrackedRegisters,
163792 reg_tracking: [RegisterManager.RegisterBitSet.bit_length]InstTracking,169321 reg_tracking: [RegisterManager.RegisterBitSet.bit_length]InstTracking,
...@@ -163835,12 +169364,12 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co...@@ -163835,12 +169364,12 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co
163835 for (169364 for (
163836 self.inst_tracking.keys()[@intFromEnum(state.next_temp_index)..@intFromEnum(self.next_temp_index)],169365 self.inst_tracking.keys()[@intFromEnum(state.next_temp_index)..@intFromEnum(self.next_temp_index)],
163837 self.inst_tracking.values()[@intFromEnum(state.next_temp_index)..@intFromEnum(self.next_temp_index)],169366 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 });
163839 self.next_temp_index = state.next_temp_index;169368 self.next_temp_index = state.next_temp_index;
163840 for (169369 for (
163841 self.inst_tracking.keys()[state.inst_tracking_len..],169370 self.inst_tracking.keys()[state.inst_tracking_len..],
163842 self.inst_tracking.values()[state.inst_tracking_len..],169371 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 });
163844 self.inst_tracking.shrinkRetainingCapacity(state.inst_tracking_len);169373 self.inst_tracking.shrinkRetainingCapacity(state.inst_tracking_len);
163845 }169374 }
163846169375
...@@ -163854,7 +169383,7 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co...@@ -163854,7 +169383,7 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co
163854 self.inst_tracking.values()[Temp.Index.max..state.inst_tracking_len],169383 self.inst_tracking.values()[Temp.Index.max..state.inst_tracking_len],
163855 ) |inst, *tracking| try tracking.resurrect(self, inst, state.scope_generation);169384 ) |inst, *tracking| try tracking.resurrect(self, inst, state.scope_generation);
163856 }169385 }
163857 for (deaths) |death| try self.processDeath(death);169386 for (deaths) |death| try self.processDeath(death, .{ .emit_instructions = opts.emit_instructions });
163858169387
163859 const ExpectedContents = [@typeInfo(RegisterManager.TrackedRegisters).array.len]RegisterLock;169388 const ExpectedContents = [@typeInfo(RegisterManager.TrackedRegisters).array.len]RegisterLock;
163860 var stack align(@max(@alignOf(ExpectedContents), @alignOf(std.heap.StackFallbackAllocator(0)))) =169389 var stack align(@max(@alignOf(ExpectedContents), @alignOf(std.heap.StackFallbackAllocator(0)))) =
...@@ -169028,6 +174557,7 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE...@@ -169028,6 +174557,7 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE
169028 .register_quadruple,174557 .register_quadruple,
169029 .register_overflow,174558 .register_overflow,
169030 .register_mask,174559 .register_mask,
174560 .indirect_load_frame,
169031 .elementwise_args,174561 .elementwise_args,
169032 .reserved_frame,174562 .reserved_frame,
169033 => unreachable, // not a valid pointer174563 => unreachable, // not a valid pointer
...@@ -169248,6 +174778,7 @@ fn store(...@@ -169248,6 +174778,7 @@ fn store(
169248 .register_quadruple,174778 .register_quadruple,
169249 .register_overflow,174779 .register_overflow,
169250 .register_mask,174780 .register_mask,
174781 .indirect_load_frame,
169251 .elementwise_args,174782 .elementwise_args,
169252 .reserved_frame,174783 .reserved_frame,
169253 => unreachable, // not a valid pointer174784 => unreachable, // not a valid pointer
...@@ -169307,31 +174838,6 @@ fn airStore(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void {...@@ -169307,31 +174838,6 @@ fn airStore(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void {
169307 return self.finishAir(inst, .none, .{ bin_op.lhs, bin_op.rhs, .none });174838 return self.finishAir(inst, .none, .{ bin_op.lhs, bin_op.rhs, .none });
169308}174839}
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
169335fn fieldOffset(self: *CodeGen, ptr_agg_ty: Type, ptr_field_ty: Type, field_index: u32) i32 {174841fn fieldOffset(self: *CodeGen, ptr_agg_ty: Type, ptr_field_ty: Type, field_index: u32) i32 {
169336 const pt = self.pt;174842 const pt = self.pt;
169337 const zcu = pt.zcu;174843 const zcu = pt.zcu;
...@@ -169344,291 +174850,6 @@ fn fieldOffset(self: *CodeGen, ptr_agg_ty: Type, ptr_field_ty: Type, field_index...@@ -169344,291 +174850,6 @@ fn fieldOffset(self: *CodeGen, ptr_agg_ty: Type, ptr_field_ty: Type, field_index
169344 };174850 };
169345}174851}
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
169632fn genUnOp(self: *CodeGen, maybe_inst: ?Air.Inst.Index, tag: Air.Inst.Tag, src_air: Air.Inst.Ref) !MCValue {174853fn genUnOp(self: *CodeGen, maybe_inst: ?Air.Inst.Index, tag: Air.Inst.Tag, src_air: Air.Inst.Ref) !MCValue {
169633 const pt = self.pt;174854 const pt = self.pt;
169634 const zcu = pt.zcu;174855 const zcu = pt.zcu;
...@@ -169732,6 +174953,7 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv:...@@ -169732,6 +174953,7 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv:
169732 .eflags,174953 .eflags,
169733 .register_overflow,174954 .register_overflow,
169734 .register_mask,174955 .register_mask,
174956 .indirect_load_frame,
169735 .lea_frame,174957 .lea_frame,
169736 .lea_nav,174958 .lea_nav,
169737 .lea_uav,174959 .lea_uav,
...@@ -170401,495 +175623,6 @@ fn genShiftBinOpMir(...@@ -170401,495 +175623,6 @@ fn genShiftBinOpMir(
170401 });175623 });
170402}175624}
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
170893fn genBinOp(175626fn genBinOp(
170894 self: *CodeGen,175627 self: *CodeGen,
170895 maybe_inst: ?Air.Inst.Index,175628 maybe_inst: ?Air.Inst.Index,
...@@ -171403,6 +176136,7 @@ fn genBinOp(...@@ -171403,6 +176136,7 @@ fn genBinOp(
171403 .register_offset,176136 .register_offset,
171404 .register_overflow,176137 .register_overflow,
171405 .register_mask,176138 .register_mask,
176139 .indirect_load_frame,
171406 .lea_frame,176140 .lea_frame,
171407 .load_nav,176141 .load_nav,
171408 .lea_nav,176142 .lea_nav,
...@@ -172238,7 +176972,7 @@ fn genBinOp(...@@ -172238,7 +176972,7 @@ fn genBinOp(
172238 lhs_reg,176972 lhs_reg,
172239 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {176973 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172240 else => .fromSize(abi_size),176974 else => .fromSize(abi_size),
172241 .vector => .fromBitSize(dst_reg.bitSize()),176975 .vector => dst_reg.size(),
172242 } }),176976 } }),
172243 ) else try self.asmRegisterRegisterRegister(176977 ) else try self.asmRegisterRegisterRegister(
172244 mir_tag,176978 mir_tag,
...@@ -172256,7 +176990,7 @@ fn genBinOp(...@@ -172256,7 +176990,7 @@ fn genBinOp(
172256 dst_reg,176990 dst_reg,
172257 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {176991 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172258 else => .fromSize(abi_size),176992 else => .fromSize(abi_size),
172259 .vector => .fromBitSize(dst_reg.bitSize()),176993 .vector => dst_reg.size(),
172260 } }),176994 } }),
172261 ) else try self.asmRegisterRegister(176995 ) else try self.asmRegisterRegister(
172262 mir_tag,176996 mir_tag,
...@@ -172284,7 +177018,7 @@ fn genBinOp(...@@ -172284,7 +177018,7 @@ fn genBinOp(
172284 lhs_reg,177018 lhs_reg,
172285 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {177019 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172286 else => .fromSize(abi_size),177020 else => .fromSize(abi_size),
172287 .vector => .fromBitSize(dst_reg.bitSize()),177021 .vector => dst_reg.size(),
172288 } }),177022 } }),
172289 imm,177023 imm,
172290 ) else try self.asmRegisterRegisterRegisterImmediate(177024 ) else try self.asmRegisterRegisterRegisterImmediate(
...@@ -172304,7 +177038,7 @@ fn genBinOp(...@@ -172304,7 +177038,7 @@ fn genBinOp(
172304 dst_reg,177038 dst_reg,
172305 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {177039 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172306 else => .fromSize(abi_size),177040 else => .fromSize(abi_size),
172307 .vector => .fromBitSize(dst_reg.bitSize()),177041 .vector => dst_reg.size(),
172308 } }),177042 } }),
172309 imm,177043 imm,
172310 ) else try self.asmRegisterRegisterImmediate(177044 ) else try self.asmRegisterRegisterImmediate(
...@@ -172321,15 +177055,6 @@ fn genBinOp(...@@ -172321,15 +177055,6 @@ fn genBinOp(
172321 }177055 }
172322177056
172323 switch (air_tag) {177057 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 }),
172333 .bit_and, .bit_or, .xor => {},177058 .bit_and, .bit_or, .xor => {},
172334 .max, .min => if (maybe_mask_reg) |mask_reg| if (self.hasFeature(.avx)) {177059 .max, .min => if (maybe_mask_reg) |mask_reg| if (self.hasFeature(.avx)) {
172335 const rhs_copy_reg = registerAlias(src_mcv.getReg().?, abi_size);177060 const rhs_copy_reg = registerAlias(src_mcv.getReg().?, abi_size);
...@@ -172596,6 +177321,7 @@ fn genBinOpMir(...@@ -172596,6 +177321,7 @@ fn genBinOpMir(
172596 .lea_uav,177321 .lea_uav,
172597 .lea_lazy_sym,177322 .lea_lazy_sym,
172598 .lea_extern_func,177323 .lea_extern_func,
177324 .indirect_load_frame,
172599 .elementwise_args,177325 .elementwise_args,
172600 .reserved_frame,177326 .reserved_frame,
172601 .air_ref,177327 .air_ref,
...@@ -172632,6 +177358,7 @@ fn genBinOpMir(...@@ -172632,6 +177358,7 @@ fn genBinOpMir(
172632 .undef,177358 .undef,
172633 .register_overflow,177359 .register_overflow,
172634 .register_mask,177360 .register_mask,
177361 .indirect_load_frame,
172635 .elementwise_args,177362 .elementwise_args,
172636 .reserved_frame,177363 .reserved_frame,
172637 => unreachable,177364 => unreachable,
...@@ -172803,6 +177530,7 @@ fn genBinOpMir(...@@ -172803,6 +177530,7 @@ fn genBinOpMir(
172803 .undef,177530 .undef,
172804 .register_overflow,177531 .register_overflow,
172805 .register_mask,177532 .register_mask,
177533 .indirect_load_frame,
172806 .elementwise_args,177534 .elementwise_args,
172807 .reserved_frame,177535 .reserved_frame,
172808 .air_ref,177536 .air_ref,
...@@ -172906,6 +177634,7 @@ fn genBinOpMir(...@@ -172906,6 +177634,7 @@ fn genBinOpMir(
172906 .undef,177634 .undef,
172907 .register_overflow,177635 .register_overflow,
172908 .register_mask,177636 .register_mask,
177637 .indirect_load_frame,
172909 .elementwise_args,177638 .elementwise_args,
172910 .reserved_frame,177639 .reserved_frame,
172911 .air_ref,177640 .air_ref,
...@@ -173036,6 +177765,7 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv...@@ -173036,6 +177765,7 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173036 .register_offset,177765 .register_offset,
173037 .register_overflow,177766 .register_overflow,
173038 .register_mask,177767 .register_mask,
177768 .indirect_load_frame,
173039 .lea_frame,177769 .lea_frame,
173040 .lea_nav,177770 .lea_nav,
173041 .lea_uav,177771 .lea_uav,
...@@ -173073,6 +177803,7 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv...@@ -173073,6 +177803,7 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173073 .register_quadruple,177803 .register_quadruple,
173074 .register_overflow,177804 .register_overflow,
173075 .register_mask,177805 .register_mask,
177806 .indirect_load_frame,
173076 .elementwise_args,177807 .elementwise_args,
173077 .reserved_frame,177808 .reserved_frame,
173078 .air_ref,177809 .air_ref,
...@@ -173195,11 +177926,20 @@ fn airArg(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -173195,11 +177926,20 @@ fn airArg(self: *CodeGen, inst: Air.Inst.Index) !void {
173195 break :result src_mcv;177926 break :result src_mcv;
173196 },177927 },
173197 .indirect => |reg_off| {177928 .indirect => |reg_off| {
173198 self.register_manager.getRegAssumeFree(reg_off.reg, inst);177929 self.register_manager.getRegAssumeFree(reg_off.reg, null);
173199 const dst_mcv = try self.allocRegOrMem(inst, false);177930 const dst_mcv = try self.allocRegOrMem(inst, false);
173200 try self.genCopy(arg_ty, dst_mcv, src_mcv, .{});177931 try self.genCopy(arg_ty, dst_mcv, src_mcv, .{});
173201 break :result dst_mcv;177932 break :result dst_mcv;
173202 },177933 },
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 },
173203 .elementwise_args => |regs_frame_addr| {177943 .elementwise_args => |regs_frame_addr| {
173204 try self.spillEflagsIfOccupied();177944 try self.spillEflagsIfOccupied();
173205177945
...@@ -173398,18 +178138,6 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue...@@ -173398,18 +178138,6 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue
173398 };178138 };
173399}178139}
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
173413fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModifier, opts: CopyOptions) !void {178141fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModifier, opts: CopyOptions) !void {
173414 if (modifier == .always_tail) return self.fail("TODO implement tail calls for x86_64", .{});178142 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) {...@@ -173541,7 +178269,7 @@ fn genCall(self: *CodeGen, info: union(enum) {
173541 },178269 },
173542 .load_frame => {178270 .load_frame => {
173543 try self.genCopy(arg_ty, dst_arg, src_arg, opts);178271 try self.genCopy(arg_ty, dst_arg, src_arg, opts);
173544 try self.freeValue(src_arg);178272 try self.freeValue(src_arg, .{});
173545 },178273 },
173546 .elementwise_args => |regs_frame_addr| {178274 .elementwise_args => |regs_frame_addr| {
173547 const index_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);178275 const index_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
...@@ -174265,39 +178993,6 @@ fn airCmpVector(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -174265,39 +178993,6 @@ fn airCmpVector(self: *CodeGen, inst: Air.Inst.Index) !void {
174265 return self.finishAir(inst, dst_mcv, .{ extra.lhs, extra.rhs, .none });178993 return self.finishAir(inst, dst_mcv, .{ extra.lhs, extra.rhs, .none });
174266}178994}
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
174301fn airTry(self: *CodeGen, inst: Air.Inst.Index) !void {178996fn airTry(self: *CodeGen, inst: Air.Inst.Index) !void {
174302 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;178997 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
174303 const extra = self.air.extraData(Air.Try, pl_op.payload);178998 const extra = self.air.extraData(Air.Try, pl_op.payload);
...@@ -174335,12 +179030,12 @@ fn genTry(...@@ -174335,12 +179030,12 @@ fn genTry(
174335 const reloc = try self.genCondBrMir(.anyerror, is_err_mcv);179030 const reloc = try self.genCondBrMir(.anyerror, is_err_mcv);
174336179031
174337 if (self.liveness.operandDies(inst, 0)) {179032 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, .{});
174339 }179034 }
174340179035
174341 const state = try self.saveState();179036 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, .{});
174344 try self.genBodyBlock(body);179039 try self.genBodyBlock(body);
174345 try self.restoreState(state, &.{}, .{179040 try self.restoreState(state, &.{}, .{
174346 .emit_instructions = false,179041 .emit_instructions = false,
...@@ -174351,7 +179046,7 @@ fn genTry(...@@ -174351,7 +179046,7 @@ fn genTry(
174351179046
174352 self.performReloc(reloc);179047 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
174356 const result = if (self.liveness.isUnused(inst))179051 const result = if (self.liveness.isUnused(inst))
174357 .unreach179052 .unreach
...@@ -174362,33 +179057,6 @@ fn genTry(...@@ -174362,33 +179057,6 @@ fn genTry(
174362 return result;179057 return result;
174363}179058}
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
174392fn genCondBrMir(self: *CodeGen, ty: Type, mcv: MCValue) !Mir.Inst.Index {179060fn genCondBrMir(self: *CodeGen, ty: Type, mcv: MCValue) !Mir.Inst.Index {
174393 const pt = self.pt;179061 const pt = self.pt;
174394 const abi_size = ty.abiSize(pt.zcu);179062 const abi_size = ty.abiSize(pt.zcu);
...@@ -174431,13 +179099,13 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -174431,13 +179099,13 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {
174431 // that death now instead of later as this has an effect on179099 // that death now instead of later as this has an effect on
174432 // whether it needs to be spilled in the branches179100 // whether it needs to be spilled in the branches
174433 if (self.liveness.operandDies(inst, 0)) {179101 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, .{});
174435 }179103 }
174436179104
174437 const state = try self.saveState();179105 const state = try self.saveState();
174438 const reloc = try self.genCondBrMir(cond_ty, cond);179106 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, .{});
174441 try self.genBodyBlock(then_body);179109 try self.genBodyBlock(then_body);
174442 try self.restoreState(state, &.{}, .{179110 try self.restoreState(state, &.{}, .{
174443 .emit_instructions = false,179111 .emit_instructions = false,
...@@ -174448,7 +179116,7 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -174448,7 +179116,7 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {
174448179116
174449 self.performReloc(reloc);179117 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, .{});
174452 try self.genBodyBlock(else_body);179120 try self.genBodyBlock(else_body);
174453 try self.restoreState(state, &.{}, .{179121 try self.restoreState(state, &.{}, .{
174454 .emit_instructions = false,179122 .emit_instructions = false,
...@@ -174460,177 +179128,6 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -174460,177 +179128,6 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {
174460 // We already took care of pl_op.operand earlier, so there's nothing left to do.179128 // We already took care of pl_op.operand earlier, so there's nothing left to do.
174461}179129}
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
174634fn isErr(self: *CodeGen, maybe_inst: ?Air.Inst.Index, eu_ty: Type, eu_mcv: MCValue) !MCValue {179131fn isErr(self: *CodeGen, maybe_inst: ?Air.Inst.Index, eu_ty: Type, eu_mcv: MCValue) !MCValue {
174635 const pt = self.pt;179132 const pt = self.pt;
174636 const zcu = pt.zcu;179133 const zcu = pt.zcu;
...@@ -174708,124 +179205,6 @@ fn isErrPtr(self: *CodeGen, maybe_inst: ?Air.Inst.Index, ptr_ty: Type, ptr_mcv:...@@ -174708,124 +179205,6 @@ fn isErrPtr(self: *CodeGen, maybe_inst: ?Air.Inst.Index, ptr_ty: Type, ptr_mcv:
174708 return MCValue{ .eflags = .a };179205 return MCValue{ .eflags = .a };
174709}179206}
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
174829fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index) !void {179208fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index) !void {
174830 // A block is a setup to be able to jump to the end.179209 // A block is a setup to be able to jump to the end.
174831 const inst_tracking_i = self.inst_tracking.count();179210 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...@@ -174860,7 +179239,7 @@ fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index
174860179239
174861 if (std.debug.runtime_safety) assert(self.inst_tracking.getIndex(inst).? == inst_tracking_i);179240 if (std.debug.runtime_safety) assert(self.inst_tracking.getIndex(inst).? == inst_tracking_i);
174862 const tracking = &self.inst_tracking.values()[inst_tracking_i];179241 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, .{});
174864 self.getValueIfFree(tracking.short, inst);179243 self.getValueIfFree(tracking.short, inst);
174865}179244}
174866179245
...@@ -175019,7 +179398,7 @@ fn lowerSwitchBr(...@@ -175019,7 +179398,7 @@ fn lowerSwitchBr(
175019 }179398 }
175020 }179399 }
175021179400
175022 for (liveness.deaths[case.idx]) |operand| try cg.processDeath(operand);179401 for (liveness.deaths[case.idx]) |operand| try cg.processDeath(operand, .{});
175023179402
175024 try cg.genBodyBlock(case.body);179403 try cg.genBodyBlock(case.body);
175025 try cg.restoreState(state, &.{}, .{179404 try cg.restoreState(state, &.{}, .{
...@@ -175033,7 +179412,7 @@ fn lowerSwitchBr(...@@ -175033,7 +179412,7 @@ fn lowerSwitchBr(
175033 const else_body = cases_it.elseBody();179412 const else_body = cases_it.elseBody();
175034179413
175035 const else_deaths = liveness.deaths.len - 1;179414 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
175038 cg.performReloc(else_reloc);179417 cg.performReloc(else_reloc);
175039 if (is_loop) {179418 if (is_loop) {
...@@ -175151,7 +179530,7 @@ fn lowerSwitchBr(...@@ -175151,7 +179530,7 @@ fn lowerSwitchBr(
175151 // The jump to skip this case if the conditions all failed.179530 // The jump to skip this case if the conditions all failed.
175152 const skip_case_reloc = try cg.asmJmpReloc(undefined);179531 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
175156 // Relocate all success cases to the body we're about to generate.179535 // Relocate all success cases to the body we're about to generate.
175157 for (relocs) |reloc| cg.performReloc(reloc);179536 for (relocs) |reloc| cg.performReloc(reloc);
...@@ -175170,7 +179549,7 @@ fn lowerSwitchBr(...@@ -175170,7 +179549,7 @@ fn lowerSwitchBr(
175170 const else_body = cases_it.elseBody();179549 const else_body = cases_it.elseBody();
175171179550
175172 const else_deaths = liveness.deaths.len - 1;179551 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
175175 try cg.genBodyBlock(else_body);179554 try cg.genBodyBlock(else_body);
175176 try cg.restoreState(state, &.{}, .{179555 try cg.restoreState(state, &.{}, .{
...@@ -175191,7 +179570,7 @@ fn airSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175191,7 +179570,7 @@ fn airSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175191 // whether it needs to be spilled in the branches179570 // whether it needs to be spilled in the branches
175192 const condition_dies = self.liveness.operandDies(inst, 0);179571 const condition_dies = self.liveness.operandDies(inst, 0);
175193 if (condition_dies) {179572 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, .{});
175195 }179574 }
175196 try self.lowerSwitchBr(inst, switch_br, condition, condition_dies, false);179575 try self.lowerSwitchBr(inst, switch_br, condition, condition_dies, false);
175197179576
...@@ -175216,7 +179595,7 @@ fn airLoopSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175216,7 +179595,7 @@ fn airLoopSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175216 // that death now instead of later as this has an effect on179595 // that death now instead of later as this has an effect on
175217 // whether it needs to be spilled in the branches179596 // whether it needs to be spilled in the branches
175218 if (self.liveness.operandDies(inst, 0)) {179597 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, .{});
175220 }179599 }
175221179600
175222 // Ensure a register is available for dispatch.179601 // Ensure a register is available for dispatch.
...@@ -175231,11 +179610,11 @@ fn airLoopSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175231,11 +179610,11 @@ fn airLoopSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175231 defer assert(self.loops.remove(inst));179610 defer assert(self.loops.remove(inst));
175232179611
175233 // Stop tracking block result without forgetting tracking info179612 // Stop tracking block result without forgetting tracking info
175234 try self.freeValue(mat_cond);179613 try self.freeValue(mat_cond, .{});
175235179614
175236 try self.lowerSwitchBr(inst, switch_br, mat_cond, true, true);179615 try self.lowerSwitchBr(inst, switch_br, mat_cond, true, true);
175237179616
175238 try self.processDeath(inst);179617 try self.processDeath(inst, .{});
175239}179618}
175240179619
175241fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {179620fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {
...@@ -175262,7 +179641,7 @@ fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175262,7 +179641,7 @@ fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {
175262179641
175263 // Process operand death so that it is properly accounted for in the State below.179642 // Process operand death so that it is properly accounted for in the State below.
175264 if (self.liveness.operandDies(inst, 0)) {179643 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, .{});
175266 }179645 }
175267179646
175268 try self.restoreState(loop_data.state, &.{}, .{179647 try self.restoreState(loop_data.state, &.{}, .{
...@@ -175340,7 +179719,7 @@ fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175340,7 +179719,7 @@ fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {
175340 _ = try self.asmJmpReloc(loop_data.target);179719 _ = try self.asmJmpReloc(loop_data.target);
175341179720
175342 // Stop tracking block result without forgetting tracking info179721 // 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 });
175344}179723}
175345179724
175346fn performReloc(self: *CodeGen, reloc: Mir.Inst.Index) void {179725fn performReloc(self: *CodeGen, reloc: Mir.Inst.Index) void {
...@@ -175389,10 +179768,14 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175389,10 +179768,14 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175389 if (first_br) break :result src_mcv;179768 if (first_br) break :result src_mcv;
175390179769
175391 try self.getValue(block_tracking.short, br.block_inst);179770 try self.getValue(block_tracking.short, br.block_inst);
175392 // .long = .none to avoid merging operand and block result stack frames.179771 try InstTracking.materializeUnsafe(
175393 const current_tracking: InstTracking = .{ .long = .none, .short = src_mcv };179772 // .long = .none to avoid merging operand and block result stack frames.
175394 try current_tracking.materializeUnsafe(self, br.block_inst, block_tracking.*);179773 .{ .long = .none, .short = src_mcv },
175395 for (current_tracking.getRegs()) |src_reg| self.register_manager.freeReg(src_reg);179774 self,
179775 br.block_inst,
179776 block_tracking.*,
179777 );
179778 try self.freeValue(src_mcv, .{});
175396 break :result block_tracking.short;179779 break :result block_tracking.short;
175397 }179780 }
175398179781
...@@ -175406,7 +179789,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175406,7 +179789,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175406179789
175407 // Process operand death so that it is properly accounted for in the State below.179790 // Process operand death so that it is properly accounted for in the State below.
175408 if (self.liveness.operandDies(inst, 0)) {179791 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, .{});
175410 }179793 }
175411179794
175412 if (first_br) {179795 if (first_br) {
...@@ -175425,7 +179808,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175425,7 +179808,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175425 try block_data.relocs.append(self.gpa, jmp_reloc);179808 try block_data.relocs.append(self.gpa, jmp_reloc);
175426179809
175427 // Stop tracking block result without forgetting tracking info179810 // 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 });
175429}179812}
175430179813
175431fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {179814fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
...@@ -175802,7 +180185,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175802,7 +180185,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
175802 } },180185 } },
175803 } };180186 } };
175804 } else {180187 } 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))
175806 return self.fail("invalid register size: '{s}'", .{op_str});180189 return self.fail("invalid register size: '{s}'", .{op_str});
175807 op.* = .{ .reg = reg };180190 op.* = .{ .reg = reg };
175808 }180191 }
...@@ -176181,7 +180564,7 @@ const MoveStrategy = union(enum) {...@@ -176181,7 +180564,7 @@ const MoveStrategy = union(enum) {
176181 if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ ._ps, .xor }, dst_reg, dst_reg);180564 if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ ._ps, .xor }, dst_reg, dst_reg);
176182 try cg.asmRegisterMemory(tag, switch (tag[1]) {180565 try cg.asmRegisterMemory(tag, switch (tag[1]) {
176183 else => dst_reg,180566 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(),
176185 }, src_mem);180568 }, src_mem);
176186 },180569 },
176187 .load_store_x87 => if (dst_reg != .st0 and cg.register_manager.isKnownRegFree(.st7)) {180570 .load_store_x87 => if (dst_reg != .st0 and cg.register_manager.isKnownRegFree(.st7)) {
...@@ -176554,6 +180937,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C...@@ -176554,6 +180937,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176554 .eflags,180937 .eflags,
176555 .register_overflow,180938 .register_overflow,
176556 .register_mask,180939 .register_mask,
180940 .indirect_load_frame,
176557 .lea_frame,180941 .lea_frame,
176558 .lea_nav,180942 .lea_nav,
176559 .lea_uav,180943 .lea_uav,
...@@ -176750,12 +181134,13 @@ fn genSetReg(...@@ -176750,12 +181134,13 @@ fn genSetReg(
176750 const zcu = pt.zcu;181134 const zcu = pt.zcu;
176751 const abi_size: u32 = @intCast(ty.abiSize(zcu));181135 const abi_size: u32 = @intCast(ty.abiSize(zcu));
176752 const dst_alias = registerAlias(dst_reg, abi_size);181136 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))
176754 return self.fail("genSetReg called with a value larger than dst_reg", .{});181138 return self.fail("genSetReg called with a value larger than dst_reg", .{});
176755 switch (src_mcv) {181139 switch (src_mcv) {
176756 .none,181140 .none,
176757 .unreach,181141 .unreach,
176758 .dead,181142 .dead,
181143 .indirect_load_frame,
176759 .elementwise_args,181144 .elementwise_args,
176760 .reserved_frame,181145 .reserved_frame,
176761 => unreachable,181146 => unreachable,
...@@ -177112,7 +181497,7 @@ fn genSetReg(...@@ -177112,7 +181497,7 @@ fn genSetReg(
177112 ty,181497 ty,
177113 dst_reg.class(),181498 dst_reg.class(),
177114 self.getFrameAddrAlignment(frame_addr).compare(.gte, .fromLog2Units(181499 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)),
177116 )),181501 )),
177117 ),181502 ),
177118 .lea_frame => .{ .load_store = .{ ._, .lea } },181503 .lea_frame => .{ .load_store = .{ ._, .lea } },
...@@ -177318,6 +181703,7 @@ fn genSetMem(...@@ -177318,6 +181703,7 @@ fn genSetMem(
177318 .none,181703 .none,
177319 .unreach,181704 .unreach,
177320 .dead,181705 .dead,
181706 .indirect_load_frame,
177321 .elementwise_args,181707 .elementwise_args,
177322 .reserved_frame,181708 .reserved_frame,
177323 => unreachable,181709 => unreachable,
...@@ -177382,43 +181768,37 @@ fn genSetMem(...@@ -177382,43 +181768,37 @@ fn genSetMem(
177382 const frame_abi_size = self.frame_allocs.items(.abi_size)[@intFromEnum(base_fi)];181768 const frame_abi_size = self.frame_allocs.items(.abi_size)[@intFromEnum(base_fi)];
177383 const frame_spill_pad = self.frame_allocs.items(.spill_pad)[@intFromEnum(base_fi)];181769 const frame_spill_pad = self.frame_allocs.items(.spill_pad)[@intFromEnum(base_fi)];
177384 assert(frame_abi_size - frame_spill_pad - disp >= abi_size);181770 assert(frame_abi_size - frame_spill_pad - disp >= abi_size);
177385 break :mem_size if (frame_abi_size - frame_spill_pad - disp == abi_size)181771 break :mem_size if (frame_abi_size - frame_spill_pad - disp == abi_size) frame_abi_size else abi_size;
177386 frame_abi_size
177387 else
177388 abi_size;
177389 },181772 },
177390 else => abi_size,181773 else => abi_size,
177391 };181774 };
177392 const src_alias = registerAlias(src_reg, @intCast(self.unalignedSize(ty)));181775 const src_alias = registerAlias(src_reg, @intCast(self.unalignedSize(ty)));
177393 const src_class = src_alias.class();181776 const src_class = src_alias.class();
177394 const src_size: u32 = switch (src_class) {181777 const src_size: Memory.Size = switch (src_class) {
177395 .general_purpose, .gphi, .segment, .ip, .cr, .dr => @intCast(@divExact(src_alias.bitSize(), 8)),181778 .general_purpose, .gphi, .segment, .ip, .cr, .dr => src_alias.size(),
177396 .mmx, .sse => abi_size,181779 .mmx, .sse => .fromSize(abi_size),
177397 .x87 => switch (abi.classifySystemV(ty, zcu, self.target, .other)[0]) {181780 .x87 => switch (abi.classifySystemV(ty, zcu, self.target, .other)[0]) {
177398 else => unreachable,181781 else => unreachable,
177399 .float, .float_combine => 4,181782 .float => .dword,
177400 .sse => 8,181783 .float_combine, .sse => .qword,
177401 .x87 => 10,181784 .x87 => .tbyte,
177402 },181785 },
177403 };181786 };
177404 const src_align: InternPool.Alignment = .fromNonzeroByteUnits(181787 const src_bit_size = src_size.bitSize(self.target);
177405 std.math.ceilPowerOfTwoAssert(u32, src_size),181788 const src_align: InternPool.Alignment = .fromNonzeroByteUnits(std.math.ceilPowerOfTwoAssert(u64, src_bit_size));
177406 );181789 const src_byte_size = @divExact(src_bit_size, 8);
177407 if (src_size > mem_size) {181790 if (src_byte_size > mem_size) {
177408 const frame_index = try self.allocFrameIndex(.init(.{181791 const frame_index = try self.allocFrameIndex(.init(.{
177409 .size = src_size,181792 .size = src_byte_size,
177410 .alignment = src_align,181793 .alignment = src_align,
177411 }));181794 }));
177412 const frame_mcv: MCValue = .{ .load_frame = .{ .index = frame_index } };181795 const frame_mcv: MCValue = .{ .load_frame = .{ .index = frame_index } };
177413 try (try self.moveStrategy(ty, src_class, true)).write(181796 try (try self.moveStrategy(ty, src_class, true)).write(self, .{
177414 self,181797 .base = .{ .frame = frame_index },
177415 .{ .base = .{ .frame = frame_index }, .mod = .{ .rm = .{181798 .mod = .{ .rm = .{ .size = src_size } },
177416 .size = .fromSize(src_size),181799 }, src_alias);
177417 } } },
177418 src_alias,
177419 );
177420 try self.genSetMem(base, disp, ty, frame_mcv, opts);181800 try self.genSetMem(base, disp, ty, frame_mcv, opts);
177421 try self.freeValue(frame_mcv);181801 try self.freeValue(frame_mcv, .{});
177422 } else try (try self.moveStrategy(ty, src_class, switch (base) {181802 } else try (try self.moveStrategy(ty, src_class, switch (base) {
177423 .none => src_align.check(@as(u32, @bitCast(disp))),181803 .none => src_align.check(@as(u32, @bitCast(disp))),
177424 .reg => |reg| switch (reg) {181804 .reg => |reg| switch (reg) {
...@@ -177432,17 +181812,10 @@ fn genSetMem(...@@ -177432,17 +181812,10 @@ fn genSetMem(
177432 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,181812 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
177433 .nav => |nav| ip.getNav(nav).getAlignment().compare(.gte, src_align),181813 .nav => |nav| ip.getNav(nav).getAlignment().compare(.gte, src_align),
177434 .uav => |uav| Type.fromInterned(uav.orig_ty).ptrAlignment(zcu).compare(.gte, src_align),181814 .uav => |uav| Type.fromInterned(uav.orig_ty).ptrAlignment(zcu).compare(.gte, src_align),
177435 })).write(181815 })).write(self, .{
177436 self,181816 .base = base,
177437 .{ .base = base, .mod = .{ .rm = .{181817 .mod = .{ .rm = .{ .size = src_size, .disp = disp } },
177438 .size = .fromBitSize(@min(181818 }, src_alias);
177439 self.memSize(ty).bitSize(self.target),
177440 src_alias.bitSize(),
177441 )),
177442 .disp = disp,
177443 } } },
177444 src_alias,
177445 );
177446 },181819 },
177447 inline .register_pair, .register_triple, .register_quadruple => |src_regs| {181820 inline .register_pair, .register_triple, .register_quadruple => |src_regs| {
177448 var part_disp: i32 = disp;181821 var part_disp: i32 = disp;
...@@ -178582,271 +182955,6 @@ fn airMemset(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void {...@@ -178582,271 +182955,6 @@ fn airMemset(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void {
178582 return self.finishAir(inst, .unreach, .{ bin_op.lhs, bin_op.rhs, .none });182955 return self.finishAir(inst, .unreach, .{ bin_op.lhs, bin_op.rhs, .none });
178583}182956}
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
178850fn airSplat(self: *CodeGen, inst: Air.Inst.Index) !void {182958fn airSplat(self: *CodeGen, inst: Air.Inst.Index) !void {
178851 const pt = self.pt;182959 const pt = self.pt;
178852 const zcu = pt.zcu;182960 const zcu = pt.zcu;
...@@ -180451,120 +184559,6 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -180451,120 +184559,6 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180451 return self.finishAir(inst, result, .{ extra.a, extra.b, .none });184559 return self.finishAir(inst, result, .{ extra.a, extra.b, .none });
180452}184560}
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
180568fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {184562fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {
180569 const pt = self.pt;184563 const pt = self.pt;
180570 const zcu = pt.zcu;184564 const zcu = pt.zcu;
...@@ -181278,14 +185272,16 @@ const CallMCValues = struct {...@@ -181278,14 +185272,16 @@ const CallMCValues = struct {
181278 }185272 }
181279};185273};
181280185274
185275const win64_shadow_space = 8 * 4;
185276
181281/// Caller must call `CallMCValues.deinit`.185277/// Caller must call `CallMCValues.deinit`.
181282fn resolveCallingConventionValues(185278fn resolveCallingConventionValues(
181283 self: *CodeGen,185279 cg: *CodeGen,
181284 fn_info: InternPool.Key.FuncType,185280 fn_info: InternPool.Key.FuncType,
181285 var_args: []const Type,185281 var_args: []const Type,
181286 stack_frame_base: FrameIndex,185282 stack_frame_base: FrameIndex,
181287) !CallMCValues {185283) !CallMCValues {
181288 const pt = self.pt;185284 const pt = cg.pt;
181289 const zcu = pt.zcu;185285 const zcu = pt.zcu;
181290 const ip = &zcu.intern_pool;185286 const ip = &zcu.intern_pool;
181291 const cc = fn_info.cc;185287 const cc = fn_info.cc;
...@@ -181294,7 +185290,7 @@ fn resolveCallingConventionValues(...@@ -181294,7 +185290,7 @@ fn resolveCallingConventionValues(
181294 param_types: [32][@sizeOf(Type)]u8 align(@alignOf(Type)),185290 param_types: [32][@sizeOf(Type)]u8 align(@alignOf(Type)),
181295 };185291 };
181296 var stack align(@max(@alignOf(ExpectedContents), @alignOf(std.heap.StackFallbackAllocator(0)))) =185292 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);
181298 const allocator = stack.get();185294 const allocator = stack.get();
181299185295
181300 const param_types = try allocator.alloc(Type, fn_info.param_types.len + var_args.len);185296 const param_types = try allocator.alloc(Type, fn_info.param_types.len + var_args.len);
...@@ -181303,10 +185299,10 @@ fn resolveCallingConventionValues(...@@ -181303,10 +185299,10 @@ fn resolveCallingConventionValues(
181303 for (param_types[0..fn_info.param_types.len], fn_info.param_types.get(ip)) |*param_ty, arg_ty|185299 for (param_types[0..fn_info.param_types.len], fn_info.param_types.get(ip)) |*param_ty, arg_ty|
181304 param_ty.* = .fromInterned(arg_ty);185300 param_ty.* = .fromInterned(arg_ty);
181305 for (param_types[fn_info.param_types.len..], var_args) |*param_ty, arg_ty|185301 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
181308 var result: CallMCValues = .{185304 var result: CallMCValues = .{
181309 .args = try self.gpa.alloc(MCValue, param_types.len),185305 .args = try cg.gpa.alloc(MCValue, param_types.len),
181310 .air_arg_count = 0,185306 .air_arg_count = 0,
181311 // These undefined values must be populated before returning from this function.185307 // These undefined values must be populated before returning from this function.
181312 .return_value = undefined,185308 .return_value = undefined,
...@@ -181316,29 +185312,30 @@ fn resolveCallingConventionValues(...@@ -181316,29 +185312,30 @@ fn resolveCallingConventionValues(
181316 .fp_count = 0,185312 .fp_count = 0,
181317 .err_ret_trace_reg = .none,185313 .err_ret_trace_reg = .none,
181318 };185314 };
181319 errdefer self.gpa.free(result.args);185315 errdefer cg.gpa.free(result.args);
181320185316
181321 const ret_ty: Type = .fromInterned(fn_info.return_type);185317 const ret_ty: Type = .fromInterned(fn_info.return_type);
181322 switch (cc) {185318 switch (cc) {
181323 .naked => {185319 .naked => {
181324 assert(result.args.len == 0);185320 assert(result.args.len == 0);
181325 result.return_value = .init(.unreach);185321 result.return_value = .init(.unreach);
181326 result.stack_align = switch (self.target.cpu.arch) {185322 result.stack_align = switch (cg.target.cpu.arch) {
181327 else => unreachable,185323 else => unreachable,
181328 .x86 => .@"4",185324 .x86 => .@"4",
181329 .x86_64 => .@"8",185325 .x86_64 => .@"8",
181330 };185326 };
181331 },185327 },
181332 .x86_64_sysv, .x86_64_win => |cc_opts| {185328 .x86_64_sysv, .x86_64_win => |cc_opts| {
181333 var ret_int_reg_i: u32 = 0;185329 const param_gpr = abi.getCAbiIntParamRegs(cc);
181334 var ret_sse_reg_i: u32 = 0;185330 var param_gpr_index: u32 = 0;
181335 var param_int_reg_i: u32 = 0;185331 const param_sse = abi.getCAbiSseParamRegs(cc, cg.target);
181336 var param_sse_reg_i: u32 = 0;185332 var param_sse_index: u32 = 0;
185333
181337 result.stack_align = .fromByteUnits(cc_opts.incoming_stack_alignment orelse 16);185334 result.stack_align = .fromByteUnits(cc_opts.incoming_stack_alignment orelse 16);
181338185335
181339 switch (cc) {185336 switch (cc) {
181340 .x86_64_sysv => {},185337 .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),
181342 else => unreachable,185339 else => unreachable,
181343 }185340 }
181344185341
...@@ -181350,62 +185347,56 @@ fn resolveCallingConventionValues(...@@ -181350,62 +185347,56 @@ fn resolveCallingConventionValues(
181350 result.return_value = .init(.none);185347 result.return_value = .init(.none);
181351 } else {185348 } else {
181352 var ret_tracking: [4]InstTracking = undefined;185349 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
181355 const classes = switch (cc) {185355 const classes = switch (cc) {
181356 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ret_ty, zcu, self.target, .ret), .none),185356 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ret_ty, zcu, cg.target, .ret), .none),
181357 .x86_64_win => &.{abi.classifyWindows(ret_ty, zcu)},185357 .x86_64_win => &.{abi.classifyWindows(ret_ty, zcu, cg.target)},
181358 else => unreachable,185358 else => unreachable,
181359 };185359 };
181360 for (classes) |class| switch (class) {185360 for (classes) |class| switch (class) {
181361 .integer => {185361 .integer => {
181362 const ret_int_reg = registerAlias(185362 ret_tracking[ret_tracking_len] = .init(.{ .register = registerAlias(
181363 abi.getCAbiIntReturnRegs(cc)[ret_int_reg_i],185363 ret_gpr[0],
181364 @intCast(@min(ret_ty.abiSize(zcu), 8)),185364 @intCast(@min(ret_ty.abiSize(zcu), 8)),
181365 );185365 ) });
181366 ret_int_reg_i += 1;185366 ret_tracking_len += 1;
181367185367 ret_gpr = ret_gpr[1..];
181368 ret_tracking[ret_tracking_i] = .init(.{ .register = ret_int_reg });
181369 ret_tracking_i += 1;
181370 },185368 },
181371 .sse, .float, .float_combine, .win_i128 => {185369 .sse, .float, .float_combine, .win_i128 => {
181372 const ret_sse_regs = abi.getCAbiSseReturnRegs(cc);
181373 const abi_size: u32 = @intCast(ret_ty.abiSize(zcu));185370 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));
181375 var byte_offset: u32 = 0;185372 var byte_offset: u32 = 0;
181376 while (byte_offset < abi_size) : (byte_offset += reg_size) {185373 while (byte_offset < abi_size) : (byte_offset += reg_size) {
181377 const ret_sse_reg = registerAlias(ret_sse_regs[ret_sse_reg_i], reg_size);185374 const ret_sse_reg = registerAlias(ret_sse[0], reg_size);
181378 ret_sse_reg_i += 1;185375 ret_sse = ret_sse[1..];
181379185376
181380 ret_tracking[ret_tracking_i] = .init(.{ .register = ret_sse_reg });185377 ret_tracking[ret_tracking_len] = .init(.{ .register = ret_sse_reg });
181381 ret_tracking_i += 1;185378 ret_tracking_len += 1;
181382 }185379 }
181383 },185380 },
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)),
181385 .x87 => {185382 .x87 => {
181386 ret_tracking[ret_tracking_i] = .init(.{ .register = abi.getCAbiX87ReturnRegs(cc)[0] });185383 ret_tracking[ret_tracking_len] = .init(.{ .register = ret_x87[0] });
181387 ret_tracking_i += 1;185384 ret_tracking_len += 1;
181388 },185385 ret_x87 = ret_x87[1..];
181389 .x87up => assert(ret_tracking[ret_tracking_i - 1].short.register.isClass(.x87)),185386 },
181390 .complex_x87 => {185387 .x87up => assert(ret_tracking[ret_tracking_len - 1].short.register.isClass(.x87)),
181391 ret_tracking[ret_tracking_i] = .init(.{ .register_pair = abi.getCAbiX87ReturnRegs(cc)[0..2].* });185388 .memory, .integer_per_element => {
181392 ret_tracking_i += 1;185389 ret_tracking[ret_tracking_len] = .{
181393 },185390 .short = .{ .indirect = .{ .reg = ret_gpr[0].to64() } },
181394 .memory => {185391 .long = .{ .indirect = .{ .reg = param_gpr[param_gpr_index].to64() } },
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 } },
181403 };185392 };
181404 ret_tracking_i += 1;185393 ret_tracking_len += 1;
185394 ret_gpr = ret_gpr[1..];
185395 param_gpr_index += 1;
181405 },185396 },
181406 .none, .integer_per_element => unreachable,185397 .none => unreachable,
181407 };185398 };
181408 result.return_value = switch (ret_tracking_i) {185399 result.return_value = switch (ret_tracking_len) {
181409 else => unreachable,185400 else => unreachable,
181410 1 => ret_tracking[0],185401 1 => ret_tracking[0],
181411 2 => .init(.{ .register_pair = .{185402 2 => .init(.{ .register_pair = .{
...@@ -181427,97 +185418,96 @@ fn resolveCallingConventionValues(...@@ -181427,97 +185418,96 @@ fn resolveCallingConventionValues(
181427 }185418 }
181428185419
181429 // Input params185420 // Input params
181430 for (param_types, result.args) |ty, *arg| {185421 params: for (param_types, result.args) |ty, *arg| {
181431 assert(ty.hasRuntimeBitsIgnoreComptime(zcu));185422 assert(ty.hasRuntimeBitsIgnoreComptime(zcu));
181432 result.air_arg_count += 1;185423 result.air_arg_count += 1;
181433 switch (cc) {185424 switch (cc) {
181434 .x86_64_sysv => {},185425 .x86_64_sysv => {},
181435 .x86_64_win => {185426 .x86_64_win => {
181436 param_int_reg_i = @max(param_int_reg_i, param_sse_reg_i);185427 param_gpr_index = @max(param_gpr_index, param_sse_index);
181437 param_sse_reg_i = param_int_reg_i;185428 param_sse_index = param_gpr_index;
181438 },185429 },
181439 else => unreachable,185430 else => unreachable,
181440 }185431 }
181441185432
181442 var arg_mcv: [4]MCValue = undefined;185433 var arg_mcv: [4]MCValue = undefined;
181443 var arg_mcv_i: usize = 0;185434 var arg_mcv_len: u32 = 0;
181444185435
181445 const classes = switch (cc) {185436 const classes = switch (cc) {
181446 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ty, zcu, self.target, .arg), .none),185437 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ty, zcu, cg.target, .arg), .none),
181447 .x86_64_win => &.{abi.classifyWindows(ty, zcu)},185438 .x86_64_win => &.{abi.classifyWindows(ty, zcu, cg.target)},
181448 else => unreachable,185439 else => unreachable,
181449 };185440 };
181450 classes: for (classes) |class| switch (class) {185441 classes: for (classes) |class| switch (class) {
181451 .integer => {185442 .integer => {
181452 const param_int_regs = abi.getCAbiIntParamRegs(cc);185443 if (param_gpr_index >= param_gpr.len) break;
181453 if (param_int_reg_i >= param_int_regs.len) break;185444 arg_mcv[arg_mcv_len] = .{
181454185445 .register = registerAlias(param_gpr[param_gpr_index], @intCast(@min(ty.abiSize(zcu), 8))),
181455 const param_int_reg =185446 };
181456 registerAlias(param_int_regs[param_int_reg_i], @intCast(@min(ty.abiSize(zcu), 8)));185447 arg_mcv_len += 1;
181457 param_int_reg_i += 1;185448 param_gpr_index += 1;
181458
181459 arg_mcv[arg_mcv_i] = .{ .register = param_int_reg };
181460 arg_mcv_i += 1;
181461 },185449 },
181462 .sse, .float, .float_combine => {185450 .sse, .float, .float_combine => {
181463 const param_sse_regs = abi.getCAbiSseParamRegs(cc, self.target);
181464 const abi_size: u32 = @intCast(ty.abiSize(zcu));185451 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));
181466 var byte_offset: u32 = 0;185453 var byte_offset: u32 = 0;
181467 while (byte_offset < abi_size) : (byte_offset += reg_size) {185454 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);185457 const param_sse_reg = registerAlias(param_sse[param_sse_index], reg_size);
181471 param_sse_reg_i += 1;185458 param_sse_index += 1;
181472185459
181473 arg_mcv[arg_mcv_i] = .{ .register = param_sse_reg };185460 arg_mcv[arg_mcv_len] = .{ .register = param_sse_reg };
181474 arg_mcv_i += 1;185461 arg_mcv_len += 1;
181475 }185462 }
181476 },185463 },
181477 .sseup => assert(arg_mcv[arg_mcv_i - 1].register.isClass(.sse)),185464 .sseup => assert(arg_mcv[arg_mcv_len - 1].register.isClass(.sse)),
181478 .x87, .x87up, .complex_x87, .memory, .win_i128 => switch (cc) {185465 .x87, .x87up, .memory, .win_i128 => switch (cc) {
181479 .x86_64_sysv => switch (class) {185466 .x86_64_sysv => switch (class) {
181480 .x87, .x87up, .complex_x87, .memory => break,185467 .x87, .x87up, .memory => break,
181481 else => unreachable,185468 else => unreachable,
181482 },185469 },
181483 .x86_64_win => if (ty.abiSize(zcu) > 8) {185470 .x86_64_win => if (ty.abiSize(zcu) > 8) {
181484 const param_int_reg = abi.getCAbiIntParamRegs(cc)[param_int_reg_i].to64();185471 if (param_gpr_index < param_gpr.len) {
181485 param_int_reg_i += 1;185472 arg_mcv[arg_mcv_len] = .{ .indirect = .{ .reg = param_gpr[param_gpr_index].to64() } };
181486185473 arg_mcv_len += 1;
181487 arg_mcv[arg_mcv_i] = .{ .indirect = .{ .reg = param_int_reg } };185474 param_gpr_index += 1;
181488 arg_mcv_i += 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 }
181489 } else break,185487 } else break,
181490 else => unreachable,185488 else => unreachable,
181491 },185489 },
181492 .none => unreachable,185490 .none => unreachable,
181493 .integer_per_element => {185491 .integer_per_element => {
181494 const param_int_regs_len: u32 =185492 const remaining_param_gpr_len: u3 = @intCast(param_gpr.len - param_gpr_index);
181495 @intCast(abi.getCAbiIntParamRegs(cc).len);185493 param_gpr_index = @intCast(param_gpr.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;
181499185494
181500 const frame_elem_align = 8;185495 const frame_elem_align = 8;
181501 const frame_elems_len = ty.vectorLen(zcu) - remaining_param_int_regs;185496 const frame_elems_len = ty.vectorLen(zcu) - remaining_param_gpr_len;
181502 const frame_elem_size = std.mem.alignForward(185497 const frame_elem_size = std.mem.alignForward(u64, ty.childType(zcu).abiSize(zcu), frame_elem_align);
181503 u64,
181504 ty.childType(zcu).abiSize(zcu),
181505 frame_elem_align,
181506 );
181507 const frame_size: u31 = @intCast(frame_elems_len * frame_elem_size);185498 const frame_size: u31 = @intCast(frame_elems_len * frame_elem_size);
181508185499
181509 result.stack_byte_count =185500 result.stack_byte_count = std.mem.alignForward(u31, result.stack_byte_count, frame_elem_align);
181510 std.mem.alignForward(u31, result.stack_byte_count, frame_elem_align);185501 arg_mcv[arg_mcv_len] = .{ .elementwise_args = .{
181511 arg_mcv[arg_mcv_i] = .{ .elementwise_args = .{185502 .regs = remaining_param_gpr_len,
181512 .regs = remaining_param_int_regs,
181513 .frame_off = @intCast(result.stack_byte_count),185503 .frame_off = @intCast(result.stack_byte_count),
181514 .frame_index = stack_frame_base,185504 .frame_index = stack_frame_base,
181515 } };185505 } };
181516 arg_mcv_i += 1;185506 arg_mcv_len += 1;
181517 result.stack_byte_count += frame_size;185507 result.stack_byte_count += frame_size;
181518 },185508 },
181519 } else {185509 } else {
181520 arg.* = switch (arg_mcv_i) {185510 arg.* = switch (arg_mcv_len) {
181521 else => unreachable,185511 else => unreachable,
181522 1 => arg_mcv[0],185512 1 => arg_mcv[0],
181523 2 => .{ .register_pair = .{185513 2 => .{ .register_pair = .{
...@@ -181548,17 +185538,17 @@ fn resolveCallingConventionValues(...@@ -181548,17 +185538,17 @@ fn resolveCallingConventionValues(
181548 } };185538 } };
181549 result.stack_byte_count += @intCast(ty.abiSize(zcu));185539 result.stack_byte_count += @intCast(ty.abiSize(zcu));
181550 }185540 }
181551 assert(param_int_reg_i <= 6);185541 assert(param_gpr_index <= 6);
181552 result.gp_count = param_int_reg_i;185542 result.gp_count = param_gpr_index;
181553 assert(param_sse_reg_i <= 16);185543 assert(param_sse_index <= 16);
181554 result.fp_count = param_sse_reg_i;185544 result.fp_count = param_sse_index;
181555 },185545 },
181556 .auto => {185546 .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
181559 var param_gpr = abi.getCAbiIntParamRegs(cc);185549 var param_gpr = abi.getCAbiIntParamRegs(cc);
181560 var param_x87 = abi.getCAbiX87ParamRegs(cc);185550 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
181563 if (zcu.comp.config.any_error_tracing) {185553 if (zcu.comp.config.any_error_tracing) {
181564 result.err_ret_trace_reg = param_gpr[param_gpr.len - 1];185554 result.err_ret_trace_reg = param_gpr[param_gpr.len - 1];
...@@ -181573,8 +185563,8 @@ fn resolveCallingConventionValues(...@@ -181573,8 +185563,8 @@ fn resolveCallingConventionValues(
181573 else return_value: {185563 else return_value: {
181574 const ret_gpr = abi.getCAbiIntReturnRegs(cc);185564 const ret_gpr = abi.getCAbiIntReturnRegs(cc);
181575 const ret_size: u31 = @intCast(ret_ty.abiSize(zcu));185565 const ret_size: u31 = @intCast(ret_ty.abiSize(zcu));
181576 if (abi.zigcc.return_in_regs) switch (self.regClassForType(ret_ty)) {185566 if (abi.zigcc.return_in_regs) switch (cg.regClassForType(ret_ty)) {
181577 .general_purpose, .gphi => if (ret_size <= @as(u4, switch (self.target.cpu.arch) {185567 .general_purpose, .gphi => if (ret_size <= @as(u4, switch (cg.target.cpu.arch) {
181578 else => unreachable,185568 else => unreachable,
181579 .x86 => 4,185569 .x86 => 4,
181580 .x86_64 => 8,185570 .x86_64 => 8,
...@@ -181584,7 +185574,7 @@ fn resolveCallingConventionValues(...@@ -181584,7 +185574,7 @@ fn resolveCallingConventionValues(
181584 break :return_value .init(.{ .register_pair = ret_gpr[0..2].* }),185574 break :return_value .init(.{ .register_pair = ret_gpr[0..2].* }),
181585 .segment, .mmx, .ip, .cr, .dr => unreachable,185575 .segment, .mmx, .ip, .cr, .dr => unreachable,
181586 .x87 => if (ret_size <= 16) break :return_value .init(.{ .register = .st0 }),185576 .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(.{
181588 .register = registerAlias(abi.getCAbiSseReturnRegs(cc)[0], @max(ret_size, 16)),185578 .register = registerAlias(abi.getCAbiSseReturnRegs(cc)[0], @max(ret_size, 16)),
181589 }),185579 }),
181590 };185580 };
...@@ -181604,8 +185594,8 @@ fn resolveCallingConventionValues(...@@ -181604,8 +185594,8 @@ fn resolveCallingConventionValues(
181604 }185594 }
181605 result.air_arg_count += 1;185595 result.air_arg_count += 1;
181606 const param_size: u31 = @intCast(param_ty.abiSize(zcu));185596 const param_size: u31 = @intCast(param_ty.abiSize(zcu));
181607 if (abi.zigcc.params_in_regs) switch (self.regClassForType(param_ty)) {185597 if (abi.zigcc.params_in_regs) switch (cg.regClassForType(param_ty)) {
181608 .general_purpose, .gphi => if (param_gpr.len >= 1 and param_size <= @as(u4, switch (self.target.cpu.arch) {185598 .general_purpose, .gphi => if (param_gpr.len >= 1 and param_size <= @as(u4, switch (cg.target.cpu.arch) {
181609 else => unreachable,185599 else => unreachable,
181610 .x86 => 4,185600 .x86 => 4,
181611 .x86_64 => 8,185601 .x86_64 => 8,
...@@ -181624,7 +185614,7 @@ fn resolveCallingConventionValues(...@@ -181624,7 +185614,7 @@ fn resolveCallingConventionValues(
181624 param_x87 = param_x87[1..];185614 param_x87 = param_x87[1..];
181625 continue;185615 continue;
181626 },185616 },
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)) {
181628 arg.* = .{185618 arg.* = .{
181629 .register = registerAlias(param_sse[0], @max(param_size, 16)),185619 .register = registerAlias(param_sse[0], @max(param_size, 16)),
181630 };185620 };
...@@ -181642,27 +185632,27 @@ fn resolveCallingConventionValues(...@@ -181642,27 +185632,27 @@ fn resolveCallingConventionValues(
181642 result.stack_byte_count += param_size;185632 result.stack_byte_count += param_size;
181643 }185633 }
181644 },185634 },
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}),
181646 }185636 }
181647185637
181648 result.stack_byte_count = @intCast(result.stack_align.forward(result.stack_byte_count));185638 result.stack_byte_count = @intCast(result.stack_align.forward(result.stack_byte_count));
181649 return result;185639 return result;
181650}185640}
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 } {
181653 @branchHint(.cold);185643 @branchHint(.cold);
181654 const zcu = self.pt.zcu;185644 const zcu = cg.pt.zcu;
181655 switch (self.owner) {185645 switch (cg.owner) {
181656 .nav_index => |i| return zcu.codegenFail(i, format, args),185646 .nav_index => |i| return zcu.codegenFail(i, format, args),
181657 .lazy_sym => |s| return zcu.codegenFailType(s.ty, format, args),185647 .lazy_sym => |s| return zcu.codegenFailType(s.ty, format, args),
181658 }185648 }
181659 return error.CodegenFail;185649 return error.CodegenFail;
181660}185650}
181661185651
181662fn failMsg(self: *CodeGen, msg: *Zcu.ErrorMsg) error{ OutOfMemory, CodegenFail } {185652fn failMsg(cg: *CodeGen, msg: *Zcu.ErrorMsg) error{ OutOfMemory, CodegenFail } {
181663 @branchHint(.cold);185653 @branchHint(.cold);
181664 const zcu = self.pt.zcu;185654 const zcu = cg.pt.zcu;
181665 switch (self.owner) {185655 switch (cg.owner) {
181666 .nav_index => |i| return zcu.codegenFailMsg(i, msg),185656 .nav_index => |i| return zcu.codegenFailMsg(i, msg),
181667 .lazy_sym => |s| return zcu.codegenFailTypeMsg(s.ty, msg),185657 .lazy_sym => |s| return zcu.codegenFailTypeMsg(s.ty, msg),
181668 }185658 }
...@@ -182127,6 +186117,7 @@ const Temp = struct {...@@ -182127,6 +186117,7 @@ const Temp = struct {
182127 .register_mask,186117 .register_mask,
182128 .memory,186118 .memory,
182129 .indirect,186119 .indirect,
186120 .indirect_load_frame,
182130 .lea_frame,186121 .lea_frame,
182131 .load_nav,186122 .load_nav,
182132 .lea_nav,186123 .lea_nav,
...@@ -182200,7 +186191,7 @@ const Temp = struct {...@@ -182200,7 +186191,7 @@ const Temp = struct {
182200 switch (temp_tracking.short) {186191 switch (temp_tracking.short) {
182201 else => {},186192 else => {},
182202 .register => |reg| {186193 .register => |reg| {
182203 try cg.freeValue(temp_tracking.long);186194 try cg.freeValue(temp_tracking.long, .{});
182204 temp_tracking.* = .init(.{ .register_offset = .{186195 temp_tracking.* = .init(.{ .register_offset = .{
182205 .reg = reg,186196 .reg = reg,
182206 .off = off,186197 .off = off,
...@@ -182208,7 +186199,7 @@ const Temp = struct {...@@ -182208,7 +186199,7 @@ const Temp = struct {
182208 return;186199 return;
182209 },186200 },
182210 .register_offset => |reg_off| {186201 .register_offset => |reg_off| {
182211 try cg.freeValue(temp_tracking.long);186202 try cg.freeValue(temp_tracking.long, .{});
182212 temp_tracking.* = .init(.{ .register_offset = .{186203 temp_tracking.* = .init(.{ .register_offset = .{
182213 .reg = reg_off.reg,186204 .reg = reg_off.reg,
182214 .off = reg_off.off + off,186205 .off = reg_off.off + off,
...@@ -182598,6 +186589,7 @@ const Temp = struct {...@@ -182598,6 +186589,7 @@ const Temp = struct {
182598 .register_quadruple,186589 .register_quadruple,
182599 .register_overflow,186590 .register_overflow,
182600 .register_mask,186591 .register_mask,
186592 .indirect_load_frame,
182601 .elementwise_args,186593 .elementwise_args,
182602 .reserved_frame,186594 .reserved_frame,
182603 .air_ref,186595 .air_ref,
...@@ -182675,7 +186667,7 @@ const Temp = struct {...@@ -182675,7 +186667,7 @@ const Temp = struct {
182675 .register_quadruple,186667 .register_quadruple,
182676 => |val_regs| for (val_regs) |val_reg| {186668 => |val_regs| for (val_regs) |val_reg| {
182677 try ptr.loadReg(val_ty, val_reg, cg);186669 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);
182679 while (try ptr.toLea(cg)) {}186671 while (try ptr.toLea(cg)) {}
182680 },186672 },
182681 .register_offset => |val_reg_off| switch (val_reg_off.off) {186673 .register_offset => |val_reg_off| switch (val_reg_off.off) {
...@@ -182820,7 +186812,7 @@ const Temp = struct {...@@ -182820,7 +186812,7 @@ const Temp = struct {
182820 var disp = opts.disp;186812 var disp = opts.disp;
182821 for (val_regs) |val_reg| {186813 for (val_regs) |val_reg| {
182822 try src.readReg(disp, val_ty, val_reg, cg);186814 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));
182824 }186816 }
182825 },186817 },
182826 .register_offset => |val_reg_off| switch (val_reg_off.off) {186818 .register_offset => |val_reg_off| switch (val_reg_off.off) {
...@@ -182950,25 +186942,59 @@ const Temp = struct {...@@ -182950,25 +186942,59 @@ const Temp = struct {
182950 while (try ptr.toRegClass(false, .general_purpose, cg)) {},186942 while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182951 }186943 }
182952 try strat.read(cg, dst_reg, try ptr.tracking(cg).short.deref().mem(cg, .{186944 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),
182954 }));186946 }));
182955 }186947 }
182956186948
182957 fn storeRegs(ptr: *Temp, src_ty: Type, src_regs: []const Register, cg: *CodeGen) InnerError!void {186949 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;
182958 var part_disp: u31 = 0;186952 var part_disp: u31 = 0;
182959 var deferred_disp: u31 = 0;186953 var deferred_disp: u31 = 0;
182960 var src_abi_size: u32 = @intCast(src_ty.abiSize(cg.pt.zcu));186954 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));
182962 const src_rc = src_reg.class();186986 const src_rc = src_reg.class();
182963 const part_bit_size = @min(8 * src_abi_size, src_reg.bitSize());186987 const part_bit_size = switch (src_rc) {
182964 const part_size = @divExact(part_bit_size, 8);186988 else => 8 * part_size,
186989 .x87 => part_ty.bitSize(zcu),
186990 };
182965 if (src_rc == .x87 or std.math.isPowerOfTwo(part_size)) {186991 if (src_rc == .x87 or std.math.isPowerOfTwo(part_size)) {
182966 // hack around linker relocation bugs186992 // hack around linker relocation bugs
182967 switch (ptr.tracking(cg).short) {186993 switch (ptr.tracking(cg).short) {
182968 else => {},186994 else => {},
182969 .lea_nav, .lea_uav, .lea_lazy_sym => while (try ptr.toRegClass(false, .general_purpose, cg)) {},186995 .lea_nav, .lea_uav, .lea_lazy_sym => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182970 }186996 }
182971 const strat = try cg.moveStrategy(src_ty, src_rc, false);186997 const strat = try cg.moveStrategy(part_ty, src_rc, false);
182972 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{186998 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{
182973 .size = .fromBitSize(part_bit_size),186999 .size = .fromBitSize(part_bit_size),
182974 .disp = part_disp,187000 .disp = part_disp,
...@@ -182979,7 +187005,7 @@ const Temp = struct {...@@ -182979,7 +187005,7 @@ const Temp = struct {
182979 .size = frame_size,187005 .size = frame_size,
182980 .alignment = .fromNonzeroByteUnits(frame_size),187006 .alignment = .fromNonzeroByteUnits(frame_size),
182981 }));187007 }));
182982 const strat = try cg.moveStrategy(src_ty, src_rc, true);187008 const strat = try cg.moveStrategy(part_ty, src_rc, true);
182983 try strat.write(cg, .{187009 try strat.write(cg, .{
182984 .base = .{ .frame = frame_index },187010 .base = .{ .frame = frame_index },
182985 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },187011 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },
...@@ -183001,7 +187027,7 @@ const Temp = struct {...@@ -183001,7 +187027,7 @@ const Temp = struct {
183001 fn readReg(src: Temp, disp: i32, dst_ty: Type, dst_reg: Register, cg: *CodeGen) InnerError!void {187027 fn readReg(src: Temp, disp: i32, dst_ty: Type, dst_reg: Register, cg: *CodeGen) InnerError!void {
183002 const strat = try cg.moveStrategy(dst_ty, dst_reg.class(), false);187028 const strat = try cg.moveStrategy(dst_ty, dst_reg.class(), false);
183003 try strat.read(cg, dst_reg, try src.tracking(cg).short.mem(cg, .{187029 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),
183005 .disp = disp,187031 .disp = disp,
183006 }));187032 }));
183007 }187033 }
...@@ -183012,7 +187038,7 @@ const Temp = struct {...@@ -183012,7 +187038,7 @@ const Temp = struct {
183012 if (src_rc == .x87 or std.math.isPowerOfTwo(src_abi_size)) {187038 if (src_rc == .x87 or std.math.isPowerOfTwo(src_abi_size)) {
183013 const strat = try cg.moveStrategy(src_ty, src_rc, false);187039 const strat = try cg.moveStrategy(src_ty, src_rc, false);
183014 try strat.write(cg, try dst.tracking(cg).short.mem(cg, .{187040 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),
183016 .disp = disp,187042 .disp = disp,
183017 }), registerAlias(src_reg, src_abi_size));187043 }), registerAlias(src_reg, src_abi_size));
183018 } else {187044 } else {
...@@ -183050,14 +187076,14 @@ const Temp = struct {...@@ -183050,14 +187076,14 @@ const Temp = struct {
183050 .integer, .memory, .float, .float_combine => class_index + 1,187076 .integer, .memory, .float, .float_combine => class_index + 1,
183051 .sse => std.mem.indexOfNonePos(abi.Class, classes, class_index + 1, &.{.sseup}) orelse classes.len,187077 .sse => std.mem.indexOfNonePos(abi.Class, classes, class_index + 1, &.{.sseup}) orelse classes.len,
183052 .x87 => std.mem.indexOfNonePos(abi.Class, classes, class_index + 1, &.{.x87up}) orelse classes.len,187078 .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,
183054 });187080 });
183055 const part_size = switch (class) {187081 const part_size = switch (class) {
183056 .integer, .sse, .memory => @min(8 * @as(u7, next_class_index - class_index), remaining_abi_size),187082 .integer, .sse, .memory => @min(8 * @as(u7, next_class_index - class_index), remaining_abi_size),
183057 .x87 => 16,187083 .x87 => 16,
183058 .float => 4,187084 .float => 4,
183059 .float_combine => 8,187085 .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,
183061 };187087 };
183062 try dst.writeReg(part_disp, switch (class) {187088 try dst.writeReg(part_disp, switch (class) {
183063 .integer => .u64,187089 .integer => .u64,
...@@ -183070,7 +187096,7 @@ const Temp = struct {...@@ -183070,7 +187096,7 @@ const Temp = struct {
183070 .x87 => .f80,187096 .x87 => .f80,
183071 .float => .f32,187097 .float => .f32,
183072 .float_combine => .vector_2_f32,187098 .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,
183074 }, src_reg, cg);187100 }, src_reg, cg);
183075 part_disp += part_size;187101 part_disp += part_size;
183076 remaining_abi_size -= part_size;187102 remaining_abi_size -= part_size;
...@@ -186718,12 +190744,12 @@ const Temp = struct {...@@ -186718,12 +190744,12 @@ const Temp = struct {
186718 .{ ._, ._, .div, .src1q, ._, ._, ._ },190744 .{ ._, ._, .div, .src1q, ._, ._, ._ },
186719 } },190745 } },
186720 }, .{190746 }, .{
186721 .required_features = .{ .@"64bit", null, null, null },190747 .required_cc_abi = .sysv64,
186722 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },190748 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
186723 .patterns = &.{190749 .patterns = &.{
186724 .{ .src = .{190750 .{ .src = .{
186725 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },190751 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
186726 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },190752 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
186727 .none,190753 .none,
186728 } },190754 } },
186729 },190755 },
...@@ -186741,18 +190767,46 @@ const Temp = struct {...@@ -186741,18 +190767,46 @@ const Temp = struct {
186741 .unused,190767 .unused,
186742 .unused,190768 .unused,
186743 },190769 },
186744 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },190770 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
186745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },190771 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
186746 .each = .{ .once = &.{190772 .each = .{ .once = &.{
186747 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },190773 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
186748 } },190774 } },
186749 }, .{190775 }, .{
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,
186751 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },190805 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
186752 .patterns = &.{190806 .patterns = &.{
186753 .{ .src = .{190807 .{ .src = .{
186754 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },190808 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
186755 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },190809 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
186756 .none,190810 .none,
186757 } },190811 } },
186758 },190812 },
...@@ -186770,11 +190824,39 @@ const Temp = struct {...@@ -186770,11 +190824,39 @@ const Temp = struct {
186770 .unused,190824 .unused,
186771 .unused,190825 .unused,
186772 },190826 },
186773 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },190827 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
186774 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },190828 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
186775 .each = .{ .once = &.{190829 .each = .{ .once = &.{
186776 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },190830 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
186777 } },190831 } },
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 } },
186778 }, .{190860 }, .{
186779 .required_features = .{ .@"64bit", null, null, null },190861 .required_features = .{ .@"64bit", null, null, null },
186780 .src_constraints = .{190862 .src_constraints = .{
...@@ -186787,10 +190869,10 @@ const Temp = struct {...@@ -186787,10 +190869,10 @@ const Temp = struct {
186787 },190869 },
186788 .call_frame = .{ .alignment = .@"16" },190870 .call_frame = .{ .alignment = .@"16" },
186789 .extra_temps = .{190871 .extra_temps = .{
186790 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },190872 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
186791 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },190873 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
186792 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },190874 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
186793 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },190875 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
186794 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },190876 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
186795 .unused,190877 .unused,
186796 .unused,190878 .unused,
...@@ -186820,10 +190902,10 @@ const Temp = struct {...@@ -186820,10 +190902,10 @@ const Temp = struct {
186820 },190902 },
186821 .call_frame = .{ .alignment = .@"16" },190903 .call_frame = .{ .alignment = .@"16" },
186822 .extra_temps = .{190904 .extra_temps = .{
186823 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },190905 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
186824 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },190906 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
186825 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },190907 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
186826 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },190908 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
186827 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },190909 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
186828 .unused,190910 .unused,
186829 .unused,190911 .unused,
...@@ -187172,7 +191254,7 @@ const Temp = struct {...@@ -187172,7 +191254,7 @@ const Temp = struct {
187172 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },191254 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
187173 } },191255 } },
187174 }, .{191256 }, .{
187175 .required_features = .{ .@"64bit", null, null, null },191257 .required_cc_abi = .sysv64,
187176 .src_constraints = .{191258 .src_constraints = .{
187177 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },191259 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
187178 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },191260 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
...@@ -187184,12 +191266,12 @@ const Temp = struct {...@@ -187184,12 +191266,12 @@ const Temp = struct {
187184 .call_frame = .{ .alignment = .@"16" },191266 .call_frame = .{ .alignment = .@"16" },
187185 .extra_temps = .{191267 .extra_temps = .{
187186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },191268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187187 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },191269 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
187188 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },191270 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
187189 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },191271 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
187190 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },191272 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187191 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },191273 .{ .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 } } },
187193 .unused,191275 .unused,
187194 .unused,191276 .unused,
187195 .unused,191277 .unused,
...@@ -187210,7 +191292,115 @@ const Temp = struct {...@@ -187210,7 +191292,115 @@ const Temp = struct {
187210 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },191292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
187211 } },191293 } },
187212 }, .{191294 }, .{
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,
187214 .src_constraints = .{191404 .src_constraints = .{
187215 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },191405 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
187216 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },191406 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
...@@ -187222,12 +191412,12 @@ const Temp = struct {...@@ -187222,12 +191412,12 @@ const Temp = struct {
187222 .call_frame = .{ .alignment = .@"16" },191412 .call_frame = .{ .alignment = .@"16" },
187223 .extra_temps = .{191413 .extra_temps = .{
187224 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },191414 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187225 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },191415 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
187226 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },191416 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
187227 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },191417 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
187228 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },191418 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187229 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },191419 .{ .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 } } },
187231 .unused,191421 .unused,
187232 .unused,191422 .unused,
187233 .unused,191423 .unused,
...@@ -187247,6 +191437,114 @@ const Temp = struct {...@@ -187247,6 +191437,114 @@ const Temp = struct {
187247 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },191437 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
187248 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },191438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
187249 } },191439 } },
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 } },
187250 }, .{191548 }, .{
187251 .required_features = .{ .@"64bit", null, null, null },191549 .required_features = .{ .@"64bit", null, null, null },
187252 .src_constraints = .{191550 .src_constraints = .{
...@@ -187260,10 +191558,10 @@ const Temp = struct {...@@ -187260,10 +191558,10 @@ const Temp = struct {
187260 .call_frame = .{ .alignment = .@"16" },191558 .call_frame = .{ .alignment = .@"16" },
187261 .extra_temps = .{191559 .extra_temps = .{
187262 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },191560 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187263 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },191561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
187264 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },191562 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
187265 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },191563 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
187266 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },191564 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187267 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },191565 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
187268 .unused,191566 .unused,
187269 .unused,191567 .unused,
...@@ -187296,10 +191594,10 @@ const Temp = struct {...@@ -187296,10 +191594,10 @@ const Temp = struct {
187296 .call_frame = .{ .alignment = .@"16" },191594 .call_frame = .{ .alignment = .@"16" },
187297 .extra_temps = .{191595 .extra_temps = .{
187298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },191596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187299 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },191597 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
187300 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },191598 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
187301 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },191599 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
187302 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },191600 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187303 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },191601 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
187304 .unused,191602 .unused,
187305 .unused,191603 .unused,
...@@ -187337,14 +191635,21 @@ const Temp = struct {...@@ -187337,14 +191635,21 @@ const Temp = struct {
187337 if (op_temp.tracking(cg).short != .dead) try op_temp.die(cg);191635 if (op_temp.tracking(cg).short != .dead) try op_temp.die(cg);
187338 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;191636 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;
187339 if (cg.reused_operands.isSet(op_index)) continue;191637 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, .{});
187341 }191639 }
187342 if (cg.liveness.isUnused(inst)) try temp.die(cg) else {191640 if (cg.liveness.isUnused(inst)) try temp.die(cg) else {
187343 switch (temp.unwrap(cg)) {191641 switch (temp.unwrap(cg)) {
187344 .ref, .err_ret_trace => {191642 .ref, .err_ret_trace => {
187345 const temp_mcv = temp.tracking(cg).short;191643 const temp_mcv = temp.tracking(cg).short;
187346 const result = result: switch (temp_mcv) {191644 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,
187348 .undef, .immediate, .lea_frame => temp_mcv,191653 .undef, .immediate, .lea_frame => temp_mcv,
187349 .eflags,191654 .eflags,
187350 .register,191655 .register,
...@@ -187386,14 +191691,14 @@ const Temp = struct {...@@ -187386,14 +191691,14 @@ const Temp = struct {
187386 if (op_temp.index != temp.index) continue;191691 if (op_temp.index != temp.index) continue;
187387 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;191692 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;
187388 if (cg.reused_operands.isSet(op_index)) continue;191693 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, .{});
187390 }191695 }
187391 }191696 }
187392191697
187393 fn die(temp: Temp, cg: *CodeGen) InnerError!void {191698 fn die(temp: Temp, cg: *CodeGen) InnerError!void {
187394 switch (temp.unwrap(cg)) {191699 switch (temp.unwrap(cg)) {
187395 .ref, .err_ret_trace => {},191700 .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(), .{}),
187397 }191702 }
187398 }191703 }
187399191704
...@@ -187779,6 +192084,8 @@ const Select = struct {...@@ -187779,6 +192084,8 @@ const Select = struct {
187779 }192084 }
187780192085
187781 const Case = struct {192086 const Case = struct {
192087 required_abi: enum { any, gnu, msvc } = .any,
192088 required_cc_abi: enum { any, sysv64, win64 } = .any,
187782 required_features: [4]?std.Target.x86.Feature = @splat(null),192089 required_features: [4]?std.Target.x86.Feature = @splat(null),
187783 src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any),192090 src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any),
187784 dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),192091 dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),
...@@ -188151,6 +192458,7 @@ const Select = struct {...@@ -188151,6 +192458,7 @@ const Select = struct {
188151 to_reg_pair: [2]Register,192458 to_reg_pair: [2]Register,
188152 to_param_gpr: TempSpec.Kind.CallConvRegSpec,192459 to_param_gpr: TempSpec.Kind.CallConvRegSpec,
188153 to_param_gpr_pair: TempSpec.Kind.CallConvRegSpec,192460 to_param_gpr_pair: TempSpec.Kind.CallConvRegSpec,
192461 to_param_sse: TempSpec.Kind.CallConvRegSpec,
188154 to_ret_gpr: TempSpec.Kind.CallConvRegSpec,192462 to_ret_gpr: TempSpec.Kind.CallConvRegSpec,
188155 to_ret_gpr_pair: TempSpec.Kind.CallConvRegSpec,192463 to_ret_gpr_pair: TempSpec.Kind.CallConvRegSpec,
188156 mem,192464 mem,
...@@ -188238,7 +192546,7 @@ const Select = struct {...@@ -188238,7 +192546,7 @@ const Select = struct {
188238 .mem => temp.tracking(cg).short.isMemory(),192546 .mem => temp.tracking(cg).short.isMemory(),
188239 .to_mem, .to_mut_mem => true,192547 .to_mem, .to_mut_mem => true,
188240 .mut_mem => temp.isMut(cg) and temp.tracking(cg).short.isMemory(),192548 .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,
188242 .gpr => temp.typeOf(cg).abiSize(cg.pt.zcu) <= 8 and switch (temp.tracking(cg).short) {192550 .gpr => temp.typeOf(cg).abiSize(cg.pt.zcu) <= 8 and switch (temp.tracking(cg).short) {
188243 .register => |reg| reg.isClass(.general_purpose),192551 .register => |reg| reg.isClass(.general_purpose),
188244 .register_offset => |reg_off| reg_off.reg.isClass(.general_purpose) and reg_off.off == 0,192552 .register_offset => |reg_off| reg_off.reg.isClass(.general_purpose) and reg_off.off == 0,
...@@ -188343,10 +192651,11 @@ const Select = struct {...@@ -188343,10 +192651,11 @@ const Select = struct {
188343 .mut_mem, .to_mut_mem => try temp.toBase(true, cg),192651 .mut_mem, .to_mut_mem => try temp.toBase(true, cg),
188344 .to_reg => |reg| try temp.toReg(reg, cg),192652 .to_reg => |reg| try temp.toReg(reg, cg),
188345 .to_reg_pair => |regs| try temp.toRegPair(regs, cg),192653 .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),192654 .to_param_gpr => |param_spec| try temp.toReg(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)], cg),
188347 .to_param_gpr_pair => |param_spec| try temp.toRegPair(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..2].*, cg),192655 .to_param_gpr_pair => |param_spec| try temp.toRegPair(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..2].*, cg),
188348 .to_ret_gpr => |ret_spec| try temp.toReg(abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at], cg),192656 .to_param_sse => |param_spec| try temp.toReg(abi.getCAbiSseParamRegs(param_spec.tag(cg), cg.target)[param_spec.index(cg)], cg),
188349 .to_ret_gpr_pair => |ret_spec| try temp.toRegPair(abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..2].*, 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),
188350 .gpr, .immut_gpr, .to_gpr => try temp.toRegClass(false, .general_purpose, cg),192659 .gpr, .immut_gpr, .to_gpr => try temp.toRegClass(false, .general_purpose, cg),
188351 .mut_gpr, .to_mut_gpr => try temp.toRegClass(true, .general_purpose, cg),192660 .mut_gpr, .to_mut_gpr => try temp.toRegClass(true, .general_purpose, cg),
188352 .to_gphi => try temp.toRegClass(false, .gphi, cg),192661 .to_gphi => try temp.toRegClass(false, .gphi, cg),
...@@ -188381,8 +192690,10 @@ const Select = struct {...@@ -188381,8 +192690,10 @@ const Select = struct {
188381 reg_pair: [2]Register,192690 reg_pair: [2]Register,
188382 param_gpr: CallConvRegSpec,192691 param_gpr: CallConvRegSpec,
188383 param_gpr_pair: CallConvRegSpec,192692 param_gpr_pair: CallConvRegSpec,
192693 param_sse: CallConvRegSpec,
188384 ret_gpr: CallConvRegSpec,192694 ret_gpr: CallConvRegSpec,
188385 ret_gpr_pair: CallConvRegSpec,192695 ret_gpr_pair: CallConvRegSpec,
192696 ret_sse: CallConvRegSpec,
188386 rc: Register.Class,192697 rc: Register.Class,
188387 rc_pair: Register.Class,192698 rc_pair: Register.Class,
188388 mut_rc: struct { ref: Select.Operand.Ref, rc: Register.Class },192699 mut_rc: struct { ref: Select.Operand.Ref, rc: Register.Class },
...@@ -188422,6 +192733,7 @@ const Select = struct {...@@ -188422,6 +192733,7 @@ const Select = struct {
188422192733
188423 const CallConvRegSpec = struct {192734 const CallConvRegSpec = struct {
188424 cc: Case.CallConv,192735 cc: Case.CallConv,
192736 after: u2,
188425 at: u2,192737 at: u2,
188426192738
188427 fn tag(spec: CallConvRegSpec, cg: *const CodeGen) std.builtin.CallingConvention.Tag {192739 fn tag(spec: CallConvRegSpec, cg: *const CodeGen) std.builtin.CallingConvention.Tag {
...@@ -188431,6 +192743,14 @@ const Select = struct {...@@ -188431,6 +192743,14 @@ const Select = struct {
188431 .zigcc => .auto,192743 .zigcc => .auto,
188432 };192744 };
188433 }192745 }
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 }
188434 };192754 };
188435192755
188436 fn lock(kind: Kind, cg: *CodeGen) ![2]?RegisterLock {192756 fn lock(kind: Kind, cg: *CodeGen) ![2]?RegisterLock {
...@@ -188439,10 +192759,12 @@ const Select = struct {...@@ -188439,10 +192759,12 @@ const Select = struct {
188439 else => return reg_locks,192759 else => return reg_locks,
188440 .reg => |reg| .{ reg, .none },192760 .reg => |reg| .{ reg, .none },
188441 .reg_pair => |regs| regs,192761 .reg_pair => |regs| regs,
188442 .param_gpr => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..1].* ++ .{.none},192762 .param_gpr => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..1].* ++ .{.none},
188443 .param_gpr_pair => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..2].*,192763 .param_gpr_pair => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..2].*,
188444 .ret_gpr => |ret_spec| abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..1].* ++ .{.none},192764 .param_sse => |param_spec| abi.getCAbiSseParamRegs(param_spec.tag(cg), cg.target)[param_spec.index(cg)..][0..1].* ++ .{.none},
188445 .ret_gpr_pair => |ret_spec| abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..2].*,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},
188446 };192768 };
188447 for (regs, &reg_locks) |reg, *reg_lock| {192769 for (regs, &reg_locks) |reg, *reg_lock| {
188448 if (reg == .none) continue;192770 if (reg == .none) continue;
...@@ -188476,16 +192798,22 @@ const Select = struct {...@@ -188476,16 +192798,22 @@ const Select = struct {
188476 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },192798 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },
188477 .reg_pair => |regs| .{ try cg.tempInit(spec.type, .{ .register_pair = regs }), true },192799 .reg_pair => |regs| .{ try cg.tempInit(spec.type, .{ .register_pair = regs }), true },
188478 .param_gpr => |param_spec| .{ try cg.tempInit(spec.type, .{192800 .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)],
188480 }), true },192802 }), true },
188481 .param_gpr_pair => |param_spec| .{ try cg.tempInit(spec.type, .{192803 .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)],
188483 }), true },192808 }), true },
188484 .ret_gpr => |ret_spec| .{ try cg.tempInit(spec.type, .{192809 .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)],
188486 }), true },192811 }), true },
188487 .ret_gpr_pair => |ret_spec| .{ try cg.tempInit(spec.type, .{192812 .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)],
188489 }), true },192817 }), true },
188490 .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true },192818 .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true },
188491 .rc_pair => |rc| .{ try cg.tempAllocRegPair(spec.type, regSetForRegClass(rc)), true },192819 .rc_pair => |rc| .{ try cg.tempAllocRegPair(spec.type, regSetForRegClass(rc)), true },
...@@ -188842,7 +193170,17 @@ const Select = struct {...@@ -188842,7 +193170,17 @@ const Select = struct {
188842 .storage = .{ .elems = elems },193170 .storage = .{ .elems = elems },
188843 } }))), true };193171 } }))), true };
188844 },193172 },
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 },
188846 .lazy_sym => |lazy_symbol_spec| {193184 .lazy_sym => |lazy_symbol_spec| {
188847 const ip = &pt.zcu.intern_pool;193185 const ip = &pt.zcu.intern_pool;
188848 const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s);193186 const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s);
...@@ -188997,6 +193335,7 @@ const Select = struct {...@@ -188997,6 +193335,7 @@ const Select = struct {
188997 const add_src0_elem_size_mul_src1: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size_mul_src1, .op = .mul, .rhs = .@"1" };193335 const add_src0_elem_size_mul_src1: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size_mul_src1, .op = .mul, .rhs = .@"1" };
188998 const sub_src0_elem_size_mul_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_mul_src1, .op = .mul, .rhs = .@"1" };193336 const sub_src0_elem_size_mul_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_mul_src1, .op = .mul, .rhs = .@"1" };
188999 const add_dst0_elem_size: Adjust = .{ .sign = .pos, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" };193337 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" };
189000 const add_src1_div_8_down_4: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .div_8_down, .rhs = .@"4" };193339 const add_src1_div_8_down_4: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .div_8_down, .rhs = .@"4" };
189001 const add_src1_rem_32: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"4" };193340 const add_src1_rem_32: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"4" };
189002 const add_src1_rem_64: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"8" };193341 const add_src1_rem_64: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"8" };
...@@ -189287,7 +193626,11 @@ const Select = struct {...@@ -189287,7 +193626,11 @@ const Select = struct {
189287 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0t } };193626 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0t } };
189288 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0x } };193627 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0x } };
189289 const tmp0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0y } };193628 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 };
189290 const tmp0q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0q }, .imm = 1 };193631 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 };
189291 const tmp0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0q }, .imm = 2 };193634 const tmp0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0q }, .imm = 2 };
189292193635
189293 const tmp1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1l } };193636 const tmp1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1l } };
...@@ -189301,7 +193644,11 @@ const Select = struct {...@@ -189301,7 +193644,11 @@ const Select = struct {
189301 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1t } };193644 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1t } };
189302 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1x } };193645 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1x } };
189303 const tmp1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1y } };193646 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 };
189304 const tmp1q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1q }, .imm = 1 };193649 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 };
189305 const tmp1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1q }, .imm = 2 };193652 const tmp1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1q }, .imm = 2 };
189306193653
189307 const tmp2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2l } };193654 const tmp2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2l } };
...@@ -189315,7 +193662,11 @@ const Select = struct {...@@ -189315,7 +193662,11 @@ const Select = struct {
189315 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2t } };193662 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2t } };
189316 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2x } };193663 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2x } };
189317 const tmp2y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2y } };193664 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 };
189318 const tmp2q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2q }, .imm = 1 };193667 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 };
189319 const tmp2q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2q }, .imm = 2 };193670 const tmp2q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2q }, .imm = 2 };
189320193671
189321 const tmp3l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3l } };193672 const tmp3l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3l } };
...@@ -189329,7 +193680,11 @@ const Select = struct {...@@ -189329,7 +193680,11 @@ const Select = struct {
189329 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3t } };193680 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3t } };
189330 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3x } };193681 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3x } };
189331 const tmp3y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3y } };193682 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 };
189332 const tmp3q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3q }, .imm = 1 };193685 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 };
189333 const tmp3q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3q }, .imm = 2 };193688 const tmp3q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3q }, .imm = 2 };
189334193689
189335 const tmp4l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4l } };193690 const tmp4l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4l } };
...@@ -189343,7 +193698,11 @@ const Select = struct {...@@ -189343,7 +193698,11 @@ const Select = struct {
189343 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4t } };193698 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4t } };
189344 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4x } };193699 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4x } };
189345 const tmp4y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4y } };193700 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 };
189346 const tmp4q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4q }, .imm = 1 };193703 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 };
189347 const tmp4q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4q }, .imm = 2 };193706 const tmp4q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4q }, .imm = 2 };
189348193707
189349 const tmp5l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5l } };193708 const tmp5l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5l } };
...@@ -189357,7 +193716,11 @@ const Select = struct {...@@ -189357,7 +193716,11 @@ const Select = struct {
189357 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5t } };193716 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5t } };
189358 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5x } };193717 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5x } };
189359 const tmp5y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5y } };193718 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 };
189360 const tmp5q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5q }, .imm = 1 };193721 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 };
189361 const tmp5q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5q }, .imm = 2 };193724 const tmp5q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5q }, .imm = 2 };
189362193725
189363 const tmp6l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6l } };193726 const tmp6l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6l } };
...@@ -189371,7 +193734,11 @@ const Select = struct {...@@ -189371,7 +193734,11 @@ const Select = struct {
189371 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6t } };193734 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6t } };
189372 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6x } };193735 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6x } };
189373 const tmp6y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6y } };193736 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 };
189374 const tmp6q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6q }, .imm = 1 };193739 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 };
189375 const tmp6q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6q }, .imm = 2 };193742 const tmp6q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6q }, .imm = 2 };
189376193743
189377 const tmp7l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7l } };193744 const tmp7l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7l } };
...@@ -189385,7 +193752,11 @@ const Select = struct {...@@ -189385,7 +193752,11 @@ const Select = struct {
189385 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7t } };193752 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7t } };
189386 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7x } };193753 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7x } };
189387 const tmp7y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7y } };193754 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 };
189388 const tmp7q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7q }, .imm = 1 };193757 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 };
189389 const tmp7q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7q }, .imm = 2 };193760 const tmp7q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7q }, .imm = 2 };
189390193761
189391 const tmp8l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8l } };193762 const tmp8l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8l } };
...@@ -189399,7 +193770,11 @@ const Select = struct {...@@ -189399,7 +193770,11 @@ const Select = struct {
189399 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8t } };193770 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8t } };
189400 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8x } };193771 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8x } };
189401 const tmp8y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8y } };193772 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 };
189402 const tmp8q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8q }, .imm = 1 };193775 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 };
189403 const tmp8q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8q }, .imm = 2 };193778 const tmp8q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8q }, .imm = 2 };
189404193779
189405 const tmp9l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9l } };193780 const tmp9l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9l } };
...@@ -189413,7 +193788,11 @@ const Select = struct {...@@ -189413,7 +193788,11 @@ const Select = struct {
189413 const tmp9t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9t } };193788 const tmp9t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9t } };
189414 const tmp9x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9x } };193789 const tmp9x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9x } };
189415 const tmp9y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9y } };193790 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 };
189416 const tmp9q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9q }, .imm = 1 };193793 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 };
189417 const tmp9q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9q }, .imm = 2 };193796 const tmp9q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9q }, .imm = 2 };
189418193797
189419 const tmp10l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10l } };193798 const tmp10l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10l } };
...@@ -189427,7 +193806,11 @@ const Select = struct {...@@ -189427,7 +193806,11 @@ const Select = struct {
189427 const tmp10t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10t } };193806 const tmp10t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10t } };
189428 const tmp10x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10x } };193807 const tmp10x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10x } };
189429 const tmp10y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10y } };193808 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 };
189430 const tmp10q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10q }, .imm = 1 };193811 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 };
189431 const tmp10q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10q }, .imm = 2 };193814 const tmp10q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10q }, .imm = 2 };
189432193815
189433 const dst0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0l } };193816 const dst0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0l } };
...@@ -189441,7 +193824,11 @@ const Select = struct {...@@ -189441,7 +193824,11 @@ const Select = struct {
189441 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0t } };193824 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0t } };
189442 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0x } };193825 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0x } };
189443 const dst0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0y } };193826 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 };
189444 const dst0q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0q }, .imm = 1 };193829 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 };
189445 const dst0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0q }, .imm = 2 };193832 const dst0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0q }, .imm = 2 };
189446193833
189447 const dst1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1l } };193834 const dst1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1l } };
...@@ -189455,7 +193842,11 @@ const Select = struct {...@@ -189455,7 +193842,11 @@ const Select = struct {
189455 const dst1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1t } };193842 const dst1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1t } };
189456 const dst1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1x } };193843 const dst1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1x } };
189457 const dst1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1y } };193844 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 };
189458 const dst1q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1q }, .imm = 1 };193847 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 };
189459 const dst1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1q }, .imm = 2 };193850 const dst1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1q }, .imm = 2 };
189460193851
189461 const src0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0l } };193852 const src0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0l } };
...@@ -189469,7 +193860,11 @@ const Select = struct {...@@ -189469,7 +193860,11 @@ const Select = struct {
189469 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0t } };193860 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0t } };
189470 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0x } };193861 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0x } };
189471 const src0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0y } };193862 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 };
189472 const src0q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0q }, .imm = 1 };193865 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 };
189473 const src0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0q }, .imm = 2 };193868 const src0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0q }, .imm = 2 };
189474193869
189475 const src1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1l } };193870 const src1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1l } };
...@@ -189483,7 +193878,11 @@ const Select = struct {...@@ -189483,7 +193878,11 @@ const Select = struct {
189483 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1t } };193878 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1t } };
189484 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1x } };193879 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1x } };
189485 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1y } };193880 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 };
189486 const src1q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1q }, .imm = 1 };193883 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 };
189487 const src1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1q }, .imm = 2 };193886 const src1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1q }, .imm = 2 };
189488193887
189489 const src2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2l } };193888 const src2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2l } };
...@@ -189497,7 +193896,11 @@ const Select = struct {...@@ -189497,7 +193896,11 @@ const Select = struct {
189497 const src2t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2t } };193896 const src2t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2t } };
189498 const src2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2x } };193897 const src2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2x } };
189499 const src2y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2y } };193898 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 };
189500 const src2q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2q }, .imm = 1 };193901 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 };
189501 const src2q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2q }, .imm = 2 };193904 const src2q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2q }, .imm = 2 };
189502193905
189503 fn si(imm: i32) Select.Operand {193906 fn si(imm: i32) Select.Operand {
...@@ -189956,6 +194359,22 @@ fn select(...@@ -189956,6 +194359,22 @@ fn select(
189956) Select.Error!void {194359) Select.Error!void {
189957 @setEvalBranchQuota(33_500);194360 @setEvalBranchQuota(33_500);
189958 cases: for (cases) |case| {194361 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 }
189959 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;194378 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;
189960 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;194379 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;
189961 for (case.dst_constraints[0..dst_temps.len], dst_tys) |dst_constraint, dst_ty| if (!dst_constraint.accepts(dst_ty, cg)) continue :cases;194380 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(...@@ -189972,7 +194391,11 @@ fn select(
189972 const frame_allocs_slice = cg.frame_allocs.slice();194391 const frame_allocs_slice = cg.frame_allocs.slice();
189973 const stack_frame_size =194392 const stack_frame_size =
189974 &frame_allocs_slice.items(.abi_size)[@intFromEnum(FrameIndex.call_frame)];194393 &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 });
189976 const stack_frame_align =194399 const stack_frame_align =
189977 &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];194400 &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];
189978 stack_frame_align.* = stack_frame_align.max(case.call_frame.alignment);194401 stack_frame_align.* = stack_frame_align.max(case.call_frame.alignment);
src/arch/x86_64/Emit.zig+5-11
...@@ -107,7 +107,7 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -107,7 +107,7 @@ pub fn emitMir(emit: *Emit) Error!void {
107 nav,107 nav,
108 emit.lower.target,108 emit.lower.target,
109 )) {109 )) {
110 .mcv => |mcv| mcv.lea_symbol,110 .sym_index => |sym_index| sym_index,
111 .fail => |em| {111 .fail => |em| {
112 assert(emit.lower.err_msg == null);112 assert(emit.lower.err_msg == null);
113 emit.lower.err_msg = em;113 emit.lower.err_msg = em;
...@@ -151,7 +151,7 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -151,7 +151,7 @@ pub fn emitMir(emit: *Emit) Error!void {
151 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),151 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
152 emit.lower.src_loc,152 emit.lower.src_loc,
153 )) {153 )) {
154 .mcv => |mcv| mcv.load_symbol,154 .sym_index => |sym_index| sym_index,
155 .fail => |em| {155 .fail => |em| {
156 assert(emit.lower.err_msg == null);156 assert(emit.lower.err_msg == null);
157 emit.lower.err_msg = em;157 emit.lower.err_msg = em;
...@@ -186,7 +186,7 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -186,7 +186,7 @@ pub fn emitMir(emit: *Emit) Error!void {
186 else if (emit.bin_file.cast(.macho)) |macho_file|186 else if (emit.bin_file.cast(.macho)) |macho_file|
187 try macho_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)187 try macho_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
188 else if (emit.bin_file.cast(.coff)) |coff_file|188 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")
190 else190 else
191 return emit.fail("external symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),191 return emit.fail("external symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
192 .is_extern = true,192 .is_extern = true,
...@@ -548,10 +548,7 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -548,10 +548,7 @@ pub fn emitMir(emit: *Emit) Error!void {
548 => return emit.fail("unable to codegen: {s}", .{@errorName(err)}),548 => return emit.fail("unable to codegen: {s}", .{@errorName(err)}),
549 else => |e| return e,549 else => |e| return e,
550 }) {550 }) {
551 .mcv => |mcv| switch (mcv) {551 .sym_index => |sym_index| sym_index,
552 else => unreachable,
553 .load_direct, .load_symbol => |sym_index| sym_index,
554 },
555 .fail => |em| {552 .fail => |em| {
556 assert(emit.lower.err_msg == null);553 assert(emit.lower.err_msg == null);
557 emit.lower.err_msg = em;554 emit.lower.err_msg = em;
...@@ -564,10 +561,7 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -564,10 +561,7 @@ pub fn emitMir(emit: *Emit) Error!void {
564 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),561 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
565 emit.lower.src_loc,562 emit.lower.src_loc,
566 )) {563 )) {
567 .mcv => |mcv| switch (mcv) {564 .sym_index => |sym_index| sym_index,
568 else => unreachable,
569 .load_direct, .load_symbol => |sym_index| sym_index,
570 },
571 .fail => |em| {565 .fail => |em| {
572 assert(emit.lower.err_msg == null);566 assert(emit.lower.err_msg == null);
573 emit.lower.err_msg = em;567 emit.lower.err_msg = em;
src/arch/x86_64/Encoding.zig+2-2
...@@ -598,7 +598,7 @@ pub const Op = enum {...@@ -598,7 +598,7 @@ pub const Op = enum {
598 .rax => .rax,598 .rax => .rax,
599 .cl => .cl,599 .cl => .cl,
600 .dx => .dx,600 .dx => .dx,
601 else => switch (reg.bitSize()) {601 else => switch (reg.size().bitSize(target)) {
602 8 => .r8,602 8 => .r8,
603 16 => .r16,603 16 => .r16,
604 32 => .r32,604 32 => .r32,
...@@ -615,7 +615,7 @@ pub const Op = enum {...@@ -615,7 +615,7 @@ pub const Op = enum {
615 .mmx => .mm,615 .mmx => .mm,
616 .sse => switch (reg) {616 .sse => switch (reg) {
617 .xmm0 => .xmm0,617 .xmm0 => .xmm0,
618 else => switch (reg.bitSize()) {618 else => switch (reg.size().bitSize(target)) {
619 128 => .xmm,619 128 => .xmm,
620 256 => .ymm,620 256 => .ymm,
621 else => unreachable,621 else => unreachable,
src/arch/x86_64/Mir.zig+3
...@@ -12,6 +12,8 @@ extra: []const u32,...@@ -12,6 +12,8 @@ extra: []const u32,
12string_bytes: []const u8,12string_bytes: []const u8,
13locals: []const Local,13locals: []const Local,
14table: []const Inst.Index,14table: []const Inst.Index,
15/// Optional data which, when present, can be used to accelerate encoding speed.
16memoized_encodings: []const u0 = &.{},
15frame_locs: std.MultiArrayList(FrameLoc).Slice,17frame_locs: std.MultiArrayList(FrameLoc).Slice,
1618
17pub const Inst = struct {19pub const Inst = struct {
...@@ -1963,6 +1965,7 @@ pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {...@@ -1963,6 +1965,7 @@ pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {
1963 gpa.free(mir.string_bytes);1965 gpa.free(mir.string_bytes);
1964 gpa.free(mir.locals);1966 gpa.free(mir.locals);
1965 gpa.free(mir.table);1967 gpa.free(mir.table);
1968 gpa.free(mir.memoized_encodings);
1966 mir.frame_locs.deinit(gpa);1969 mir.frame_locs.deinit(gpa);
1967 mir.* = undefined;1970 mir.* = undefined;
1968}1971}
src/arch/x86_64/abi.zig+148-148
...@@ -1,20 +1,86 @@...@@ -1,20 +1,86 @@
1pub const Class = enum {1pub const Class = enum {
2 /// INTEGER: This class consists of integral types that fit into one of the general
3 /// purpose registers.
2 integer,4 integer,
5 /// SSE: The class consists of types that fit into a vector register.
3 sse,6 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.
4 sseup,9 sseup,
10 /// X87, X87UP: These classes consist of types that will be returned via the
11 /// x87 FPU.
5 x87,12 x87,
13 /// The 15-bit exponent, 1-bit sign, and 6 bytes of padding of an `f80`.
6 x87up,14 x87up,
7 complex_x87,15 /// NO_CLASS: This class is used as initializer in the algorithms. It will be used for
8 memory,16 /// padding and empty structures and unions.
9 none,17 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`.
10 win_i128,22 win_i128,
23 /// A `Class.sse` containing one `f32`.
11 float,24 float,
25 /// A `Class.sse` containing two `f32`s.
12 float_combine,26 float_combine,
27 /// Clang passes each vector element in a separate `Class.integer`, but returns as `Class.memory`.
13 integer_per_element,28 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 {
16 return switch (class) {82 return switch (class) {
17 .x87, .x87up, .complex_x87 => true,83 .x87, .x87up => true,
18 else => false,84 else => false,
19 };85 };
20 }86 }
...@@ -44,7 +110,7 @@ pub const Class = enum {...@@ -44,7 +110,7 @@ pub const Class = enum {
44 }110 }
45};111};
46112
47pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {113pub fn classifyWindows(ty: Type, zcu: *Zcu, target: *const std.Target) Class {
48 // https://docs.microsoft.com/en-gb/cpp/build/x64-calling-convention?view=vs-2017114 // https://docs.microsoft.com/en-gb/cpp/build/x64-calling-convention?view=vs-2017
49 // "There's a strict one-to-one correspondence between a function call's arguments115 // "There's a strict one-to-one correspondence between a function call's arguments
50 // and the registers used for those arguments. Any argument that doesn't fit in 8116 // 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 {...@@ -53,7 +119,7 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
53 // "All floating point operations are done using the 16 XMM registers."119 // "All floating point operations are done using the 16 XMM registers."
54 // "Structs and unions of size 8, 16, 32, or 64 bits, and __m64 types, are passed120 // "Structs and unions of size 8, 16, 32, or 64 bits, and __m64 types, are passed
55 // as if they were integers of the same size."121 // as if they were integers of the same size."
56 switch (ty.zigTypeTag(zcu)) {122 return switch (ty.zigTypeTag(zcu)) {
57 .pointer,123 .pointer,
58 .int,124 .int,
59 .bool,125 .bool,
...@@ -70,19 +136,23 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {...@@ -70,19 +136,23 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
70 .frame,136 .frame,
71 => switch (ty.abiSize(zcu)) {137 => switch (ty.abiSize(zcu)) {
72 0 => unreachable,138 0 => unreachable,
73 1, 2, 4, 8 => return .integer,139 1, 2, 4, 8 => .integer,
74 else => switch (ty.zigTypeTag(zcu)) {140 else => switch (ty.zigTypeTag(zcu)) {
75 .int => return .win_i128,141 .int => .win_i128,
76 .@"struct", .@"union" => if (ty.containerLayout(zcu) == .@"packed") {142 .@"struct", .@"union" => if (ty.containerLayout(zcu) == .@"packed")
77 return .win_i128;143 .win_i128
78 } else {144 else
79 return .memory;145 .memory,
80 },146 else => .memory,
81 else => return .memory,
82 },147 },
83 },148 },
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
87 .type,157 .type,
88 .comptime_float,158 .comptime_float,
...@@ -93,171 +163,109 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {...@@ -93,171 +163,109 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
93 .@"opaque",163 .@"opaque",
94 .enum_literal,164 .enum_literal,
95 => unreachable,165 => unreachable,
96 }166 };
97}167}
98168
99pub const Context = enum { ret, arg, field, other };169pub const Context = enum { ret, arg, other };
100170
101/// There are a maximum of 8 possible return slots. Returned values are in171/// There are a maximum of 8 possible return slots. Returned values are in
102/// the beginning of the array; unused slots are filled with .none.172/// the beginning of the array; unused slots are filled with .none.
103pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Context) [8]Class {173pub 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;
109 switch (ty.zigTypeTag(zcu)) {174 switch (ty.zigTypeTag(zcu)) {
110 .pointer => switch (ty.ptrSize(zcu)) {175 .pointer => switch (ty.ptrSize(zcu)) {
111 .slice => {176 .slice => return Class.two_integers,
112 result[0] = .integer;177 else => return Class.one_integer,
113 result[1] = .integer;
114 return result;
115 },
116 else => {
117 result[0] = .integer;
118 return result;
119 },
120 },178 },
121 .int, .@"enum", .error_set => {179 .int, .@"enum", .error_set => {
122 const bits = ty.intInfo(zcu).bits;180 const bits = ty.intInfo(zcu).bits;
123 if (bits <= 64) {181 if (bits <= 64 * 1) return Class.one_integer;
124 result[0] = .integer;182 if (bits <= 64 * 2) return Class.two_integers;
125 return result;183 if (bits <= 64 * 3) return Class.three_integers;
126 }184 if (bits <= 64 * 4) return Class.four_integers;
127 if (bits <= 128) {185 return Class.stack;
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;
146 },
147 .bool, .void, .noreturn => {
148 result[0] = .integer;
149 return result;
150 },186 },
187 .bool, .void, .noreturn => return Class.one_integer,
151 .float => switch (ty.floatBits(target)) {188 .float => switch (ty.floatBits(target)) {
152 16 => {189 16 => {
153 if (ctx == .field) {190 if (ctx == .other) return Class.stack;
154 result[0] = .memory;191 // TODO clang doesn't allow __fp16 as .ret or .arg
155 } else {192 return Class.f16;
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;
184 },193 },
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,
185 else => unreachable,204 else => unreachable,
186 },205 },
187 .vector => {206 .vector => {
188 const elem_ty = ty.childType(zcu);207 const elem_ty = ty.childType(zcu);
189 const bits = elem_ty.bitSize(zcu) * ty.arrayLen(zcu);208 const bits = elem_ty.bitSize(zcu) * ty.arrayLen(zcu);
190 if (elem_ty.toIntern() == .bool_type) {209 if (elem_ty.toIntern() == .bool_type) {
191 if (bits <= 32) return .{210 if (bits <= 32) return Class.one_integer;
192 .integer, .none, .none, .none,211 if (bits <= 64) return Class.f64;
193 .none, .none, .none, .none,212 if (ctx == .other) return Class.stack;
194 };213 if (bits <= 128) return Class.len_integers;
195 if (bits <= 64) return .{214 if (bits <= 256 and target.cpu.has(.x86, .avx)) return Class.len_integers;
196 .sse, .none, .none, .none,215 if (bits <= 512 and target.cpu.has(.x86, .avx512f)) return Class.len_integers;
197 .none, .none, .none, .none,216 return Class.stack;
198 };217 }
199 if (ctx == .arg) {218 if (elem_ty.isRuntimeFloat() and elem_ty.floatBits(target) == 80) {
200 if (bits <= 128) return .{219 if (bits <= 80 * 1) return Class.f80;
201 .integer_per_element, .none, .none, .none,220 if (bits <= 80 * 2) return Class.complex_x87;
202 .none, .none, .none, .none,221 return Class.stack;
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;
214 }222 }
215 if (bits <= 64) return .{223 if (bits <= 64 * 1) return .{
216 .sse, .none, .none, .none,224 .sse, .none, .none, .none,
217 .none, .none, .none, .none,225 .none, .none, .none, .none,
218 };226 };
219 if (bits <= 128) return .{227 if (bits <= 64 * 2) return .{
220 .sse, .sseup, .none, .none,228 .sse, .sseup, .none, .none,
221 .none, .none, .none, .none,229 .none, .none, .none, .none,
222 };230 };
223 if (ctx == .arg and !target.cpu.has(.x86, .avx)) return memory_class;231 if (ctx == .arg and !target.cpu.has(.x86, .avx)) return Class.stack;
224 if (bits <= 192) return .{232 if (bits <= 64 * 3) return .{
225 .sse, .sseup, .sseup, .none,233 .sse, .sseup, .sseup, .none,
226 .none, .none, .none, .none,234 .none, .none, .none, .none,
227 };235 };
228 if (bits <= 256) return .{236 if (bits <= 64 * 4) return .{
229 .sse, .sseup, .sseup, .sseup,237 .sse, .sseup, .sseup, .sseup,
230 .none, .none, .none, .none,238 .none, .none, .none, .none,
231 };239 };
232 if (ctx == .arg and !target.cpu.has(.x86, .avx512f)) return memory_class;240 if (ctx == .arg and !target.cpu.has(.x86, .avx512f)) return Class.stack;
233 if (bits <= 320) return .{241 if (bits <= 64 * 5) return .{
234 .sse, .sseup, .sseup, .sseup,242 .sse, .sseup, .sseup, .sseup,
235 .sseup, .none, .none, .none,243 .sseup, .none, .none, .none,
236 };244 };
237 if (bits <= 384) return .{245 if (bits <= 64 * 6) return .{
238 .sse, .sseup, .sseup, .sseup,246 .sse, .sseup, .sseup, .sseup,
239 .sseup, .sseup, .none, .none,247 .sseup, .sseup, .none, .none,
240 };248 };
241 if (bits <= 448) return .{249 if (bits <= 64 * 7) return .{
242 .sse, .sseup, .sseup, .sseup,250 .sse, .sseup, .sseup, .sseup,
243 .sseup, .sseup, .sseup, .none,251 .sseup, .sseup, .sseup, .none,
244 };252 };
245 if (bits <= 512 or (ctx == .ret and bits <= @as(u64, if (target.cpu.has(.x86, .avx512f))253 if (bits <= 64 * 8 or (ctx == .ret and bits <= @as(u64, if (target.cpu.has(.x86, .avx512f))
246 2048254 64 * 32
247 else if (target.cpu.has(.x86, .avx))255 else if (target.cpu.has(.x86, .avx))
248 1024256 64 * 16
249 else257 else
250 512))) return .{258 64 * 8))) return .{
251 .sse, .sseup, .sseup, .sseup,259 .sse, .sseup, .sseup, .sseup,
252 .sseup, .sseup, .sseup, .sseup,260 .sseup, .sseup, .sseup, .sseup,
253 };261 };
254 return memory_class;262 return Class.stack;
255 },263 },
256 .optional => {264 .optional => {
257 if (ty.optionalReprIsPayload(zcu)) {265 if (ty.optionalReprIsPayload(zcu)) {
258 return classifySystemV(ty.optionalChild(zcu), zcu, target, ctx);266 return classifySystemV(ty.optionalChild(zcu), zcu, target, ctx);
259 }267 }
260 return memory_class;268 return Class.stack;
261 },269 },
262 .@"struct", .@"union" => {270 .@"struct", .@"union" => {
263 // "If the size of an object is larger than eight eightbytes, or271 // "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...@@ -269,15 +277,14 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont
269 .auto => unreachable,277 .auto => unreachable,
270 .@"extern" => {},278 .@"extern" => {},
271 .@"packed" => {279 .@"packed" => {
272 assert(ty_size <= 16);280 if (ty_size <= 8) return Class.one_integer;
273 result[0] = .integer;281 if (ty_size <= 16) return Class.two_integers;
274 if (ty_size > 8) result[1] = .integer;282 unreachable; // frontend should not have allowed this type as extern
275 return result;
276 },283 },
277 }284 }
278 if (ty_size > 64)285 if (ty_size > 64) return Class.stack;
279 return memory_class;
280286
287 var result: [8]Class = @splat(.none);
281 _ = if (zcu.typeToStruct(ty)) |loaded_struct|288 _ = if (zcu.typeToStruct(ty)) |loaded_struct|
282 classifySystemVStruct(&result, 0, loaded_struct, zcu, target)289 classifySystemVStruct(&result, 0, loaded_struct, zcu, target)
283 else if (zcu.typeToUnion(ty)) |loaded_union|290 else if (zcu.typeToUnion(ty)) |loaded_union|
...@@ -290,15 +297,15 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont...@@ -290,15 +297,15 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont
290 // "If one of the classes is MEMORY, the whole argument is passed in memory"297 // "If one of the classes is MEMORY, the whole argument is passed in memory"
291 // "If X87UP is not preceded by X87, the whole argument is passed in memory."298 // "If X87UP is not preceded by X87, the whole argument is passed in memory."
292 for (result, 0..) |class, i| switch (class) {299 for (result, 0..) |class, i| switch (class) {
293 .memory => return memory_class,300 .memory => return Class.stack,
294 .x87up => if (i == 0 or result[i - 1] != .x87) return memory_class,301 .x87up => if (i == 0 or result[i - 1] != .x87) return Class.stack,
295 else => continue,302 else => continue,
296 };303 };
297 // "If the size of the aggregate exceeds two eightbytes and the first eight-304 // "If the size of the aggregate exceeds two eightbytes and the first eight-
298 // byte isn’t SSE or any other eightbyte isn’t SSEUP, the whole argument305 // byte isn’t SSE or any other eightbyte isn’t SSEUP, the whole argument
299 // is passed in memory."306 // is passed in memory."
300 if (ty_size > 16 and (result[0] != .sse or307 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
303 // "If SSEUP is not preceded by SSE or SSEUP, it is converted to SSE."310 // "If SSEUP is not preceded by SSE or SSEUP, it is converted to SSE."
304 for (&result, 0..) |*item, i| {311 for (&result, 0..) |*item, i| {
...@@ -311,16 +318,9 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont...@@ -311,16 +318,9 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont
311 },318 },
312 .array => {319 .array => {
313 const ty_size = ty.abiSize(zcu);320 const ty_size = ty.abiSize(zcu);
314 if (ty_size <= 8) {321 if (ty_size <= 8) return Class.one_integer;
315 result[0] = .integer;322 if (ty_size <= 16) return Class.two_integers;
316 return result;323 return Class.stack;
317 }
318 if (ty_size <= 16) {
319 result[0] = .integer;
320 result[1] = .integer;
321 return result;
322 }
323 return memory_class;
324 },324 },
325 else => unreachable,325 else => unreachable,
326 }326 }
...@@ -363,7 +363,7 @@ fn classifySystemVStruct(...@@ -363,7 +363,7 @@ fn classifySystemVStruct(
363 .@"packed" => {},363 .@"packed" => {},
364 }364 }
365 }365 }
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);
367 for (result[@intCast(byte_offset / 8)..][0..field_classes.len], field_classes) |*result_class, field_class|367 for (result[@intCast(byte_offset / 8)..][0..field_classes.len], field_classes) |*result_class, field_class|
368 result_class.* = result_class.combineSystemV(field_class);368 result_class.* = result_class.combineSystemV(field_class);
369 byte_offset += field_ty.abiSize(zcu);369 byte_offset += field_ty.abiSize(zcu);
...@@ -406,7 +406,7 @@ fn classifySystemVUnion(...@@ -406,7 +406,7 @@ fn classifySystemVUnion(
406 .@"packed" => {},406 .@"packed" => {},
407 }407 }
408 }408 }
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);
410 for (result[@intCast(starting_byte_offset / 8)..][0..field_classes.len], field_classes) |*result_class, field_class|410 for (result[@intCast(starting_byte_offset / 8)..][0..field_classes.len], field_classes) |*result_class, field_class|
411 result_class.* = result_class.combineSystemV(field_class);411 result_class.* = result_class.combineSystemV(field_class);
412 }412 }
src/arch/x86_64/bits.zig+16-16
...@@ -465,25 +465,25 @@ pub const Register = enum(u8) {...@@ -465,25 +465,25 @@ pub const Register = enum(u8) {
465 return @intCast(@intFromEnum(reg) - base);465 return @intCast(@intFromEnum(reg) - base);
466 }466 }
467467
468 pub fn bitSize(reg: Register) u10 {468 pub fn size(reg: Register) Memory.Size {
469 return switch (@intFromEnum(reg)) {469 return switch (@intFromEnum(reg)) {
470 // zig fmt: off470 // zig fmt: off
471 @intFromEnum(Register.rax) ... @intFromEnum(Register.r15) => 64,471 @intFromEnum(Register.rax) ... @intFromEnum(Register.r15) => .qword,
472 @intFromEnum(Register.eax) ... @intFromEnum(Register.r15d) => 32,472 @intFromEnum(Register.eax) ... @intFromEnum(Register.r15d) => .dword,
473 @intFromEnum(Register.ax) ... @intFromEnum(Register.r15w) => 16,473 @intFromEnum(Register.ax) ... @intFromEnum(Register.r15w) => .word,
474 @intFromEnum(Register.al) ... @intFromEnum(Register.r15b) => 8,474 @intFromEnum(Register.al) ... @intFromEnum(Register.r15b) => .byte,
475 @intFromEnum(Register.ah) ... @intFromEnum(Register.bh) => 8,475 @intFromEnum(Register.ah) ... @intFromEnum(Register.bh) => .byte,
476476
477 @intFromEnum(Register.zmm0) ... @intFromEnum(Register.zmm15) => 512,477 @intFromEnum(Register.zmm0) ... @intFromEnum(Register.zmm15) => .zword,
478 @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => 256,478 @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => .yword,
479 @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => 128,479 @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => .xword,
480 @intFromEnum(Register.mm0) ... @intFromEnum(Register.mm7) => 64,480 @intFromEnum(Register.mm0) ... @intFromEnum(Register.mm7) => .qword,
481 @intFromEnum(Register.st0) ... @intFromEnum(Register.st7) => 80,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,485 @intFromEnum(Register.cr0) ... @intFromEnum(Register.cr15) => .gpr,
486 @intFromEnum(Register.dr0) ... @intFromEnum(Register.dr15) => 64,486 @intFromEnum(Register.dr0) ... @intFromEnum(Register.dr15) => .gpr,
487487
488 else => unreachable,488 else => unreachable,
489 // zig fmt: on489 // zig fmt: on
...@@ -549,8 +549,8 @@ pub const Register = enum(u8) {...@@ -549,8 +549,8 @@ pub const Register = enum(u8) {
549 };549 };
550 }550 }
551551
552 pub fn toSize(reg: Register, size: Memory.Size, target: *const std.Target) Register {552 pub fn toSize(reg: Register, new_size: Memory.Size, target: *const std.Target) Register {
553 return switch (size) {553 return switch (new_size) {
554 .none => unreachable,554 .none => unreachable,
555 .ptr => reg.toBitSize(target.ptrBitWidth()),555 .ptr => reg.toBitSize(target.ptrBitWidth()),
556 .gpr => switch (target.cpu.arch) {556 .gpr => switch (target.cpu.arch) {
src/codegen.zig+53-54
...@@ -810,7 +810,7 @@ fn lowerUavRef(...@@ -810,7 +810,7 @@ fn lowerUavRef(
810810
811 const uav_align = ip.indexToKey(uav.orig_ty).ptr_type.flags.alignment;811 const uav_align = ip.indexToKey(uav.orig_ty).ptr_type.flags.alignment;
812 switch (try lf.lowerUav(pt, uav_val, uav_align, src_loc)) {812 switch (try lf.lowerUav(pt, uav_val, uav_align, src_loc)) {
813 .mcv => {},813 .sym_index => {},
814 .fail => |em| std.debug.panic("TODO rework lowerUav. internal error: {s}", .{em.msg}),814 .fail => |em| std.debug.panic("TODO rework lowerUav. internal error: {s}", .{em.msg}),
815 }815 }
816816
...@@ -920,36 +920,7 @@ pub const LinkerLoad = struct {...@@ -920,36 +920,7 @@ pub const LinkerLoad = struct {
920 sym_index: u32,920 sym_index: u32,
921};921};
922922
923pub const GenResult = union(enum) {923pub const SymbolResult = union(enum) { sym_index: u32, fail: *ErrorMsg };
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};
953924
954pub fn genNavRef(925pub fn genNavRef(
955 lf: *link.File,926 lf: *link.File,
...@@ -957,7 +928,7 @@ pub fn genNavRef(...@@ -957,7 +928,7 @@ pub fn genNavRef(
957 src_loc: Zcu.LazySrcLoc,928 src_loc: Zcu.LazySrcLoc,
958 nav_index: InternPool.Nav.Index,929 nav_index: InternPool.Nav.Index,
959 target: *const std.Target,930 target: *const std.Target,
960) CodeGenError!GenResult {931) CodeGenError!SymbolResult {
961 const zcu = pt.zcu;932 const zcu = pt.zcu;
962 const ip = &zcu.intern_pool;933 const ip = &zcu.intern_pool;
963 const nav = ip.getNav(nav_index);934 const nav = ip.getNav(nav_index);
...@@ -973,7 +944,7 @@ pub fn genNavRef(...@@ -973,7 +944,7 @@ pub fn genNavRef(
973 .internal => {944 .internal => {
974 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);945 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);
975 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;946 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
976 return .{ .mcv = .{ .lea_symbol = sym_index } };947 return .{ .sym_index = sym_index };
977 },948 },
978 .strong, .weak => {949 .strong, .weak => {
979 const sym_index = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));950 const sym_index = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));
...@@ -984,7 +955,7 @@ pub fn genNavRef(...@@ -984,7 +955,7 @@ pub fn genNavRef(
984 .link_once => unreachable,955 .link_once => unreachable,
985 }956 }
986 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;957 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
987 return .{ .mcv = .{ .lea_symbol = sym_index } };958 return .{ .sym_index = sym_index };
988 },959 },
989 .link_once => unreachable,960 .link_once => unreachable,
990 }961 }
...@@ -994,7 +965,7 @@ pub fn genNavRef(...@@ -994,7 +965,7 @@ pub fn genNavRef(
994 .internal => {965 .internal => {
995 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);966 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);
996 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;967 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
997 return .{ .mcv = .{ .lea_symbol = sym_index } };968 return .{ .sym_index = sym_index };
998 },969 },
999 .strong, .weak => {970 .strong, .weak => {
1000 const sym_index = try macho_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));971 const sym_index = try macho_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));
...@@ -1005,7 +976,7 @@ pub fn genNavRef(...@@ -1005,7 +976,7 @@ pub fn genNavRef(
1005 .link_once => unreachable,976 .link_once => unreachable,
1006 }977 }
1007 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;978 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
1008 return .{ .mcv = .{ .lea_symbol = sym_index } };979 return .{ .sym_index = sym_index };
1009 },980 },
1010 .link_once => unreachable,981 .link_once => unreachable,
1011 }982 }
...@@ -1015,25 +986,55 @@ pub fn genNavRef(...@@ -1015,25 +986,55 @@ pub fn genNavRef(
1015 .internal => {986 .internal => {
1016 const atom_index = try coff_file.getOrCreateAtomForNav(nav_index);987 const atom_index = try coff_file.getOrCreateAtomForNav(nav_index);
1017 const sym_index = coff_file.getAtom(atom_index).getSymbolIndex().?;988 const sym_index = coff_file.getAtom(atom_index).getSymbolIndex().?;
1018 return .{ .mcv = .{ .lea_symbol = sym_index } };989 return .{ .sym_index = sym_index };
1019 },990 },
1020 .strong, .weak => {991 .strong, .weak => {
1021 const global_index = try coff_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));992 const global_index = try coff_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));
1022 try coff_file.need_got_table.put(zcu.gpa, global_index, {}); // needs GOT993 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 };
1024 },995 },
1025 .link_once => unreachable,996 .link_once => unreachable,
1026 }997 }
1027 } else if (lf.cast(.plan9)) |p9| {998 } else if (lf.cast(.plan9)) |p9| {
1028 const atom_index = try p9.seeNav(pt, nav_index);999 return .{ .sym_index = try p9.seeNav(pt, nav_index) };
1029 const atom = p9.getAtom(atom_index);
1030 return .{ .mcv = .{ .memory = atom.getOffsetTableAddress(p9) } };
1031 } else {1000 } else {
1032 const msg = try ErrorMsg.create(zcu.gpa, src_loc, "TODO genNavRef for target {}", .{target});1001 const msg = try ErrorMsg.create(zcu.gpa, src_loc, "TODO genNavRef for target {}", .{target});
1033 return .{ .fail = msg };1002 return .{ .fail = msg };
1034 }1003 }
1035}1004}
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
1037/// deprecated legacy code path1038/// deprecated legacy code path
1038pub fn genTypedValue(1039pub fn genTypedValue(
1039 lf: *link.File,1040 lf: *link.File,
...@@ -1042,30 +1043,28 @@ pub fn genTypedValue(...@@ -1042,30 +1043,28 @@ pub fn genTypedValue(
1042 val: Value,1043 val: Value,
1043 target: *const std.Target,1044 target: *const std.Target,
1044) CodeGenError!GenResult {1045) CodeGenError!GenResult {
1045 return switch (try lowerValue(pt, val, target)) {1046 const res = try lowerValue(pt, val, target);
1047 return switch (res) {
1046 .none => .{ .mcv = .none },1048 .none => .{ .mcv = .none },
1047 .undef => .{ .mcv = .undef },1049 .undef => .{ .mcv = .undef },
1048 .immediate => |imm| .{ .mcv = .{ .immediate = imm } },1050 .immediate => |imm| .{ .mcv = .{ .immediate = imm } },
1049 .lea_nav => |nav| genNavRef(lf, pt, src_loc, nav, target),1051 .lea_nav => |nav| switch (try genNavRef(lf, pt, src_loc, nav, target)) {
1050 .lea_uav => |uav| switch (try lf.lowerUav(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(
1051 pt,1056 pt,
1052 uav.val,1057 uav.val,
1053 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),1058 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
1054 src_loc,1059 src_loc,
1055 )) {1060 )) {
1056 .mcv => |mcv| .{ .mcv = switch (mcv) {1061 .sym_index => |sym_index| .{ .mcv = switch (res) {
1057 else => unreachable,1062 else => unreachable,
1058 .load_direct => |sym_index| .{ .lea_direct = sym_index },1063 .load_uav => .{ .load_symbol = sym_index },
1059 .load_symbol => |sym_index| .{ .lea_symbol = sym_index },1064 .lea_uav => .{ .lea_symbol = sym_index },
1060 } },1065 } },
1061 .fail => |em| .{ .fail = em },1066 .fail => |em| .{ .fail = em },
1062 },1067 },
1063 .load_uav => |uav| lf.lowerUav(
1064 pt,
1065 uav.val,
1066 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
1067 src_loc,
1068 ),
1069 };1068 };
1070}1069}
10711070
...@@ -1076,8 +1075,8 @@ const LowerResult = union(enum) {...@@ -1076,8 +1075,8 @@ const LowerResult = union(enum) {
1076 /// such as ARM, the immediate will never exceed 32-bits.1075 /// such as ARM, the immediate will never exceed 32-bits.
1077 immediate: u64,1076 immediate: u64,
1078 lea_nav: InternPool.Nav.Index,1077 lea_nav: InternPool.Nav.Index,
1079 lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
1080 load_uav: InternPool.Key.Ptr.BaseAddr.Uav,1078 load_uav: InternPool.Key.Ptr.BaseAddr.Uav,
1079 lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
1081};1080};
10821081
1083pub fn lowerValue(pt: Zcu.PerThread, val: Value, target: *const std.Target) Allocator.Error!LowerResult {1082pub fn lowerValue(pt: Zcu.PerThread, val: Value, target: *const std.Target) Allocator.Error!LowerResult {
src/codegen/llvm.zig+6-16
...@@ -12115,7 +12115,7 @@ fn firstParamSRet(fn_info: InternPool.Key.FuncType, zcu: *Zcu, target: *const st...@@ -12115,7 +12115,7 @@ fn firstParamSRet(fn_info: InternPool.Key.FuncType, zcu: *Zcu, target: *const st
12115 return switch (fn_info.cc) {12115 return switch (fn_info.cc) {
12116 .auto => returnTypeByRef(zcu, target, return_type),12116 .auto => returnTypeByRef(zcu, target, return_type),
12117 .x86_64_sysv => firstParamSRetSystemV(return_type, zcu, target),12117 .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,
12119 .x86_sysv, .x86_win => isByRef(return_type, zcu),12119 .x86_sysv, .x86_win => isByRef(return_type, zcu),
12120 .x86_stdcall => !isScalar(zcu, return_type),12120 .x86_stdcall => !isScalar(zcu, return_type),
12121 .wasm_mvp => wasm_c_abi.classifyType(return_type, zcu) == .indirect,12121 .wasm_mvp => wasm_c_abi.classifyType(return_type, zcu) == .indirect,
...@@ -12215,7 +12215,7 @@ fn lowerFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Bu...@@ -12215,7 +12215,7 @@ fn lowerFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Bu
12215fn lowerWin64FnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {12215fn lowerWin64FnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
12216 const zcu = o.pt.zcu;12216 const zcu = o.pt.zcu;
12217 const return_type = Type.fromInterned(fn_info.return_type);12217 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())) {
12219 .integer => {12219 .integer => {
12220 if (isScalar(zcu, return_type)) {12220 if (isScalar(zcu, return_type)) {
12221 return o.lowerType(return_type);12221 return o.lowerType(return_type);
...@@ -12239,7 +12239,6 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E...@@ -12239,7 +12239,6 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E
12239 return o.lowerType(return_type);12239 return o.lowerType(return_type);
12240 }12240 }
12241 const classes = x86_64_abi.classifySystemV(return_type, zcu, zcu.getTarget(), .ret);12241 const classes = x86_64_abi.classifySystemV(return_type, zcu, zcu.getTarget(), .ret);
12242 if (classes[0] == .memory) return .void;
12243 var types_index: u32 = 0;12242 var types_index: u32 = 0;
12244 var types_buffer: [8]Builder.Type = undefined;12243 var types_buffer: [8]Builder.Type = undefined;
12245 for (classes) |class| {12244 for (classes) |class| {
...@@ -12274,15 +12273,9 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E...@@ -12274,15 +12273,9 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E
12274 types_index += 1;12273 types_index += 1;
12275 },12274 },
12276 .x87up => continue,12275 .x87up => continue,
12277 .complex_x87 => {
12278 @panic("TODO");
12279 },
12280 .memory => unreachable, // handled above
12281 .win_i128 => unreachable, // windows only
12282 .none => break,12276 .none => break,
12283 .integer_per_element => {12277 .memory, .integer_per_element => return .void,
12284 @panic("TODO");12278 .win_i128 => unreachable, // windows only
12285 },
12286 }12279 }
12287 }12280 }
12288 const first_non_integer = std.mem.indexOfNone(x86_64_abi.Class, &classes, &.{.integer});12281 const first_non_integer = std.mem.indexOfNone(x86_64_abi.Class, &classes, &.{.integer});
...@@ -12492,7 +12485,7 @@ const ParamTypeIterator = struct {...@@ -12492,7 +12485,7 @@ const ParamTypeIterator = struct {
1249212485
12493 fn nextWin64(it: *ParamTypeIterator, ty: Type) ?Lowering {12486 fn nextWin64(it: *ParamTypeIterator, ty: Type) ?Lowering {
12494 const zcu = it.object.pt.zcu;12487 const zcu = it.object.pt.zcu;
12495 switch (x86_64_abi.classifyWindows(ty, zcu)) {12488 switch (x86_64_abi.classifyWindows(ty, zcu, zcu.getTarget())) {
12496 .integer => {12489 .integer => {
12497 if (isScalar(zcu, ty)) {12490 if (isScalar(zcu, ty)) {
12498 it.zig_index += 1;12491 it.zig_index += 1;
...@@ -12573,12 +12566,9 @@ const ParamTypeIterator = struct {...@@ -12573,12 +12566,9 @@ const ParamTypeIterator = struct {
12573 return .byref;12566 return .byref;
12574 },12567 },
12575 .x87up => unreachable,12568 .x87up => unreachable,
12576 .complex_x87 => {12569 .none => break,
12577 @panic("TODO");
12578 },
12579 .memory => unreachable, // handled above12570 .memory => unreachable, // handled above
12580 .win_i128 => unreachable, // windows only12571 .win_i128 => unreachable, // windows only
12581 .none => break,
12582 .integer_per_element => {12572 .integer_per_element => {
12583 @panic("TODO");12573 @panic("TODO");
12584 },12574 },
src/link.zig+1-1
...@@ -920,7 +920,7 @@ pub const File = struct {...@@ -920,7 +920,7 @@ pub const File = struct {
920 decl_val: InternPool.Index,920 decl_val: InternPool.Index,
921 decl_align: InternPool.Alignment,921 decl_align: InternPool.Alignment,
922 src_loc: Zcu.LazySrcLoc,922 src_loc: Zcu.LazySrcLoc,
923 ) !codegen.GenResult {923 ) !codegen.SymbolResult {
924 assert(base.comp.zcu.?.llvm_object == null);924 assert(base.comp.zcu.?.llvm_object == null);
925 switch (base.tag) {925 switch (base.tag) {
926 .lld => unreachable,926 .lld => unreachable,
src/link/Coff.zig+29-29
...@@ -752,7 +752,7 @@ fn shrinkAtom(coff: *Coff, atom_index: Atom.Index, new_block_size: u32) void {...@@ -752,7 +752,7 @@ fn shrinkAtom(coff: *Coff, atom_index: Atom.Index, new_block_size: u32) void {
752 // capacity, insert a free list node for it.752 // capacity, insert a free list node for it.
753}753}
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 {
756 const atom = coff.getAtom(atom_index);756 const atom = coff.getAtom(atom_index);
757 const sym = atom.getSymbol(coff);757 const sym = atom.getSymbol(coff);
758 const section = coff.sections.get(@intFromEnum(sym.section_number) - 1);758 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 {...@@ -774,11 +774,13 @@ fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8) !void {
774 var relocs = std.ArrayList(*Relocation).init(gpa);774 var relocs = std.ArrayList(*Relocation).init(gpa);
775 defer relocs.deinit();775 defer relocs.deinit();
776776
777 if (coff.relocs.getPtr(atom_index)) |rels| {777 if (resolve_relocs) {
778 try relocs.ensureTotalCapacityPrecise(rels.items.len);778 if (coff.relocs.getPtr(atom_index)) |rels| {
779 for (rels.items) |*reloc| {779 try relocs.ensureTotalCapacityPrecise(rels.items.len);
780 if (reloc.isResolvable(coff) and reloc.dirty) {780 for (rels.items) |*reloc| {
781 relocs.appendAssumeCapacity(reloc);781 if (reloc.isResolvable(coff) and reloc.dirty) {
782 relocs.appendAssumeCapacity(reloc);
783 }
782 }784 }
783 }785 }
784 }786 }
...@@ -812,12 +814,15 @@ fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8) !void {...@@ -812,12 +814,15 @@ fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8) !void {
812 }814 }
813 }815 }
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 }
816 try coff.pwriteAll(code, file_offset);820 try coff.pwriteAll(code, file_offset);
817821 if (resolve_relocs) {
818 // Now we can mark the relocs as resolved.822 // Now we can mark the relocs as resolved.
819 while (relocs.pop()) |reloc| {823 while (relocs.pop()) |reloc| {
820 reloc.dirty = false;824 reloc.dirty = false;
825 }
821 }826 }
822}827}
823828
...@@ -914,6 +919,7 @@ fn writeOffsetTableEntry(coff: *Coff, index: usize) !void {...@@ -914,6 +919,7 @@ fn writeOffsetTableEntry(coff: *Coff, index: usize) !void {
914}919}
915920
916fn markRelocsDirtyByTarget(coff: *Coff, target: SymbolWithLoc) void {921fn markRelocsDirtyByTarget(coff: *Coff, target: SymbolWithLoc) void {
922 if (!coff.base.comp.incremental) return;
917 // TODO: reverse-lookup might come in handy here923 // TODO: reverse-lookup might come in handy here
918 for (coff.relocs.values()) |*relocs| {924 for (coff.relocs.values()) |*relocs| {
919 for (relocs.items) |*reloc| {925 for (relocs.items) |*reloc| {
...@@ -924,6 +930,7 @@ fn markRelocsDirtyByTarget(coff: *Coff, target: SymbolWithLoc) void {...@@ -924,6 +930,7 @@ fn markRelocsDirtyByTarget(coff: *Coff, target: SymbolWithLoc) void {
924}930}
925931
926fn markRelocsDirtyByAddress(coff: *Coff, addr: u32) void {932fn markRelocsDirtyByAddress(coff: *Coff, addr: u32) void {
933 if (!coff.base.comp.incremental) return;
927 const got_moved = blk: {934 const got_moved = blk: {
928 const sect_id = coff.got_section_index orelse break :blk false;935 const sect_id = coff.got_section_index orelse break :blk false;
929 break :blk coff.sections.items(.header)[sect_id].virtual_address >= addr;936 break :blk coff.sections.items(.header)[sect_id].virtual_address >= addr;
...@@ -1129,7 +1136,7 @@ fn lowerConst(...@@ -1129,7 +1136,7 @@ fn lowerConst(
1129 log.debug("allocated atom for {s} at 0x{x}", .{ name, atom.getSymbol(coff).value });1136 log.debug("allocated atom for {s} at 0x{x}", .{ name, atom.getSymbol(coff).value });
1130 log.debug(" (required alignment 0x{x})", .{required_alignment});1137 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
1134 return .{ .ok = atom_index };1141 return .{ .ok = atom_index };
1135}1142}
...@@ -1212,8 +1219,7 @@ fn updateLazySymbolAtom(...@@ -1212,8 +1219,7 @@ fn updateLazySymbolAtom(
1212 });1219 });
1213 defer gpa.free(name);1220 defer gpa.free(name);
12141221
1215 const atom = coff.getAtomPtr(atom_index);1222 const local_sym_index = coff.getAtomPtr(atom_index).getSymbolIndex().?;
1216 const local_sym_index = atom.getSymbolIndex().?;
12171223
1218 const src = Type.fromInterned(sym.ty).srcLocOrNull(zcu) orelse Zcu.LazySrcLoc.unneeded;1224 const src = Type.fromInterned(sym.ty).srcLocOrNull(zcu) orelse Zcu.LazySrcLoc.unneeded;
1219 try codegen.generateLazySymbol(1225 try codegen.generateLazySymbol(
...@@ -1228,12 +1234,13 @@ fn updateLazySymbolAtom(...@@ -1228,12 +1234,13 @@ fn updateLazySymbolAtom(
1228 );1234 );
1229 const code = code_buffer.items;1235 const code = code_buffer.items;
12301236
1231 const code_len: u32 = @intCast(code.len);1237 const atom = coff.getAtomPtr(atom_index);
1232 const symbol = atom.getSymbolPtr(coff);1238 const symbol = atom.getSymbolPtr(coff);
1233 try coff.setSymbolName(symbol, name);1239 try coff.setSymbolName(symbol, name);
1234 symbol.section_number = @enumFromInt(section_index + 1);1240 symbol.section_number = @enumFromInt(section_index + 1);
1235 symbol.type = .{ .complex_type = .NULL, .base_type = .NULL };1241 symbol.type = .{ .complex_type = .NULL, .base_type = .NULL };
12361242
1243 const code_len: u32 = @intCast(code.len);
1237 const vaddr = try coff.allocateAtom(atom_index, code_len, @intCast(required_alignment.toByteUnits() orelse 0));1244 const vaddr = try coff.allocateAtom(atom_index, code_len, @intCast(required_alignment.toByteUnits() orelse 0));
1238 errdefer coff.freeAtom(atom_index);1245 errdefer coff.freeAtom(atom_index);
12391246
...@@ -1244,7 +1251,7 @@ fn updateLazySymbolAtom(...@@ -1244,7 +1251,7 @@ fn updateLazySymbolAtom(
1244 symbol.value = vaddr;1251 symbol.value = vaddr;
12451252
1246 try coff.addGotEntry(.{ .sym_index = local_sym_index });1253 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);
1248}1255}
12491256
1250pub fn getOrCreateAtomForLazySymbol(1257pub fn getOrCreateAtomForLazySymbol(
...@@ -1392,7 +1399,7 @@ fn updateNavCode(...@@ -1392,7 +1399,7 @@ fn updateNavCode(
1392 };1399 };
1393 }1400 }
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) {
1396 error.OutOfMemory => return error.OutOfMemory,1403 error.OutOfMemory => return error.OutOfMemory,
1397 else => |e| return coff.base.cgFail(nav_index, "failed to write atom: {s}", .{@errorName(e)}),1404 else => |e| return coff.base.cgFail(nav_index, "failed to write atom: {s}", .{@errorName(e)}),
1398 };1405 };
...@@ -1430,7 +1437,7 @@ pub fn updateExports(...@@ -1430,7 +1437,7 @@ pub fn updateExports(
1430 const first_exp = export_indices[0].ptr(zcu);1437 const first_exp = export_indices[0].ptr(zcu);
1431 const res = try coff.lowerUav(pt, uav, .none, first_exp.src);1438 const res = try coff.lowerUav(pt, uav, .none, first_exp.src);
1432 switch (res) {1439 switch (res) {
1433 .mcv => {},1440 .sym_index => {},
1434 .fail => |em| {1441 .fail => |em| {
1435 // TODO maybe it's enough to return an error here and let Module.processExportsInner1442 // TODO maybe it's enough to return an error here and let Module.processExportsInner
1436 // handle the error?1443 // handle the error?
...@@ -1677,7 +1684,7 @@ fn flushInner(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id) !void {...@@ -1677,7 +1684,7 @@ fn flushInner(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id) !void {
1677 const amt = try coff.base.file.?.preadAll(code.items, file_offset);1684 const amt = try coff.base.file.?.preadAll(code.items, file_offset);
1678 if (amt != code.items.len) return error.InputOutput;1685 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);
1681 }1688 }
16821689
1683 // Update GOT if it got moved in memory.1690 // Update GOT if it got moved in memory.
...@@ -1770,7 +1777,7 @@ pub fn lowerUav(...@@ -1770,7 +1777,7 @@ pub fn lowerUav(
1770 uav: InternPool.Index,1777 uav: InternPool.Index,
1771 explicit_alignment: InternPool.Alignment,1778 explicit_alignment: InternPool.Alignment,
1772 src_loc: Zcu.LazySrcLoc,1779 src_loc: Zcu.LazySrcLoc,
1773) !codegen.GenResult {1780) !codegen.SymbolResult {
1774 const zcu = pt.zcu;1781 const zcu = pt.zcu;
1775 const gpa = zcu.gpa;1782 const gpa = zcu.gpa;
1776 const val = Value.fromInterned(uav);1783 const val = Value.fromInterned(uav);
...@@ -1782,7 +1789,7 @@ pub fn lowerUav(...@@ -1782,7 +1789,7 @@ pub fn lowerUav(
1782 const atom = coff.getAtom(metadata.atom);1789 const atom = coff.getAtom(metadata.atom);
1783 const existing_addr = atom.getSymbol(coff).value;1790 const existing_addr = atom.getSymbol(coff).value;
1784 if (uav_alignment.check(existing_addr))1791 if (uav_alignment.check(existing_addr))
1785 return .{ .mcv = .{ .load_symbol = atom.getSymbolIndex().? } };1792 return .{ .sym_index = atom.getSymbolIndex().? };
1786 }1793 }
17871794
1788 var name_buf: [32]u8 = undefined;1795 var name_buf: [32]u8 = undefined;
...@@ -1813,9 +1820,7 @@ pub fn lowerUav(...@@ -1813,9 +1820,7 @@ pub fn lowerUav(
1813 .atom = atom_index,1820 .atom = atom_index,
1814 .section = coff.rdata_section_index.?,1821 .section = coff.rdata_section_index.?,
1815 });1822 });
1816 return .{ .mcv = .{1823 return .{ .sym_index = coff.getAtom(atom_index).getSymbolIndex().? };
1817 .load_symbol = coff.getAtom(atom_index).getSymbolIndex().?,
1818 } };
1819}1824}
18201825
1821pub fn getUavVAddr(1826pub fn getUavVAddr(
...@@ -2479,11 +2484,6 @@ const GetOrPutGlobalPtrResult = struct {...@@ -2479,11 +2484,6 @@ const GetOrPutGlobalPtrResult = struct {
2479 value_ptr: *SymbolWithLoc,2484 value_ptr: *SymbolWithLoc,
2480};2485};
24812486
2482/// Used only for disambiguating local from global at relocation level.
2483/// TODO this must go away.
2484pub const global_symbol_bit: u32 = 0x80000000;
2485pub const global_symbol_mask: u32 = 0x7fffffff;
2486
2487/// Return pointer to the global entry for `name` if one exists.2487/// Return pointer to the global entry for `name` if one exists.
2488/// Puts a new global entry for `name` if one doesn't exist, and2488/// Puts a new global entry for `name` if one doesn't exist, and
2489/// returns a pointer to it.2489/// returns a pointer to it.
src/link/Elf.zig+1-1
...@@ -473,7 +473,7 @@ pub fn lowerUav(...@@ -473,7 +473,7 @@ pub fn lowerUav(
473 uav: InternPool.Index,473 uav: InternPool.Index,
474 explicit_alignment: InternPool.Alignment,474 explicit_alignment: InternPool.Alignment,
475 src_loc: Zcu.LazySrcLoc,475 src_loc: Zcu.LazySrcLoc,
476) !codegen.GenResult {476) !codegen.SymbolResult {
477 return self.zigObjectPtr().?.lowerUav(self, pt, uav, explicit_alignment, src_loc);477 return self.zigObjectPtr().?.lowerUav(self, pt, uav, explicit_alignment, src_loc);
478}478}
479479
src/link/Elf/ZigObject.zig+10-16
...@@ -997,7 +997,7 @@ pub fn lowerUav(...@@ -997,7 +997,7 @@ pub fn lowerUav(
997 uav: InternPool.Index,997 uav: InternPool.Index,
998 explicit_alignment: InternPool.Alignment,998 explicit_alignment: InternPool.Alignment,
999 src_loc: Zcu.LazySrcLoc,999 src_loc: Zcu.LazySrcLoc,
1000) !codegen.GenResult {1000) !codegen.SymbolResult {
1001 const zcu = pt.zcu;1001 const zcu = pt.zcu;
1002 const gpa = zcu.gpa;1002 const gpa = zcu.gpa;
1003 const val = Value.fromInterned(uav);1003 const val = Value.fromInterned(uav);
...@@ -1010,7 +1010,7 @@ pub fn lowerUav(...@@ -1010,7 +1010,7 @@ pub fn lowerUav(
1010 const sym = self.symbol(metadata.symbol_index);1010 const sym = self.symbol(metadata.symbol_index);
1011 const existing_alignment = sym.atom(elf_file).?.alignment;1011 const existing_alignment = sym.atom(elf_file).?.alignment;
1012 if (uav_alignment.order(existing_alignment).compare(.lte))1012 if (uav_alignment.order(existing_alignment).compare(.lte))
1013 return .{ .mcv = .{ .load_symbol = metadata.symbol_index } };1013 return .{ .sym_index = metadata.symbol_index };
1014 }1014 }
10151015
1016 const osec = if (self.data_relro_index) |sym_index|1016 const osec = if (self.data_relro_index) |sym_index|
...@@ -1047,12 +1047,11 @@ pub fn lowerUav(...@@ -1047,12 +1047,11 @@ pub fn lowerUav(
1047 .{@errorName(e)},1047 .{@errorName(e)},
1048 ) },1048 ) },
1049 };1049 };
1050 const sym_index = switch (res) {1050 switch (res) {
1051 .ok => |sym_index| sym_index,1051 .sym_index => |sym_index| try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index, .allocated = true }),
1052 .fail => |em| return .{ .fail = em },1052 .fail => {},
1053 };1053 }
1054 try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index, .allocated = true });1054 return res;
1055 return .{ .mcv = .{ .load_symbol = sym_index } };
1056}1055}
10571056
1058pub fn getOrCreateMetadataForLazySymbol(1057pub fn getOrCreateMetadataForLazySymbol(
...@@ -1692,11 +1691,6 @@ fn updateLazySymbol(...@@ -1692,11 +1691,6 @@ fn updateLazySymbol(
1692 try elf_file.pwriteAll(code, atom_ptr.offset(elf_file));1691 try elf_file.pwriteAll(code, atom_ptr.offset(elf_file));
1693}1692}
16941693
1695const LowerConstResult = union(enum) {
1696 ok: Symbol.Index,
1697 fail: *Zcu.ErrorMsg,
1698};
1699
1700fn lowerConst(1694fn lowerConst(
1701 self: *ZigObject,1695 self: *ZigObject,
1702 elf_file: *Elf,1696 elf_file: *Elf,
...@@ -1706,7 +1700,7 @@ fn lowerConst(...@@ -1706,7 +1700,7 @@ fn lowerConst(
1706 required_alignment: InternPool.Alignment,1700 required_alignment: InternPool.Alignment,
1707 output_section_index: u32,1701 output_section_index: u32,
1708 src_loc: Zcu.LazySrcLoc,1702 src_loc: Zcu.LazySrcLoc,
1709) !LowerConstResult {1703) !codegen.SymbolResult {
1710 const gpa = pt.zcu.gpa;1704 const gpa = pt.zcu.gpa;
17111705
1712 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;1706 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
...@@ -1740,7 +1734,7 @@ fn lowerConst(...@@ -1740,7 +1734,7 @@ fn lowerConst(
17401734
1741 try elf_file.pwriteAll(code, atom_ptr.offset(elf_file));1735 try elf_file.pwriteAll(code, atom_ptr.offset(elf_file));
17421736
1743 return .{ .ok = sym_index };1737 return .{ .sym_index = sym_index };
1744}1738}
17451739
1746pub fn updateExports(1740pub fn updateExports(
...@@ -1764,7 +1758,7 @@ pub fn updateExports(...@@ -1764,7 +1758,7 @@ pub fn updateExports(
1764 const first_exp = export_indices[0].ptr(zcu);1758 const first_exp = export_indices[0].ptr(zcu);
1765 const res = try self.lowerUav(elf_file, pt, uav, .none, first_exp.src);1759 const res = try self.lowerUav(elf_file, pt, uav, .none, first_exp.src);
1766 switch (res) {1760 switch (res) {
1767 .mcv => {},1761 .sym_index => {},
1768 .fail => |em| {1762 .fail => |em| {
1769 // TODO maybe it's enough to return an error here and let Zcu.processExportsInner1763 // TODO maybe it's enough to return an error here and let Zcu.processExportsInner
1770 // handle the error?1764 // handle the error?
src/link/MachO.zig+1-1
...@@ -3092,7 +3092,7 @@ pub fn lowerUav(...@@ -3092,7 +3092,7 @@ pub fn lowerUav(
3092 uav: InternPool.Index,3092 uav: InternPool.Index,
3093 explicit_alignment: InternPool.Alignment,3093 explicit_alignment: InternPool.Alignment,
3094 src_loc: Zcu.LazySrcLoc,3094 src_loc: Zcu.LazySrcLoc,
3095) !codegen.GenResult {3095) !codegen.SymbolResult {
3096 return self.getZigObject().?.lowerUav(self, pt, uav, explicit_alignment, src_loc);3096 return self.getZigObject().?.lowerUav(self, pt, uav, explicit_alignment, src_loc);
3097}3097}
30983098
src/link/MachO/ZigObject.zig+10-18
...@@ -704,7 +704,7 @@ pub fn lowerUav(...@@ -704,7 +704,7 @@ pub fn lowerUav(
704 uav: InternPool.Index,704 uav: InternPool.Index,
705 explicit_alignment: Atom.Alignment,705 explicit_alignment: Atom.Alignment,
706 src_loc: Zcu.LazySrcLoc,706 src_loc: Zcu.LazySrcLoc,
707) !codegen.GenResult {707) !codegen.SymbolResult {
708 const zcu = pt.zcu;708 const zcu = pt.zcu;
709 const gpa = zcu.gpa;709 const gpa = zcu.gpa;
710 const val = Value.fromInterned(uav);710 const val = Value.fromInterned(uav);
...@@ -716,7 +716,7 @@ pub fn lowerUav(...@@ -716,7 +716,7 @@ pub fn lowerUav(
716 const sym = self.symbols.items[metadata.symbol_index];716 const sym = self.symbols.items[metadata.symbol_index];
717 const existing_alignment = sym.getAtom(macho_file).?.alignment;717 const existing_alignment = sym.getAtom(macho_file).?.alignment;
718 if (uav_alignment.order(existing_alignment).compare(.lte))718 if (uav_alignment.order(existing_alignment).compare(.lte))
719 return .{ .mcv = .{ .load_symbol = sym.nlist_idx } };719 return .{ .sym_index = metadata.symbol_index };
720 }720 }
721721
722 var name_buf: [32]u8 = undefined;722 var name_buf: [32]u8 = undefined;
...@@ -740,14 +740,11 @@ pub fn lowerUav(...@@ -740,14 +740,11 @@ pub fn lowerUav(
740 .{@errorName(e)},740 .{@errorName(e)},
741 ) },741 ) },
742 };742 };
743 const sym_index = switch (res) {743 switch (res) {
744 .ok => |sym_index| sym_index,744 .sym_index => |sym_index| try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index }),
745 .fail => |em| return .{ .fail = em },745 .fail => {},
746 };746 }
747 try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index });747 return res;
748 return .{ .mcv = .{
749 .load_symbol = self.symbols.items[sym_index].nlist_idx,
750 } };
751}748}
752749
753fn freeNavMetadata(self: *ZigObject, macho_file: *MachO, sym_index: Symbol.Index) void {750fn freeNavMetadata(self: *ZigObject, macho_file: *MachO, sym_index: Symbol.Index) void {
...@@ -1187,11 +1184,6 @@ fn getNavOutputSection(...@@ -1187,11 +1184,6 @@ fn getNavOutputSection(
1187 return macho_file.zig_data_sect_index.?;1184 return macho_file.zig_data_sect_index.?;
1188}1185}
11891186
1190const LowerConstResult = union(enum) {
1191 ok: Symbol.Index,
1192 fail: *Zcu.ErrorMsg,
1193};
1194
1195fn lowerConst(1187fn lowerConst(
1196 self: *ZigObject,1188 self: *ZigObject,
1197 macho_file: *MachO,1189 macho_file: *MachO,
...@@ -1201,7 +1193,7 @@ fn lowerConst(...@@ -1201,7 +1193,7 @@ fn lowerConst(
1201 required_alignment: Atom.Alignment,1193 required_alignment: Atom.Alignment,
1202 output_section_index: u8,1194 output_section_index: u8,
1203 src_loc: Zcu.LazySrcLoc,1195 src_loc: Zcu.LazySrcLoc,
1204) !LowerConstResult {1196) !codegen.SymbolResult {
1205 const gpa = macho_file.base.comp.gpa;1197 const gpa = macho_file.base.comp.gpa;
12061198
1207 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;1199 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
...@@ -1241,7 +1233,7 @@ fn lowerConst(...@@ -1241,7 +1233,7 @@ fn lowerConst(
1241 const file_offset = sect.offset + atom.value;1233 const file_offset = sect.offset + atom.value;
1242 try macho_file.pwriteAll(code, file_offset);1234 try macho_file.pwriteAll(code, file_offset);
12431235
1244 return .{ .ok = sym_index };1236 return .{ .sym_index = sym_index };
1245}1237}
12461238
1247pub fn updateExports(1239pub fn updateExports(
...@@ -1265,7 +1257,7 @@ pub fn updateExports(...@@ -1265,7 +1257,7 @@ pub fn updateExports(
1265 const first_exp = export_indices[0].ptr(zcu);1257 const first_exp = export_indices[0].ptr(zcu);
1266 const res = try self.lowerUav(macho_file, pt, uav, .none, first_exp.src);1258 const res = try self.lowerUav(macho_file, pt, uav, .none, first_exp.src);
1267 switch (res) {1259 switch (res) {
1268 .mcv => {},1260 .sym_index => {},
1269 .fail => |em| {1261 .fail => |em| {
1270 // TODO maybe it's enough to return an error here and let Zcu.processExportsInner1262 // TODO maybe it's enough to return an error here and let Zcu.processExportsInner
1271 // handle the error?1263 // handle the error?
src/link/Plan9.zig+3-3
...@@ -1358,7 +1358,7 @@ pub fn lowerUav(...@@ -1358,7 +1358,7 @@ pub fn lowerUav(
1358 uav: InternPool.Index,1358 uav: InternPool.Index,
1359 explicit_alignment: InternPool.Alignment,1359 explicit_alignment: InternPool.Alignment,
1360 src_loc: Zcu.LazySrcLoc,1360 src_loc: Zcu.LazySrcLoc,
1361) !codegen.GenResult {1361) !codegen.SymbolResult {
1362 _ = explicit_alignment;1362 _ = explicit_alignment;
1363 // example:1363 // example:
1364 // const ty = mod.intern_pool.typeOf(decl_val).toType();1364 // const ty = mod.intern_pool.typeOf(decl_val).toType();
...@@ -1370,7 +1370,7 @@ pub fn lowerUav(...@@ -1370,7 +1370,7 @@ pub fn lowerUav(
1370 // ...1370 // ...
1371 const gpa = self.base.comp.gpa;1371 const gpa = self.base.comp.gpa;
1372 const gop = try self.uavs.getOrPut(gpa, uav);1372 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.* };
1374 const val = Value.fromInterned(uav);1374 const val = Value.fromInterned(uav);
1375 const name = try std.fmt.allocPrint(gpa, "__anon_{d}", .{@intFromEnum(uav)});1375 const name = try std.fmt.allocPrint(gpa, "__anon_{d}", .{@intFromEnum(uav)});
13761376
...@@ -1395,7 +1395,7 @@ pub fn lowerUav(...@@ -1395,7 +1395,7 @@ pub fn lowerUav(
1395 .value = undefined,1395 .value = undefined,
1396 .name = name,1396 .name = name,
1397 };1397 };
1398 return .{ .mcv = .{ .load_direct = index } };1398 return .{ .sym_index = index };
1399}1399}
14001400
1401pub fn getUavVAddr(self: *Plan9, uav: InternPool.Index, reloc_info: link.File.RelocInfo) !u64 {1401pub fn getUavVAddr(self: *Plan9, uav: InternPool.Index, reloc_info: link.File.RelocInfo) !u64 {
test/behavior/abs.zig-2
...@@ -156,7 +156,6 @@ test "@abs floats" {...@@ -156,7 +156,6 @@ test "@abs floats" {
156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO158 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
161 try comptime testAbsFloats(f16);160 try comptime testAbsFloats(f16);
162 if (builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f16);161 if (builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f16);
...@@ -341,7 +340,6 @@ test "@abs float vectors" {...@@ -341,7 +340,6 @@ test "@abs float vectors" {
341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
342 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;341 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
343 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;342 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
346 @setEvalBranchQuota(2000);344 @setEvalBranchQuota(2000);
347 try comptime testAbsFloatVectors(f16, 1);345 try comptime testAbsFloatVectors(f16, 1);
test/behavior/basic.zig+1-14
...@@ -302,19 +302,6 @@ test "array mult operator" {...@@ -302,19 +302,6 @@ test "array mult operator" {
302 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));302 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
303}303}
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
318const global_a: i32 = 1234;305const global_a: i32 = 1234;
319const global_b: *const i32 = &global_a;306const global_b: *const i32 = &global_a;
320const global_c: *const f32 = @as(*const f32, @ptrCast(global_b));307const global_c: *const f32 = @as(*const f32, @ptrCast(global_b));
...@@ -447,6 +434,7 @@ fn f2(x: bool) []const u8 {...@@ -447,6 +434,7 @@ fn f2(x: bool) []const u8 {
447 return (if (x) &fA else &fB)();434 return (if (x) &fA else &fB)();
448}435}
449436
437const OpaqueA = opaque {};
450test "variable is allowed to be a pointer to an opaque type" {438test "variable is allowed to be a pointer to an opaque type" {
451 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;439 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
452440
...@@ -1199,7 +1187,6 @@ test "arrays and vectors with big integers" {...@@ -1199,7 +1187,6 @@ test "arrays and vectors with big integers" {
1199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;1188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
1201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1189 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;
1203 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1190 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1204 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1191 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1205 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
test/behavior/bit_shifting.zig-1
...@@ -166,7 +166,6 @@ test "Saturating Shift Left" {...@@ -166,7 +166,6 @@ test "Saturating Shift Left" {
166 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;166 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
168 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;168 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
171 const S = struct {170 const S = struct {
172 fn shlSat(x: anytype, y: std.math.Log2Int(@TypeOf(x))) @TypeOf(x) {171 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" {...@@ -302,7 +302,6 @@ test "@bitCast packed struct of floats" {
302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
304 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;304 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;
306 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;305 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
307306
308 const Foo = packed struct {307 const Foo = packed struct {
...@@ -342,7 +341,6 @@ test "comptime @bitCast packed struct to int and back" {...@@ -342,7 +341,6 @@ test "comptime @bitCast packed struct to int and back" {
342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;342 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;343 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
347 const S = packed struct {345 const S = packed struct {
348 void: void = {},346 void: void = {},
...@@ -426,7 +424,6 @@ test "bitcast nan float does not modify signaling bit" {...@@ -426,7 +424,6 @@ test "bitcast nan float does not modify signaling bit" {
426 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO425 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
428 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;426 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;
430 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;427 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
431428
432 const snan_u16: u16 = 0x7D00;429 const snan_u16: u16 = 0x7D00;
test/behavior/cast.zig+1-10
...@@ -126,7 +126,6 @@ test "@floatFromInt(f80)" {...@@ -126,7 +126,6 @@ test "@floatFromInt(f80)" {
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;128 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;
130 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;129 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
131130
132 const S = struct {131 const S = struct {
...@@ -1406,7 +1405,6 @@ test "cast f16 to wider types" {...@@ -1406,7 +1405,6 @@ test "cast f16 to wider types" {
1406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1407 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1406 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1408 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;1407 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;
1410 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14111409
1412 const S = struct {1410 const S = struct {
...@@ -1427,7 +1425,6 @@ test "cast f128 to narrower types" {...@@ -1427,7 +1425,6 @@ test "cast f128 to narrower types" {
1427 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1429 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1427 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;
1431 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1428 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14321429
1433 const S = struct {1430 const S = struct {
...@@ -1521,7 +1518,7 @@ test "coerce between pointers of compatible differently-named floats" {...@@ -1521,7 +1518,7 @@ test "coerce between pointers of compatible differently-named floats" {
1521 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows and !builtin.link_libc) return error.SkipZigTest;1518 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows and !builtin.link_libc) return error.SkipZigTest;
1522 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1523 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1520 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;
1525 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1522 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15261523
1527 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {1524 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" {...@@ -1727,7 +1724,6 @@ test "peer type resolution: float and comptime-known fixed-width integer" {
1727 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1724 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1728 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1725 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1729 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1726 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
1732 const i: u8 = 100;1728 const i: u8 = 100;
1733 var f: f32 = 1.234;1729 var f: f32 = 1.234;
...@@ -2477,7 +2473,6 @@ test "@floatCast on vector" {...@@ -2477,7 +2473,6 @@ test "@floatCast on vector" {
2477 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO2473 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2474 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2475 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;
2481 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2476 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24822477
2483 const S = struct {2478 const S = struct {
...@@ -2569,7 +2564,6 @@ test "@floatFromInt on vector" {...@@ -2569,7 +2564,6 @@ test "@floatFromInt on vector" {
2569 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO2564 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2570 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2571 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2566 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;
2573 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2567 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
25742568
2575 const S = struct {2569 const S = struct {
...@@ -2626,8 +2620,6 @@ test "@intFromBool on vector" {...@@ -2626,8 +2620,6 @@ test "@intFromBool on vector" {
2626}2620}
26272621
2628test "numeric coercions with undefined" {2622test "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
2631 const from: i32 = undefined;2623 const from: i32 = undefined;
2632 var to: f32 = from;2624 var to: f32 = from;
2633 to = @floatFromInt(from);2625 to = @floatFromInt(from);
...@@ -2648,7 +2640,6 @@ test "@as does not corrupt values with incompatible representations" {...@@ -2648,7 +2640,6 @@ test "@as does not corrupt values with incompatible representations" {
2648 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO2640 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2649 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2641 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2650 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO2642 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
2653 const x: f32 = @as(f16, blk: {2644 const x: f32 = @as(f16, blk: {
2654 if (false) {2645 if (false) {
test/behavior/eval.zig-1
...@@ -526,7 +526,6 @@ test "runtime 128 bit integer division" {...@@ -526,7 +526,6 @@ test "runtime 128 bit integer division" {
526 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO526 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
527 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;527 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
528 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;528 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;
530 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;529 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
531530
532 var a: u128 = 152313999999999991610955792383;531 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 {...@@ -40,7 +40,7 @@ export fn testPackedStuff(a: *const PackedStruct, b: *const PackedUnion) void {
40}40}
4141
42test "export function alias" {42test "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;
44 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;44 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
4545
46 _ = struct {46 _ = struct {
test/behavior/floatop.zig+15-88
...@@ -16,9 +16,6 @@ fn epsForType(comptime T: type) T {...@@ -16,9 +16,6 @@ fn epsForType(comptime T: type) T {
16test "add f16" {16test "add f16" {
17 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;17 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
22 try testAdd(f16);19 try testAdd(f16);
23 try comptime testAdd(f16);20 try comptime testAdd(f16);
24}21}
...@@ -31,7 +28,6 @@ test "add f32/f64" {...@@ -31,7 +28,6 @@ test "add f32/f64" {
31}28}
3229
33test "add f80/f128/c_longdouble" {30test "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;
35 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3733
...@@ -52,7 +48,6 @@ fn testAdd(comptime T: type) !void {...@@ -52,7 +48,6 @@ fn testAdd(comptime T: type) !void {
52}48}
5349
54test "sub f16" {50test "sub f16" {
55 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;51 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5752
58 try testSub(f16);53 try testSub(f16);
...@@ -67,7 +62,6 @@ test "sub f32/f64" {...@@ -67,7 +62,6 @@ test "sub f32/f64" {
67}62}
6863
69test "sub f80/f128/c_longdouble" {64test "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;
71 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7367
...@@ -88,7 +82,6 @@ fn testSub(comptime T: type) !void {...@@ -88,7 +82,6 @@ fn testSub(comptime T: type) !void {
88}82}
8983
90test "mul f16" {84test "mul f16" {
91 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
92 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;85 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9386
94 try testMul(f16);87 try testMul(f16);
...@@ -103,7 +96,6 @@ test "mul f32/f64" {...@@ -103,7 +96,6 @@ test "mul f32/f64" {
103}96}
10497
105test "mul f80/f128/c_longdouble" {98test "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;
107 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;99 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
109101
...@@ -128,9 +120,6 @@ test "cmp f16" {...@@ -128,9 +120,6 @@ test "cmp f16" {
128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
129 if (builtin.cpu.arch.isArm() and builtin.target.abi.float() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234121 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
134 try testCmp(f16);123 try testCmp(f16);
135 try comptime testCmp(f16);124 try comptime testCmp(f16);
136}125}
...@@ -158,7 +147,6 @@ test "cmp f128" {...@@ -158,7 +147,6 @@ test "cmp f128" {
158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;148 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;149 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;
162 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
163151
164 try testCmp(f128);152 try testCmp(f128);
...@@ -171,8 +159,8 @@ test "cmp f80/c_longdouble" {...@@ -171,8 +159,8 @@ test "cmp f80/c_longdouble" {
171 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;159 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
172 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
173 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;161 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;
175 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;162 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
177 try testCmp(f80);165 try testCmp(f80);
178 try comptime testCmp(f80);166 try comptime testCmp(f80);
...@@ -242,7 +230,6 @@ test "vector cmp f16" {...@@ -242,7 +230,6 @@ test "vector cmp f16" {
242 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;230 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
243 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;231 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
244 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;232 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
247 try testCmpVector(f16);234 try testCmpVector(f16);
248 try comptime testCmpVector(f16);235 try comptime testCmpVector(f16);
...@@ -256,7 +243,6 @@ test "vector cmp f32" {...@@ -256,7 +243,6 @@ test "vector cmp f32" {
256 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;243 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
257 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;244 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
258 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;245 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
261 try testCmpVector(f32);247 try testCmpVector(f32);
262 try comptime testCmpVector(f32);248 try comptime testCmpVector(f32);
...@@ -269,7 +255,6 @@ test "vector cmp f64" {...@@ -269,7 +255,6 @@ test "vector cmp f64" {
269 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;255 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
270 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;256 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
271 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;257 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
274 try testCmpVector(f64);259 try testCmpVector(f64);
275 try comptime testCmpVector(f64);260 try comptime testCmpVector(f64);
...@@ -285,7 +270,6 @@ test "vector cmp f128" {...@@ -285,7 +270,6 @@ test "vector cmp f128" {
285 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;270 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
286 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;271 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
287 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;272 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
290 try testCmpVector(f128);274 try testCmpVector(f128);
291 try comptime testCmpVector(f128);275 try comptime testCmpVector(f128);
...@@ -297,7 +281,7 @@ test "vector cmp f80/c_longdouble" {...@@ -297,7 +281,7 @@ test "vector cmp f80/c_longdouble" {
297 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;281 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;282 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;283 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
302 try testCmpVector(f80);286 try testCmpVector(f80);
303 try comptime testCmpVector(f80);287 try comptime testCmpVector(f80);
...@@ -344,9 +328,6 @@ test "different sized float comparisons" {...@@ -344,9 +328,6 @@ test "different sized float comparisons" {
344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO328 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;329 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
350 try testDifferentSizedFloatComparisons();331 try testDifferentSizedFloatComparisons();
351 try comptime testDifferentSizedFloatComparisons();332 try comptime testDifferentSizedFloatComparisons();
352}333}
...@@ -395,9 +376,6 @@ test "@sqrt f16" {...@@ -395,9 +376,6 @@ test "@sqrt f16" {
395 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;376 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
396 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;377 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
401 try testSqrt(f16);379 try testSqrt(f16);
402 try comptime testSqrt(f16);380 try comptime testSqrt(f16);
403}381}
...@@ -418,9 +396,9 @@ test "@sqrt f80/f128/c_longdouble" {...@@ -418,9 +396,9 @@ test "@sqrt f80/f128/c_longdouble" {
418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
420 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO398 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;
422 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;399 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
423 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;400 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
425 if (builtin.os.tag == .freebsd) {403 if (builtin.os.tag == .freebsd) {
426 // TODO https://github.com/ziglang/zig/issues/10875404 // TODO https://github.com/ziglang/zig/issues/10875
...@@ -527,7 +505,6 @@ test "@sin f16" {...@@ -527,7 +505,6 @@ test "@sin f16" {
527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO505 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO507 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;
531 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;508 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
532 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;509 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
533510
...@@ -539,7 +516,6 @@ test "@sin f32/f64" {...@@ -539,7 +516,6 @@ test "@sin f32/f64" {
539 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO517 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
541 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO518 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;
543 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;519 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
544 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;520 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
545521
...@@ -553,9 +529,9 @@ test "@sin f80/f128/c_longdouble" {...@@ -553,9 +529,9 @@ test "@sin f80/f128/c_longdouble" {
553 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO529 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
554 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO530 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO531 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;
557 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;532 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
558 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;533 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
560 try testSin(f80);536 try testSin(f80);
561 comptime try testSin(f80);537 comptime try testSin(f80);
...@@ -581,7 +557,6 @@ test "@sin with vectors" {...@@ -581,7 +557,6 @@ test "@sin with vectors" {
581 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO557 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO558 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
583 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO559 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;
585 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;560 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
586 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;561 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
587562
...@@ -603,7 +578,6 @@ test "@cos f16" {...@@ -603,7 +578,6 @@ test "@cos f16" {
603 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
604 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
605 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO580 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;
607 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;581 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
608 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;582 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
609583
...@@ -615,7 +589,6 @@ test "@cos f32/f64" {...@@ -615,7 +589,6 @@ test "@cos f32/f64" {
615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO591 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;
619 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;592 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
620 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;593 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
621594
...@@ -629,9 +602,9 @@ test "@cos f80/f128/c_longdouble" {...@@ -629,9 +602,9 @@ test "@cos f80/f128/c_longdouble" {
629 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO602 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
630 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO603 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO604 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;
633 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;605 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
634 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;606 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
636 try testCos(f80);609 try testCos(f80);
637 try comptime testCos(f80);610 try comptime testCos(f80);
...@@ -657,7 +630,6 @@ test "@cos with vectors" {...@@ -657,7 +630,6 @@ test "@cos with vectors" {
657 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO630 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
658 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO631 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
659 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO632 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;
661 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;633 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
662 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;634 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
663635
...@@ -679,7 +651,6 @@ test "@tan f16" {...@@ -679,7 +651,6 @@ test "@tan f16" {
679 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO651 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
680 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO652 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
681 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO653 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;
683 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;654 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
684 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;655 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
685656
...@@ -691,7 +662,6 @@ test "@tan f32/f64" {...@@ -691,7 +662,6 @@ test "@tan f32/f64" {
691 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
692 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
693 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO664 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;
695 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;665 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
696 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;666 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
697667
...@@ -705,9 +675,9 @@ test "@tan f80/f128/c_longdouble" {...@@ -705,9 +675,9 @@ test "@tan f80/f128/c_longdouble" {
705 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO675 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
706 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO676 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
707 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO677 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;
709 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;678 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
710 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;679 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
712 try testTan(f80);682 try testTan(f80);
713 try comptime testTan(f80);683 try comptime testTan(f80);
...@@ -733,7 +703,6 @@ test "@tan with vectors" {...@@ -733,7 +703,6 @@ test "@tan with vectors" {
733 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO703 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO704 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
735 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO705 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;
737 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;706 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
738 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;707 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
739708
...@@ -755,7 +724,6 @@ test "@exp f16" {...@@ -755,7 +724,6 @@ test "@exp f16" {
755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO724 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
756 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO725 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
757 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO726 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;
759 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;727 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
760 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;728 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
761729
...@@ -767,7 +735,6 @@ test "@exp f32/f64" {...@@ -767,7 +735,6 @@ test "@exp f32/f64" {
767 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO735 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
768 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO736 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
769 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO737 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;
771 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;738 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
772 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;739 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
773740
...@@ -781,9 +748,9 @@ test "@exp f80/f128/c_longdouble" {...@@ -781,9 +748,9 @@ test "@exp f80/f128/c_longdouble" {
781 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
782 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO749 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
783 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO750 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;
785 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;751 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
786 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;752 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
788 try testExp(f80);755 try testExp(f80);
789 try comptime testExp(f80);756 try comptime testExp(f80);
...@@ -813,7 +780,6 @@ test "@exp with vectors" {...@@ -813,7 +780,6 @@ test "@exp with vectors" {
813 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO780 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
814 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO781 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
815 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO782 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;
817 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;783 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
818 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
819785
...@@ -835,7 +801,6 @@ test "@exp2 f16" {...@@ -835,7 +801,6 @@ test "@exp2 f16" {
835 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO801 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
836 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO802 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
837 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO803 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;
839 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;804 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
840 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;805 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
841806
...@@ -847,7 +812,6 @@ test "@exp2 f32/f64" {...@@ -847,7 +812,6 @@ test "@exp2 f32/f64" {
847 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO812 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
848 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO813 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
849 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO814 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;
851 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;815 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
852 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;816 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
853817
...@@ -861,9 +825,9 @@ test "@exp2 f80/f128/c_longdouble" {...@@ -861,9 +825,9 @@ test "@exp2 f80/f128/c_longdouble" {
861 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO825 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
862 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO826 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
863 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO827 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;
865 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;828 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
866 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;829 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
868 try testExp2(f80);832 try testExp2(f80);
869 try comptime testExp2(f80);833 try comptime testExp2(f80);
...@@ -888,7 +852,6 @@ test "@exp2 with @vectors" {...@@ -888,7 +852,6 @@ test "@exp2 with @vectors" {
888 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO852 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
889 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
890 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO854 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;
892 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;855 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
893 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;856 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
894857
...@@ -910,7 +873,6 @@ test "@log f16" {...@@ -910,7 +873,6 @@ test "@log f16" {
910 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO873 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO874 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
912 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO875 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;
914 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;876 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
915 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;877 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
916878
...@@ -922,7 +884,6 @@ test "@log f32/f64" {...@@ -922,7 +884,6 @@ test "@log f32/f64" {
922 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
923 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO885 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
924 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO886 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;
926 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;887 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
927 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;888 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
928889
...@@ -936,9 +897,9 @@ test "@log f80/f128/c_longdouble" {...@@ -936,9 +897,9 @@ test "@log f80/f128/c_longdouble" {
936 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO897 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
937 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
938 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO899 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;
940 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;900 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
941 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;901 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
943 try testLog(f80);904 try testLog(f80);
944 try comptime testLog(f80);905 try comptime testLog(f80);
...@@ -964,7 +925,6 @@ test "@log with @vectors" {...@@ -964,7 +925,6 @@ test "@log with @vectors" {
964 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO925 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
965 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO926 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
966 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO927 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;
968 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;928 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
969 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;929 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
970930
...@@ -983,7 +943,6 @@ test "@log2 f16" {...@@ -983,7 +943,6 @@ test "@log2 f16" {
983 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO943 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
984 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO944 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
985 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO945 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;
987 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;946 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
988 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;947 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
989948
...@@ -995,7 +954,6 @@ test "@log2 f32/f64" {...@@ -995,7 +954,6 @@ test "@log2 f32/f64" {
995 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO954 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
996 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO955 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
997 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO956 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;
999 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;957 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1000 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;958 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1001959
...@@ -1009,9 +967,9 @@ test "@log2 f80/f128/c_longdouble" {...@@ -1009,9 +967,9 @@ test "@log2 f80/f128/c_longdouble" {
1009 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO967 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO968 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1011 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO969 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;
1013 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;970 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1014 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;971 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
1016 try testLog2(f80);974 try testLog2(f80);
1017 try comptime testLog2(f80);975 try comptime testLog2(f80);
...@@ -1042,7 +1000,6 @@ test "@log2 with vectors" {...@@ -1042,7 +1000,6 @@ test "@log2 with vectors" {
1042 if (builtin.zig_backend == .stage2_llvm and1000 if (builtin.zig_backend == .stage2_llvm and
1043 builtin.cpu.arch == .aarch64 and1001 builtin.cpu.arch == .aarch64 and
1044 builtin.os.tag == .windows) return error.SkipZigTest;1002 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
1047 try testLog2WithVectors();1004 try testLog2WithVectors();
1048 try comptime testLog2WithVectors();1005 try comptime testLog2WithVectors();
...@@ -1062,7 +1019,6 @@ test "@log10 f16" {...@@ -1062,7 +1019,6 @@ test "@log10 f16" {
1062 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1019 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1063 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1020 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1021 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;
1066 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1022 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1067 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1023 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10681024
...@@ -1074,7 +1030,6 @@ test "@log10 f32/f64" {...@@ -1074,7 +1030,6 @@ test "@log10 f32/f64" {
1074 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1030 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1075 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1076 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1032 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;
1078 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1033 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1079 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1034 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10801035
...@@ -1088,9 +1043,9 @@ test "@log10 f80/f128/c_longdouble" {...@@ -1088,9 +1043,9 @@ test "@log10 f80/f128/c_longdouble" {
1088 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1043 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1089 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1044 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1090 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1045 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;
1092 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1046 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1093 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1047 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
1095 try testLog10(f80);1050 try testLog10(f80);
1096 try comptime testLog10(f80);1051 try comptime testLog10(f80);
...@@ -1115,7 +1070,6 @@ test "@log10 with vectors" {...@@ -1115,7 +1070,6 @@ test "@log10 with vectors" {
1115 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1070 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1072 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;
1119 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1073 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1120 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1074 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11211075
...@@ -1139,9 +1093,6 @@ test "@abs f16" {...@@ -1139,9 +1093,6 @@ test "@abs f16" {
1139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1093 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1140 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1094 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
1145 try testFabs(f16);1096 try testFabs(f16);
1146 try comptime testFabs(f16);1097 try comptime testFabs(f16);
1147}1098}
...@@ -1162,9 +1113,9 @@ test "@abs f80/f128/c_longdouble" {...@@ -1162,9 +1113,9 @@ test "@abs f80/f128/c_longdouble" {
1162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1163 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;1114 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
1164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1115 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;
1166 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1116 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1117 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
1169 try testFabs(f80);1120 try testFabs(f80);
1170 try comptime testFabs(f80);1121 try comptime testFabs(f80);
...@@ -1262,7 +1213,6 @@ test "@floor f16" {...@@ -1262,7 +1213,6 @@ test "@floor f16" {
1262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1215 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;
1266 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12671217
1268 try testFloor(f16);1218 try testFloor(f16);
...@@ -1275,9 +1225,6 @@ test "@floor f32/f64" {...@@ -1275,9 +1225,6 @@ test "@floor f32/f64" {
1275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1276 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1226 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
1281 try testFloor(f32);1228 try testFloor(f32);
1282 try comptime testFloor(f32);1229 try comptime testFloor(f32);
1283 try testFloor(f64);1230 try testFloor(f64);
...@@ -1342,9 +1289,6 @@ test "@floor with vectors" {...@@ -1342,9 +1289,6 @@ test "@floor with vectors" {
1342 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1289 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1343 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1290 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
1348 try testFloorWithVectors();1292 try testFloorWithVectors();
1349 try comptime testFloorWithVectors();1293 try comptime testFloorWithVectors();
1350}1294}
...@@ -1363,7 +1307,6 @@ test "@ceil f16" {...@@ -1363,7 +1307,6 @@ test "@ceil f16" {
1363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1309 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;
1367 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1310 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13681311
1369 try testCeil(f16);1312 try testCeil(f16);
...@@ -1376,9 +1319,6 @@ test "@ceil f32/f64" {...@@ -1376,9 +1319,6 @@ test "@ceil f32/f64" {
1376 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1377 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1320 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
1382 try testCeil(f32);1322 try testCeil(f32);
1383 try comptime testCeil(f32);1323 try comptime testCeil(f32);
1384 try testCeil(f64);1324 try testCeil(f64);
...@@ -1443,9 +1383,6 @@ test "@ceil with vectors" {...@@ -1443,9 +1383,6 @@ test "@ceil with vectors" {
1443 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1383 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1444 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1384 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
1449 try testCeilWithVectors();1386 try testCeilWithVectors();
1450 try comptime testCeilWithVectors();1387 try comptime testCeilWithVectors();
1451}1388}
...@@ -1464,7 +1401,6 @@ test "@trunc f16" {...@@ -1464,7 +1401,6 @@ test "@trunc f16" {
1464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1403 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;
1468 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1404 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14691405
1470 try testTrunc(f16);1406 try testTrunc(f16);
...@@ -1477,9 +1413,6 @@ test "@trunc f32/f64" {...@@ -1477,9 +1413,6 @@ test "@trunc f32/f64" {
1477 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1413 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1478 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1414 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
1483 try testTrunc(f32);1416 try testTrunc(f32);
1484 try comptime testTrunc(f32);1417 try comptime testTrunc(f32);
1485 try testTrunc(f64);1418 try testTrunc(f64);
...@@ -1491,9 +1424,9 @@ test "@trunc f80/f128/c_longdouble" {...@@ -1491,9 +1424,9 @@ test "@trunc f80/f128/c_longdouble" {
1491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1492 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;1425 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
1493 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1426 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;
1495 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1427 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1496 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1428 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
1498 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {1431 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
1499 // https://github.com/ziglang/zig/issues/126021432 // https://github.com/ziglang/zig/issues/12602
...@@ -1544,9 +1477,6 @@ test "@trunc with vectors" {...@@ -1544,9 +1477,6 @@ test "@trunc with vectors" {
1544 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1477 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1545 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1478 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
1550 try testTruncWithVectors();1480 try testTruncWithVectors();
1551 try comptime testTruncWithVectors();1481 try comptime testTruncWithVectors();
1552}1482}
...@@ -1566,9 +1496,7 @@ test "neg f16" {...@@ -1566,9 +1496,7 @@ test "neg f16" {
1566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1568 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1498 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15691499 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1570 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1571 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
15721500
1573 if (builtin.os.tag == .freebsd) {1501 if (builtin.os.tag == .freebsd) {
1574 // TODO file issue to track this failure1502 // TODO file issue to track this failure
...@@ -1597,8 +1525,8 @@ test "neg f80/f128/c_longdouble" {...@@ -1597,8 +1525,8 @@ test "neg f80/f128/c_longdouble" {
1597 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1598 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1526 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1599 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1527 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;
1601 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1528 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
1603 try testNeg(f80);1531 try testNeg(f80);
1604 try comptime testNeg(f80);1532 try comptime testNeg(f80);
...@@ -1704,7 +1632,6 @@ test "comptime fixed-width float zero divided by zero produces NaN" {...@@ -1704,7 +1632,6 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
1704 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1632 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1705 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1706 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1634 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;
1708 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1635 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
17091636
1710 inline for (.{ f16, f32, f64, f80, f128 }) |F| {1637 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
test/behavior/generics.zig-1
...@@ -587,7 +587,6 @@ fn StructCapture(comptime T: type) type {...@@ -587,7 +587,6 @@ fn StructCapture(comptime T: type) type {
587}587}
588588
589test "call generic function that uses capture from function declaration's scope" {589test "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;
591 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;590 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
592 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;591 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
593592
test/behavior/math.zig+1-23
...@@ -65,7 +65,6 @@ test "@clz" {...@@ -65,7 +65,6 @@ test "@clz" {
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 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;
69 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;68 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
7069
71 try testClz();70 try testClz();
...@@ -474,9 +473,6 @@ test "division" {...@@ -474,9 +473,6 @@ test "division" {
474 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;473 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
475 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;474 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
480 try testIntDivision();476 try testIntDivision();
481 try comptime testIntDivision();477 try comptime testIntDivision();
482478
...@@ -589,7 +585,6 @@ fn testFloatDivision() !void {...@@ -589,7 +585,6 @@ fn testFloatDivision() !void {
589}585}
590586
591test "large integer division" {587test "large integer division" {
592 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
593 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;588 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
594 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
595 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
...@@ -615,7 +610,6 @@ test "division half-precision floats" {...@@ -615,7 +610,6 @@ test "division half-precision floats" {
615 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO610 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO611 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO612 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;
619 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;613 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
620614
621 try testDivisionFP16();615 try testDivisionFP16();
...@@ -757,7 +751,6 @@ test "f128" {...@@ -757,7 +751,6 @@ test "f128" {
757 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO751 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO752 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;753 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;
761 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;754 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
762755
763 try test_f128();756 try test_f128();
...@@ -843,7 +836,6 @@ test "128-bit multiplication" {...@@ -843,7 +836,6 @@ test "128-bit multiplication" {
843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO836 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO837 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
845 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;838 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;
847 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;839 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
848 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;840 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
849841
...@@ -1052,7 +1044,6 @@ test "@mulWithOverflow bitsize 128 bits" {...@@ -1052,7 +1044,6 @@ test "@mulWithOverflow bitsize 128 bits" {
1052 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1044 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1054 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1046 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
1057 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);1048 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);
1058 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);1049 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);
...@@ -1078,7 +1069,6 @@ test "@mulWithOverflow bitsize 256 bits" {...@@ -1078,7 +1069,6 @@ test "@mulWithOverflow bitsize 256 bits" {
1078 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1069 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1079 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1070 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1080 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1071 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
1083 {1073 {
1084 const const_lhs: u256 = 8035709466408580321693645878924206181189;1074 const const_lhs: u256 = 8035709466408580321693645878924206181189;
...@@ -1475,7 +1465,6 @@ test "float remainder division using @rem" {...@@ -1475,7 +1465,6 @@ test "float remainder division using @rem" {
1475 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1476 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1477 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1467 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;
1479 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1468 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14801469
1481 try comptime frem(f16);1470 try comptime frem(f16);
...@@ -1560,7 +1549,6 @@ test "@round f16" {...@@ -1560,7 +1549,6 @@ test "@round f16" {
1560 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1549 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1561 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1550 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1562 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1551 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;
1564 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1552 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15651553
1566 try testRound(f16, 12.0);1554 try testRound(f16, 12.0);
...@@ -1571,7 +1559,6 @@ test "@round f32/f64" {...@@ -1571,7 +1559,6 @@ test "@round f32/f64" {
1571 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1559 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1572 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1573 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1561 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;
1575 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1562 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15761563
1577 try testRound(f64, 12.0);1564 try testRound(f64, 12.0);
...@@ -1591,7 +1578,6 @@ test "@round f80" {...@@ -1591,7 +1578,6 @@ test "@round f80" {
1591 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1592 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1579 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1593 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;1580 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;
1595 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1581 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15961582
1597 try testRound(f80, 12.0);1583 try testRound(f80, 12.0);
...@@ -1604,7 +1590,6 @@ test "@round f128" {...@@ -1604,7 +1590,6 @@ test "@round f128" {
1604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1605 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1591 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1606 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;1592 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;
1608 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1593 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16091594
1610 try testRound(f128, 12.0);1595 try testRound(f128, 12.0);
...@@ -1624,7 +1609,6 @@ test "vector integer addition" {...@@ -1624,7 +1609,6 @@ test "vector integer addition" {
1624 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1609 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1625 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1626 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1611 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
1629 const S = struct {1613 const S = struct {
1630 fn doTheTest() !void {1614 fn doTheTest() !void {
...@@ -1646,7 +1630,6 @@ test "NaN comparison" {...@@ -1646,7 +1630,6 @@ test "NaN comparison" {
1646 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1630 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1648 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1632 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;
1650 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1633 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1651 if (builtin.cpu.arch.isArm() and builtin.target.abi.float() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/212341634 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" {...@@ -1665,7 +1648,6 @@ test "NaN comparison f80" {
1665 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1648 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1666 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1649 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1667 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1650 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;
1669 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1651 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16701652
1671 try testNanEqNan(f80);1653 try testNanEqNan(f80);
...@@ -1722,7 +1704,7 @@ test "signed zeros are represented properly" {...@@ -1722,7 +1704,7 @@ test "signed zeros are represented properly" {
1722 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1723 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1705 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1724 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1706 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
1727 const S = struct {1709 const S = struct {
1728 fn doTheTest() !void {1710 fn doTheTest() !void {
...@@ -1900,7 +1882,6 @@ test "partially-runtime integer vector division would be illegal if vector eleme...@@ -1900,7 +1882,6 @@ test "partially-runtime integer vector division would be illegal if vector eleme
1900 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1882 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1901 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1883 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1902 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;1884 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
1905 var lhs: @Vector(2, i8) = .{ -128, 5 };1886 var lhs: @Vector(2, i8) = .{ -128, 5 };
1906 const rhs: @Vector(2, i8) = .{ 1, -1 };1887 const rhs: @Vector(2, i8) = .{ 1, -1 };
...@@ -1930,9 +1911,6 @@ test "float vector division of comptime zero by runtime nan is nan" {...@@ -1930,9 +1911,6 @@ test "float vector division of comptime zero by runtime nan is nan" {
1930 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1911 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1931 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1912 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
1936 const ct_zero: @Vector(1, f32) = .{0};1914 const ct_zero: @Vector(1, f32) = .{0};
1937 var rt_nan: @Vector(1, f32) = .{math.nan(f32)};1915 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" {...@@ -122,7 +122,6 @@ test "@min/max for floats" {
122 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
123 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;123 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
124 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;124 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
127 const S = struct {126 const S = struct {
128 fn doTheTest(comptime T: type) !void {127 fn doTheTest(comptime T: type) !void {
test/behavior/memmove.zig-4
...@@ -9,7 +9,6 @@ test "memmove and memset intrinsics" {...@@ -9,7 +9,6 @@ test "memmove and memset intrinsics" {
9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;11 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
14 try testMemmoveMemset();13 try testMemmoveMemset();
15 try comptime testMemmoveMemset();14 try comptime testMemmoveMemset();
...@@ -39,7 +38,6 @@ test "@memmove with both operands single-ptr-to-array, one is null-terminated" {...@@ -39,7 +38,6 @@ test "@memmove with both operands single-ptr-to-array, one is null-terminated" {
39 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;40 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
44 try testMemmoveBothSinglePtrArrayOneIsNullTerminated();42 try testMemmoveBothSinglePtrArrayOneIsNullTerminated();
45 try comptime testMemmoveBothSinglePtrArrayOneIsNullTerminated();43 try comptime testMemmoveBothSinglePtrArrayOneIsNullTerminated();
...@@ -85,7 +83,6 @@ test "@memmove dest many pointer" {...@@ -85,7 +83,6 @@ test "@memmove dest many pointer" {
85 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;83 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;85 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
90 try testMemmoveDestManyPtr();87 try testMemmoveDestManyPtr();
91 try comptime testMemmoveDestManyPtr();88 try comptime testMemmoveDestManyPtr();
...@@ -129,7 +126,6 @@ test "@memmove slice" {...@@ -129,7 +126,6 @@ test "@memmove slice" {
129 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;126 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
130 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;127 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
131 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;128 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
134 try testMemmoveSlice();130 try testMemmoveSlice();
135 try comptime testMemmoveSlice();131 try comptime testMemmoveSlice();
test/behavior/muladd.zig-15
...@@ -9,9 +9,6 @@ test "@mulAdd" {...@@ -9,9 +9,6 @@ test "@mulAdd" {
9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 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
15 try comptime testMulAdd();12 try comptime testMulAdd();
16 try testMulAdd();13 try testMulAdd();
17}14}
...@@ -37,7 +34,6 @@ test "@mulAdd f16" {...@@ -37,7 +34,6 @@ test "@mulAdd f16" {
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO36 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;
41 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
4339
...@@ -59,7 +55,6 @@ test "@mulAdd f80" {...@@ -59,7 +55,6 @@ test "@mulAdd f80" {
59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;56 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;57 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;
63 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;58 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6459
65 try comptime testMulAdd80();60 try comptime testMulAdd80();
...@@ -80,7 +75,6 @@ test "@mulAdd f128" {...@@ -80,7 +75,6 @@ test "@mulAdd f128" {
80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;76 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;77 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;
84 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;78 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8579
86 try comptime testMulAdd128();80 try comptime testMulAdd128();
...@@ -113,7 +107,6 @@ test "vector f16" {...@@ -113,7 +107,6 @@ test "vector f16" {
113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO109 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;
117 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;110 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;111 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
119112
...@@ -142,9 +135,6 @@ test "vector f32" {...@@ -142,9 +135,6 @@ test "vector f32" {
142 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;135 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
143 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;136 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
148 try comptime vector32();138 try comptime vector32();
149 try vector32();139 try vector32();
150}140}
...@@ -170,9 +160,6 @@ test "vector f64" {...@@ -170,9 +160,6 @@ test "vector f64" {
170 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
171 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;161 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
176 try comptime vector64();163 try comptime vector64();
177 try vector64();164 try vector64();
178}165}
...@@ -196,7 +183,6 @@ test "vector f80" {...@@ -196,7 +183,6 @@ test "vector f80" {
196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
198 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;185 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;
200 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
201187
202 try comptime vector80();188 try comptime vector80();
...@@ -223,7 +209,6 @@ test "vector f128" {...@@ -223,7 +209,6 @@ test "vector f128" {
223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;210 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;211 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;
227 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;212 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
228213
229 try comptime vector128();214 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" {...@@ -15,7 +15,7 @@ test "call extern function defined with conflicting type" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;17 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;
19 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2020
21 @import("conflicting_externs/a.zig").issue529(null);21 @import("conflicting_externs/a.zig").issue529(null);
test/behavior/optional.zig-1
...@@ -59,7 +59,6 @@ fn testNullPtrsEql() !void {...@@ -59,7 +59,6 @@ fn testNullPtrsEql() !void {
59}59}
6060
61test "optional with zero-bit type" {61test "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;
63 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;62 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
6463
65 const S = struct {64 const S = struct {
test/behavior/packed-struct.zig-1
...@@ -661,7 +661,6 @@ test "nested packed struct field access test" {...@@ -661,7 +661,6 @@ test "nested packed struct field access test" {
661 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO661 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
662 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO662 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
663 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;663 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;
665 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;664 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
666665
667 const Vec2 = packed struct {666 const Vec2 = packed struct {
test/behavior/saturating_arithmetic.zig-7
...@@ -58,7 +58,6 @@ test "saturating add 128bit" {...@@ -58,7 +58,6 @@ test "saturating add 128bit" {
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;60 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
63 const S = struct {62 const S = struct {
64 fn doTheTest() !void {63 fn doTheTest() !void {
...@@ -132,7 +131,6 @@ test "saturating subtraction 128bit" {...@@ -132,7 +131,6 @@ test "saturating subtraction 128bit" {
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;132 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;133 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
137 const S = struct {135 const S = struct {
138 fn doTheTest() !void {136 fn doTheTest() !void {
...@@ -233,7 +231,6 @@ test "saturating multiplication <= 32 bits" {...@@ -233,7 +231,6 @@ test "saturating multiplication <= 32 bits" {
233test "saturating mul i64, i128" {231test "saturating mul i64, i128" {
234 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;232 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
235 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;233 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
238 try testSatMul(i64, 0, maxInt(i64), 0);235 try testSatMul(i64, 0, maxInt(i64), 0);
239 try testSatMul(i64, 0, minInt(i64), 0);236 try testSatMul(i64, 0, minInt(i64), 0);
...@@ -266,7 +263,6 @@ test "saturating multiplication" {...@@ -266,7 +263,6 @@ test "saturating multiplication" {
266 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;263 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
268 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;265 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
271 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) {267 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) {
272 // https://github.com/ziglang/zig/issues/9660268 // https://github.com/ziglang/zig/issues/9660
...@@ -304,7 +300,6 @@ test "saturating shift-left" {...@@ -304,7 +300,6 @@ test "saturating shift-left" {
304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;301 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
306 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;302 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
309 const S = struct {304 const S = struct {
310 fn doTheTest() !void {305 fn doTheTest() !void {
...@@ -349,7 +344,6 @@ test "saturating shift-left large rhs" {...@@ -349,7 +344,6 @@ test "saturating shift-left large rhs" {
349 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;344 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
350 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;345 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
351 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;346 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
354 {348 {
355 var lhs: u8 = undefined;349 var lhs: u8 = undefined;
...@@ -368,7 +362,6 @@ test "saturating shl uses the LHS type" {...@@ -368,7 +362,6 @@ test "saturating shl uses the LHS type" {
368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO362 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;363 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
370 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;364 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
373 const lhs_const: u8 = 1;366 const lhs_const: u8 = 1;
374 var lhs_var: u8 = 1;367 var lhs_var: u8 = 1;
test/behavior/struct.zig-1
...@@ -561,7 +561,6 @@ test "packed struct with non-ABI-aligned field" {...@@ -561,7 +561,6 @@ test "packed struct with non-ABI-aligned field" {
561 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO561 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
562 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;562 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
563 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;563 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
566 const S = packed struct {565 const S = packed struct {
567 x: u9,566 x: u9,
test/behavior/tuple.zig-1
...@@ -397,7 +397,6 @@ test "tuple of struct concatenation and coercion to array" {...@@ -397,7 +397,6 @@ test "tuple of struct concatenation and coercion to array" {
397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
399 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO399 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;
401 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;400 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
402 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;401 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" {...@@ -282,7 +282,6 @@ test "cast union to tag type of union" {
282 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;282 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO284 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
287 try testCastUnionToTag();286 try testCastUnionToTag();
288 try comptime testCastUnionToTag();287 try comptime testCastUnionToTag();
...@@ -2262,7 +2261,6 @@ test "signed enum tag with negative value" {...@@ -2262,7 +2261,6 @@ test "signed enum tag with negative value" {
2262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2263 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;2262 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
2264 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;2263 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
2267 const Enum = enum(i8) {2265 const Enum = enum(i8) {
2268 a = -1,2266 a = -1,
test/behavior/vector.zig-15
...@@ -80,7 +80,6 @@ test "vector int operators" {...@@ -80,7 +80,6 @@ test "vector int operators" {
80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO80 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;81 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;82 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
85 const S = struct {84 const S = struct {
86 fn doTheTest() !void {85 fn doTheTest() !void {
...@@ -104,7 +103,6 @@ test "vector float operators" {...@@ -104,7 +103,6 @@ test "vector float operators" {
104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
106 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;105 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
109 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
110 // Triggers an assertion with LLVM 18:108 // Triggers an assertion with LLVM 18:
...@@ -260,9 +258,6 @@ test "array to vector with element type coercion" {...@@ -260,9 +258,6 @@ test "array to vector with element type coercion" {
260 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;258 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;259 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
266 const S = struct {261 const S = struct {
267 fn doTheTest() !void {262 fn doTheTest() !void {
268 var foo: f16 = 3.14;263 var foo: f16 = 3.14;
...@@ -301,7 +296,6 @@ test "tuple to vector" {...@@ -301,7 +296,6 @@ test "tuple to vector" {
301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;298 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
306 const S = struct {300 const S = struct {
307 fn doTheTest() !void {301 fn doTheTest() !void {
...@@ -365,7 +359,6 @@ test "vector @splat" {...@@ -365,7 +359,6 @@ test "vector @splat" {
365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;360 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
367 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;361 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
370 const S = struct {363 const S = struct {
371 fn testForT(comptime N: comptime_int, v: anytype) !void {364 fn testForT(comptime N: comptime_int, v: anytype) !void {
...@@ -567,7 +560,6 @@ test "vector division operators" {...@@ -567,7 +560,6 @@ test "vector division operators" {
567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
568 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;561 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
569 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;562 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
572 const S = struct {564 const S = struct {
573 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {565 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
...@@ -718,7 +710,6 @@ test "vector shift operators" {...@@ -718,7 +710,6 @@ test "vector shift operators" {
718 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
719 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;711 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
720 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;712 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
723 const S = struct {714 const S = struct {
724 fn doTheTestShift(x: anytype, y: anytype) !void {715 fn doTheTestShift(x: anytype, y: anytype) !void {
...@@ -793,7 +784,6 @@ test "vector reduce operation" {...@@ -793,7 +784,6 @@ test "vector reduce operation" {
793 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
794 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21091785 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21091
795 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isSPARC()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23719786 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
798 const S = struct {788 const S = struct {
799 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {789 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
...@@ -1047,7 +1037,6 @@ test "saturating shift-left" {...@@ -1047,7 +1037,6 @@ test "saturating shift-left" {
1047 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1037 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1048 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1038 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1049 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1039 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
1052 const S = struct {1041 const S = struct {
1053 fn doTheTest() !void {1042 fn doTheTest() !void {
...@@ -1072,7 +1061,6 @@ test "multiplication-assignment operator with an array operand" {...@@ -1072,7 +1061,6 @@ test "multiplication-assignment operator with an array operand" {
1072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1061 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1073 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1062 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1074 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1063 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
1077 const S = struct {1065 const S = struct {
1078 fn doTheTest() !void {1066 fn doTheTest() !void {
...@@ -1332,7 +1320,6 @@ test "zero multiplicand" {...@@ -1332,7 +1320,6 @@ test "zero multiplicand" {
1332 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1320 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1321 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1334 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1322 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
1337 const zeros = @Vector(2, u32){ 0.0, 0.0 };1324 const zeros = @Vector(2, u32){ 0.0, 0.0 };
1338 var ones = @Vector(2, u32){ 1.0, 1.0 };1325 var ones = @Vector(2, u32){ 1.0, 1.0 };
...@@ -1395,7 +1382,6 @@ test "load packed vector element" {...@@ -1395,7 +1382,6 @@ test "load packed vector element" {
1395 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1397 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1384 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;
1399 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14001386
1401 var x: @Vector(2, u15) = .{ 1, 4 };1387 var x: @Vector(2, u15) = .{ 1, 4 };
...@@ -1426,7 +1412,6 @@ test "store to vector in slice" {...@@ -1426,7 +1412,6 @@ test "store to vector in slice" {
1426 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1412 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1427 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1413 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1428 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1414 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
1431 var v = [_]@Vector(3, f32){1416 var v = [_]@Vector(3, f32){
1432 .{ 1, 1, 1 },1417 .{ 1, 1, 1 },
test/behavior/widening.zig-2
...@@ -44,7 +44,6 @@ test "float widening" {...@@ -44,7 +44,6 @@ test "float widening" {
44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;46 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;
48 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4948
50 var a: f16 = 12.34;49 var a: f16 = 12.34;
...@@ -65,7 +64,6 @@ test "float widening f16 to f128" {...@@ -65,7 +64,6 @@ test "float widening f16 to f128" {
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;66 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;
69 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7068
71 var x: f16 = 12.34;69 var x: f16 = 12.34;
test/behavior/x86_64.zig-2
...@@ -5,8 +5,6 @@ test {...@@ -5,8 +5,6 @@ test {
5 if (builtin.zig_backend != .stage2_x86_64) return error.SkipZigTest;5 if (builtin.zig_backend != .stage2_x86_64) return error.SkipZigTest;
6 // MachO linker does not support executables this big.6 // MachO linker does not support executables this big.
7 if (builtin.object_format == .macho) return error.SkipZigTest;7 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;
10 _ = @import("x86_64/access.zig");8 _ = @import("x86_64/access.zig");
11 _ = @import("x86_64/binary.zig");9 _ = @import("x86_64/binary.zig");
12 _ = @import("x86_64/cast.zig");10 _ = @import("x86_64/cast.zig");
test/behavior/x86_64/binary.zig+104-52
...@@ -14,6 +14,7 @@ const Log2Int = math.Log2Int;...@@ -14,6 +14,7 @@ const Log2Int = math.Log2Int;
14const math = @import("math.zig");14const math = @import("math.zig");
15const nan = math.nan;15const nan = math.nan;
16const Scalar = math.Scalar;16const Scalar = math.Scalar;
17const select = math.select;
17const sign = math.sign;18const sign = math.sign;
18const splat = math.splat;19const splat = math.splat;
19const Sse = math.Sse;20const Sse = math.Sse;
...@@ -84,6 +85,12 @@ fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .rela...@@ -84,6 +85,12 @@ fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .rela
84 imm_rhs,85 imm_rhs,
85 );86 );
86 }87 }
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 }
87 fn testInts() !void {94 fn testInts() !void {
88 try testArgs(i1, 0x0, -0x1);95 try testArgs(i1, 0x0, -0x1);
89 try testArgs(u1, 0x1, 0x1);96 try testArgs(u1, 0x1, 0x1);
...@@ -1881,6 +1888,23 @@ fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .rela...@@ -1881,6 +1888,23 @@ fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .rela
1881 try testArgs(f128, nan(f128), inf(f128));1888 try testArgs(f128, nan(f128), inf(f128));
1882 try testArgs(f128, nan(f128), nan(f128));1889 try testArgs(f128, nan(f128), nan(f128));
1883 }1890 }
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 }
1884 fn testIntVectors() !void {1908 fn testIntVectors() !void {
1885 try testArgs(@Vector(1, i1), .{1909 try testArgs(@Vector(1, i1), .{
1886 0x0,1910 0x0,
...@@ -5033,8 +5057,7 @@ inline fn addSafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {...@@ -5033,8 +5057,7 @@ inline fn addSafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {
5033test addSafe {5057test addSafe {
5034 const test_add_safe = binary(addSafe, .{});5058 const test_add_safe = binary(addSafe, .{});
5035 try test_add_safe.testInts();5059 try test_add_safe.testInts();
5036 try test_add_safe.testFloats();5060 try test_add_safe.testIntVectors();
5037 try test_add_safe.testFloatVectors();
5038}5061}
50395062
5040inline fn addWrap(comptime Type: type, lhs: Type, rhs: Type) Type {5063inline fn addWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
...@@ -5046,13 +5069,13 @@ test addWrap {...@@ -5046,13 +5069,13 @@ test addWrap {
5046 try test_add_wrap.testIntVectors();5069 try test_add_wrap.testIntVectors();
5047}5070}
50485071
5049inline fn addSat(comptime Type: type, lhs: Type, rhs: Type) Type {5072inline fn addSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
5050 return lhs +| rhs;5073 return lhs +| rhs;
5051}5074}
5052test addSat {5075test addSaturate {
5053 const test_add_sat = binary(addSat, .{});5076 const test_add_saturate = binary(addSaturate, .{});
5054 try test_add_sat.testInts();5077 try test_add_saturate.testInts();
5055 try test_add_sat.testIntVectors();5078 try test_add_saturate.testIntVectors();
5056}5079}
50575080
5058inline fn subUnsafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {5081inline 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) {...@@ -5088,8 +5111,7 @@ inline fn subSafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {
5088test subSafe {5111test subSafe {
5089 const test_sub_safe = binary(subSafe, .{});5112 const test_sub_safe = binary(subSafe, .{});
5090 try test_sub_safe.testInts();5113 try test_sub_safe.testInts();
5091 try test_sub_safe.testFloats();5114 try test_sub_safe.testIntVectors();
5092 try test_sub_safe.testFloatVectors();
5093}5115}
50945116
5095inline fn subWrap(comptime Type: type, lhs: Type, rhs: Type) Type {5117inline fn subWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
...@@ -5101,13 +5123,13 @@ test subWrap {...@@ -5101,13 +5123,13 @@ test subWrap {
5101 try test_sub_wrap.testIntVectors();5123 try test_sub_wrap.testIntVectors();
5102}5124}
51035125
5104inline fn subSat(comptime Type: type, lhs: Type, rhs: Type) Type {5126inline fn subSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
5105 return lhs -| rhs;5127 return lhs -| rhs;
5106}5128}
5107test subSat {5129test subSaturate {
5108 const test_sub_sat = binary(subSat, .{});5130 const test_sub_saturate = binary(subSaturate, .{});
5109 try test_sub_sat.testInts();5131 try test_sub_saturate.testInts();
5110 try test_sub_sat.testIntVectors();5132 try test_sub_saturate.testIntVectors();
5111}5133}
51125134
5113inline fn mulUnsafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {5135inline fn mulUnsafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
...@@ -5118,6 +5140,8 @@ test mulUnsafe {...@@ -5118,6 +5140,8 @@ test mulUnsafe {
5118 const test_mul_unsafe = binary(mulUnsafe, .{});5140 const test_mul_unsafe = binary(mulUnsafe, .{});
5119 try test_mul_unsafe.testInts();5141 try test_mul_unsafe.testInts();
5120 try test_mul_unsafe.testIntVectors();5142 try test_mul_unsafe.testIntVectors();
5143 try test_mul_unsafe.testFloats();
5144 try test_mul_unsafe.testFloatVectors();
5121}5145}
51225146
5123inline fn mulSafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {5147inline 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) {...@@ -5127,6 +5151,7 @@ inline fn mulSafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
5127test mulSafe {5151test mulSafe {
5128 const test_mul_safe = binary(mulSafe, .{});5152 const test_mul_safe = binary(mulSafe, .{});
5129 try test_mul_safe.testInts();5153 try test_mul_safe.testInts();
5154 try test_mul_safe.testIntVectors();
5130}5155}
51315156
5132inline fn mulWrap(comptime Type: type, lhs: Type, rhs: Type) Type {5157inline fn mulWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
...@@ -5138,16 +5163,16 @@ test mulWrap {...@@ -5138,16 +5163,16 @@ test mulWrap {
5138 try test_mul_wrap.testIntVectors();5163 try test_mul_wrap.testIntVectors();
5139}5164}
51405165
5141inline fn mulSat(comptime Type: type, lhs: Type, rhs: Type) Type {5166inline fn mulSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
5142 return lhs *| rhs;5167 return lhs *| rhs;
5143}5168}
5144test mulSat {5169test mulSaturate {
5145 const test_mul_sat = binary(mulSat, .{});5170 const test_mul_saturate = binary(mulSaturate, .{});
5146 try test_mul_sat.testInts();5171 try test_mul_saturate.testInts();
5147 try test_mul_sat.testIntVectors();5172 try test_mul_saturate.testIntVectors();
5148}5173}
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 {
5151 return lhs * rhs;5176 return lhs * rhs;
5152}5177}
5153test multiply {5178test multiply {
...@@ -5156,7 +5181,7 @@ test multiply {...@@ -5156,7 +5181,7 @@ test multiply {
5156 try test_multiply.testFloatVectors();5181 try test_multiply.testFloatVectors();
5157}5182}
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 {
5160 return lhs / rhs;5185 return lhs / rhs;
5161}5186}
5162test divide {5187test divide {
...@@ -5165,29 +5190,49 @@ test divide {...@@ -5165,29 +5190,49 @@ test divide {
5165 try test_divide.testFloatVectors();5190 try test_divide.testFloatVectors();
5166}5191}
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 {
5169 return @divTrunc(lhs, rhs);5194 return @divTrunc(lhs, rhs);
5170}5195}
5171test divTrunc {5196test divTruncUnoptimized {
5172 const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int });5197 const test_div_trunc_unoptimized = binary(divTruncUnoptimized, .{ .compare = .approx_int });
5173 try test_div_trunc.testInts();5198 try test_div_trunc_unoptimized.testInts();
5174 try test_div_trunc.testIntVectors();5199 try test_div_trunc_unoptimized.testIntVectors();
5175 try test_div_trunc.testFloats();5200 try test_div_trunc_unoptimized.testFloats();
5176 try test_div_trunc.testFloatVectors();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();
5177}5212}
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 {
5180 return @divFloor(lhs, rhs);5215 return @divFloor(lhs, rhs);
5181}5216}
5182test divFloor {5217test divFloorUnoptimized {
5183 const test_div_floor = binary(divFloor, .{ .compare = .approx_int });5218 const test_div_floor_unoptimized = binary(divFloorUnoptimized, .{ .compare = .approx_int });
5184 try test_div_floor.testInts();5219 try test_div_floor_unoptimized.testInts();
5185 try test_div_floor.testIntVectors();5220 try test_div_floor_unoptimized.testIntVectors();
5186 try test_div_floor.testFloats();5221 try test_div_floor_unoptimized.testFloats();
5187 try test_div_floor.testFloatVectors();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();
5188}5233}
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 {
5191 return @rem(lhs, rhs);5236 return @rem(lhs, rhs);
5192}5237}
5193test rem {5238test rem {
...@@ -5198,7 +5243,7 @@ test rem {...@@ -5198,7 +5243,7 @@ test rem {
5198 try test_rem.testFloatVectors();5243 try test_rem.testFloatVectors();
5199}5244}
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 {
5202 // workaround llvm backend bugs5247 // workaround llvm backend bugs
5203 if (@inComptime() and @typeInfo(Scalar(Type)) == .float) {5248 if (@inComptime() and @typeInfo(Scalar(Type)) == .float) {
5204 const scalarMod = struct {5249 const scalarMod = struct {
...@@ -5219,6 +5264,7 @@ inline fn mod(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mod(lhs, rhs))...@@ -5219,6 +5264,7 @@ inline fn mod(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mod(lhs, rhs))
5219 return @mod(lhs, rhs);5264 return @mod(lhs, rhs);
5220}5265}
5221test mod {5266test mod {
5267 if (@import("builtin").object_format == .coff) return error.SkipZigTest;
5222 const test_mod = binary(mod, .{});5268 const test_mod = binary(mod, .{});
5223 try test_mod.testInts();5269 try test_mod.testInts();
5224 try test_mod.testIntVectors();5270 try test_mod.testIntVectors();
...@@ -5286,7 +5332,7 @@ test shlWithOverflow {...@@ -5286,7 +5332,7 @@ test shlWithOverflow {
5286 try test_shl_with_overflow.testIntVectors();5332 try test_shl_with_overflow.testIntVectors();
5287}5333}
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) {
5290 return lhs == rhs;5336 return lhs == rhs;
5291}5337}
5292test equal {5338test equal {
...@@ -5297,7 +5343,7 @@ test equal {...@@ -5297,7 +5343,7 @@ test equal {
5297 try test_equal.testFloatVectors();5343 try test_equal.testFloatVectors();
5298}5344}
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) {
5301 return lhs != rhs;5347 return lhs != rhs;
5302}5348}
5303test notEqual {5349test notEqual {
...@@ -5308,7 +5354,7 @@ test notEqual {...@@ -5308,7 +5354,7 @@ test notEqual {
5308 try test_not_equal.testFloatVectors();5354 try test_not_equal.testFloatVectors();
5309}5355}
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) {
5312 return lhs < rhs;5358 return lhs < rhs;
5313}5359}
5314test lessThan {5360test lessThan {
...@@ -5319,7 +5365,7 @@ test lessThan {...@@ -5319,7 +5365,7 @@ test lessThan {
5319 try test_less_than.testFloatVectors();5365 try test_less_than.testFloatVectors();
5320}5366}
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) {
5323 return lhs <= rhs;5369 return lhs <= rhs;
5324}5370}
5325test lessThanOrEqual {5371test lessThanOrEqual {
...@@ -5330,7 +5376,7 @@ test lessThanOrEqual {...@@ -5330,7 +5376,7 @@ test lessThanOrEqual {
5330 try test_less_than_or_equal.testFloatVectors();5376 try test_less_than_or_equal.testFloatVectors();
5331}5377}
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) {
5334 return lhs > rhs;5380 return lhs > rhs;
5335}5381}
5336test greaterThan {5382test greaterThan {
...@@ -5341,7 +5387,7 @@ test greaterThan {...@@ -5341,7 +5387,7 @@ test greaterThan {
5341 try test_greater_than.testFloatVectors();5387 try test_greater_than.testFloatVectors();
5342}5388}
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) {
5345 return lhs >= rhs;5391 return lhs >= rhs;
5346}5392}
5347test greaterThanOrEqual {5393test greaterThanOrEqual {
...@@ -5352,20 +5398,24 @@ test greaterThanOrEqual {...@@ -5352,20 +5398,24 @@ test greaterThanOrEqual {
5352 try test_greater_than_or_equal.testFloatVectors();5398 try test_greater_than_or_equal.testFloatVectors();
5353}5399}
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 {
5356 return lhs & rhs;5402 return lhs & rhs;
5357}5403}
5358test bitAnd {5404test bitAnd {
5359 const test_bit_and = binary(bitAnd, .{});5405 const test_bit_and = binary(bitAnd, .{});
5406 try test_bit_and.testBools();
5407 try test_bit_and.testBoolVectors();
5360 try test_bit_and.testInts();5408 try test_bit_and.testInts();
5361 try test_bit_and.testIntVectors();5409 try test_bit_and.testIntVectors();
5362}5410}
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 {
5365 return lhs | rhs;5413 return lhs | rhs;
5366}5414}
5367test bitOr {5415test bitOr {
5368 const test_bit_or = binary(bitOr, .{});5416 const test_bit_or = binary(bitOr, .{});
5417 try test_bit_or.testBools();
5418 try test_bit_or.testBoolVectors();
5369 try test_bit_or.testInts();5419 try test_bit_or.testInts();
5370 try test_bit_or.testIntVectors();5420 try test_bit_or.testIntVectors();
5371}5421}
...@@ -5417,7 +5467,7 @@ test shlExactUnsafe {...@@ -5417,7 +5467,7 @@ test shlExactUnsafe {
5417 try test_shl_exact_unsafe.testIntVectors();5467 try test_shl_exact_unsafe.testIntVectors();
5418}5468}
54195469
5420inline fn shlSat(comptime Type: type, lhs: Type, rhs: Type) Type {5470inline fn shlSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
5421 // workaround https://github.com/ziglang/zig/issues/230345471 // workaround https://github.com/ziglang/zig/issues/23034
5422 if (@inComptime()) {5472 if (@inComptime()) {
5423 // workaround https://github.com/ziglang/zig/issues/231395473 // workaround https://github.com/ziglang/zig/issues/23139
...@@ -5427,17 +5477,19 @@ inline fn shlSat(comptime Type: type, lhs: Type, rhs: Type) Type {...@@ -5427,17 +5477,19 @@ inline fn shlSat(comptime Type: type, lhs: Type, rhs: Type) Type {
5427 @setRuntimeSafety(false);5477 @setRuntimeSafety(false);
5428 return lhs <<| @abs(rhs);5478 return lhs <<| @abs(rhs);
5429}5479}
5430test shlSat {5480test shlSaturate {
5431 const test_shl_sat = binary(shlSat, .{});5481 const test_shl_saturate = binary(shlSaturate, .{});
5432 try test_shl_sat.testInts();5482 try test_shl_saturate.testInts();
5433 try test_shl_sat.testIntVectors();5483 try test_shl_saturate.testIntVectors();
5434}5484}
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 {
5437 return lhs ^ rhs;5487 return lhs ^ rhs;
5438}5488}
5439test bitXor {5489test bitXor {
5440 const test_bit_xor = binary(bitXor, .{});5490 const test_bit_xor = binary(bitXor, .{});
5491 try test_bit_xor.testBools();
5492 try test_bit_xor.testBoolVectors();
5441 try test_bit_xor.testInts();5493 try test_bit_xor.testInts();
5442 try test_bit_xor.testIntVectors();5494 try test_bit_xor.testIntVectors();
5443}5495}
...@@ -5516,7 +5568,7 @@ test reduceXorNotEqual {...@@ -5516,7 +5568,7 @@ test reduceXorNotEqual {
5516 try test_reduce_xor_not_equal.testFloatVectors();5568 try test_reduce_xor_not_equal.testFloatVectors();
5517}5569}
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 {
5520 return @mulAdd(Type, lhs, rhs, rhs);5572 return @mulAdd(Type, lhs, rhs, rhs);
5521}5573}
5522test mulAdd {5574test mulAdd {
test/behavior/x86_64/build.zig+45
...@@ -113,6 +113,51 @@ pub fn build(b: *std.Build) void {...@@ -113,6 +113,51 @@ pub fn build(b: *std.Build) void {
113 .cpu_arch = .x86_64,113 .cpu_arch = .x86_64,
114 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v4 },114 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v4 },
115 },115 },
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 },
116 }) |query| {161 }) |query| {
117 const target = b.resolveTargetQuery(query);162 const target = b.resolveTargetQuery(query);
118 const triple = query.zigTriple(b.allocator) catch @panic("OOM");163 const triple = query.zigTriple(b.allocator) catch @panic("OOM");
test/behavior/x86_64/cast.zig+16-5
...@@ -14546,13 +14546,24 @@ test floatCast {...@@ -14546,13 +14546,24 @@ test floatCast {
14546 try test_float_cast.testFloatVectors();14546 try test_float_cast.testFloatVectors();
14547}14547}
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);
14550 return @intFromFloat(rhs);14551 return @intFromFloat(rhs);
14551}14552}
14552test intFromFloat {14553test intFromFloatUnsafe {
14553 const test_int_from_float = cast(intFromFloat, .{ .compare = .strict });14554 const test_int_from_float_unsafe = cast(intFromFloatUnsafe, .{ .compare = .strict });
14554 try test_int_from_float.testIntsFromFloats();14555 try test_int_from_float_unsafe.testIntsFromFloats();
14555 try test_int_from_float.testIntVectorsFromFloatVectors();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();
14556}14567}
1455714568
14558inline fn floatFromInt(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {14569inline 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 {...@@ -35,10 +35,14 @@ pub fn ChangeScalar(comptime Type: type, comptime NewScalar: type) type {
35 };35 };
36}36}
37pub fn AsSignedness(comptime Type: type, comptime signedness: std.builtin.Signedness) type {37pub fn AsSignedness(comptime Type: type, comptime signedness: std.builtin.Signedness) type {
38 return ChangeScalar(Type, @Type(.{ .int = .{38 return switch (@typeInfo(Scalar(Type))) {
39 .signedness = signedness,39 .int => |int| ChangeScalar(Type, @Type(.{ .int = .{
40 .bits = @typeInfo(Scalar(Type)).int.bits,40 .signedness = signedness,
41 } }));41 .bits = int.bits,
42 } })),
43 .float => Type,
44 else => @compileError(@typeName(Type)),
45 };
42}46}
43pub fn AddOneBit(comptime Type: type) type {47pub fn AddOneBit(comptime Type: type) type {
44 return ChangeScalar(Type, switch (@typeInfo(Scalar(Type))) {48 return ChangeScalar(Type, switch (@typeInfo(Scalar(Type))) {
...@@ -56,7 +60,10 @@ pub fn DoubleBits(comptime Type: type) type {...@@ -56,7 +60,10 @@ pub fn DoubleBits(comptime Type: type) type {
56}60}
57pub fn RoundBitsUp(comptime Type: type, comptime multiple: u16) type {61pub fn RoundBitsUp(comptime Type: type, comptime multiple: u16) type {
58 return ChangeScalar(Type, switch (@typeInfo(Scalar(Type))) {62 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 } }),
60 .float => Scalar(Type),67 .float => Scalar(Type),
61 else => @compileError(@typeName(Type)),68 else => @compileError(@typeName(Type)),
62 });69 });
...@@ -67,61 +74,30 @@ pub fn Log2Int(comptime Type: type) type {...@@ -67,61 +74,30 @@ pub fn Log2Int(comptime Type: type) type {
67pub fn Log2IntCeil(comptime Type: type) type {74pub fn Log2IntCeil(comptime Type: type) type {
68 return ChangeScalar(Type, math.Log2IntCeil(Scalar(Type)));75 return ChangeScalar(Type, math.Log2IntCeil(Scalar(Type)));
69}76}
70// inline to avoid a runtime `@splat`77pub fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
71pub inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
72 return switch (@typeInfo(Type)) {78 return switch (@typeInfo(Type)) {
73 else => scalar,79 else => scalar,
74 .vector => @splat(scalar),80 .vector => @splat(scalar),
75 };81 };
76}82}
77// inline to avoid a runtime `@select`83pub fn sign(rhs: anytype) ChangeScalar(@TypeOf(rhs), bool) {
78inline fn select(cond: anytype, lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {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) {
79 return switch (@typeInfo(@TypeOf(cond))) {95 return switch (@typeInfo(@TypeOf(cond))) {
80 .bool => if (cond) lhs else rhs,96 .bool => if (cond) lhs else rhs,
81 .vector => @select(Scalar(@TypeOf(lhs)), cond, lhs, rhs),97 .vector => @select(Scalar(@TypeOf(lhs)), cond, lhs, rhs),
82 else => @compileError(@typeName(@TypeOf(cond))),98 else => @compileError(@typeName(@TypeOf(cond))),
83 };99 };
84}100}
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
126pub const Compare = enum { strict, relaxed, approx, approx_int, approx_or_overflow };102pub const Compare = enum { strict, relaxed, approx, approx_int, approx_or_overflow };
127// noinline for a more helpful stack trace103// noinline for a more helpful stack trace
...@@ -131,9 +107,9 @@ pub noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comp...@@ -131,9 +107,9 @@ pub noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comp
131 else => expected != actual,107 else => expected != actual,
132 .float => switch (compare) {108 .float => switch (compare) {
133 .strict, .relaxed => {109 .strict, .relaxed => {
134 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));110 const unequal = (expected != actual) & ((expected == expected) | (actual == actual));
135 break :unexpected switch (compare) {111 break :unexpected switch (compare) {
136 .strict => boolOr(unequal, sign(expected) != sign(actual)),112 .strict => unequal | (sign(expected) != sign(actual)),
137 .relaxed => unequal,113 .relaxed => unequal,
138 .approx, .approx_int, .approx_or_overflow => comptime unreachable,114 .approx, .approx_int, .approx_or_overflow => comptime unreachable,
139 };115 };
...@@ -156,10 +132,10 @@ pub noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comp...@@ -156,10 +132,10 @@ pub noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comp
156 break :unexpected switch (compare) {132 break :unexpected switch (compare) {
157 .strict, .relaxed => comptime unreachable,133 .strict, .relaxed => comptime unreachable,
158 .approx, .approx_int => approx_unequal,134 .approx, .approx_int => approx_unequal,
159 .approx_or_overflow => boolAnd(approx_unequal, boolOr(boolAnd(135 .approx_or_overflow => approx_unequal &
160 @abs(expected) != splat(Expected, inf(Expected)),136 (((@abs(expected) != splat(Expected, inf(Expected))) &
161 @abs(actual) != splat(Expected, inf(Expected)),137 (@abs(actual) != splat(Expected, inf(Expected)))) |
162 ), sign(expected) != sign(actual))),138 (sign(expected) != sign(actual))),
163 };139 };
164 },140 },
165 },141 },
test/behavior/x86_64/unary.zig+61-40
...@@ -1,9 +1,11 @@...@@ -1,9 +1,11 @@
1const AsSignedness = math.AsSignedness;
1const checkExpected = math.checkExpected;2const checkExpected = math.checkExpected;
2const Compare = math.Compare;3const Compare = math.Compare;
3const fmax = math.fmax;4const fmax = math.fmax;
4const fmin = math.fmin;5const fmin = math.fmin;
5const Gpr = math.Gpr;6const Gpr = math.Gpr;
6const inf = math.inf;7const inf = math.inf;
8const Log2IntCeil = math.Log2IntCeil;
7const math = @import("math.zig");9const math = @import("math.zig");
8const nan = math.nan;10const nan = math.nan;
9const RoundBitsUp = math.RoundBitsUp;11const RoundBitsUp = math.RoundBitsUp;
...@@ -56,6 +58,10 @@ fn unary(comptime op: anytype, comptime opts: struct {...@@ -56,6 +58,10 @@ fn unary(comptime op: anytype, comptime opts: struct {
56 f128 => libc_name ++ "q",58 f128 => libc_name ++ "q",
57 else => break :libc,59 else => break :libc,
58 },60 },
61 .library_name = switch (@import("builtin").object_format) {
62 else => null,
63 .coff => "compiler_rt",
64 },
59 });65 });
60 switch (@typeInfo(Type)) {66 switch (@typeInfo(Type)) {
61 else => break :expected libc_func(imm_arg),67 else => break :expected libc_func(imm_arg),
...@@ -98,6 +104,10 @@ fn unary(comptime op: anytype, comptime opts: struct {...@@ -98,6 +104,10 @@ fn unary(comptime op: anytype, comptime opts: struct {
98 imm_arg,104 imm_arg,
99 );105 );
100 }106 }
107 fn testBools() !void {
108 try testArgs(bool, false);
109 try testArgs(bool, true);
110 }
101 fn testIntTypes() !void {111 fn testIntTypes() !void {
102 try testArgs(i1, undefined);112 try testArgs(i1, undefined);
103 try testArgs(u1, undefined);113 try testArgs(u1, undefined);
...@@ -4804,16 +4814,27 @@ fn unary(comptime op: anytype, comptime opts: struct {...@@ -4804,16 +4814,27 @@ fn unary(comptime op: anytype, comptime opts: struct {
4804 };4814 };
4805}4815}
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 {
4808 return ~rhs;4827 return ~rhs;
4809}4828}
4810test bitNot {4829test bitNot {
4811 const test_bit_not = unary(bitNot, .{});4830 const test_bit_not = unary(bitNot, .{});
4831 try test_bit_not.testBools();
4832 try test_bit_not.testBoolVectors();
4812 try test_bit_not.testInts();4833 try test_bit_not.testInts();
4813 try test_bit_not.testIntVectors();4834 try test_bit_not.testIntVectors();
4814}4835}
48154836
4816inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {4837inline fn clz(comptime Type: type, rhs: Type) Log2IntCeil(Type) {
4817 return @clz(rhs);4838 return @clz(rhs);
4818}4839}
4819test clz {4840test clz {
...@@ -4822,7 +4843,7 @@ test clz {...@@ -4822,7 +4843,7 @@ test clz {
4822 try test_clz.testIntVectors();4843 try test_clz.testIntVectors();
4823}4844}
48244845
4825inline fn ctz(comptime Type: type, rhs: Type) @TypeOf(@ctz(rhs)) {4846inline fn ctz(comptime Type: type, rhs: Type) Log2IntCeil(Type) {
4826 return @ctz(rhs);4847 return @ctz(rhs);
4827}4848}
4828test ctz {4849test ctz {
...@@ -4831,7 +4852,7 @@ test ctz {...@@ -4831,7 +4852,7 @@ test ctz {
4831 try test_ctz.testIntVectors();4852 try test_ctz.testIntVectors();
4832}4853}
48334854
4834inline fn popCount(comptime Type: type, rhs: Type) @TypeOf(@popCount(rhs)) {4855inline fn popCount(comptime Type: type, rhs: Type) Log2IntCeil(Type) {
4835 return @popCount(rhs);4856 return @popCount(rhs);
4836}4857}
4837test popCount {4858test popCount {
...@@ -4849,7 +4870,7 @@ test byteSwap {...@@ -4849,7 +4870,7 @@ test byteSwap {
4849 try test_byte_swap.testIntVectors();4870 try test_byte_swap.testIntVectors();
4850}4871}
48514872
4852inline fn bitReverse(comptime Type: type, rhs: Type) @TypeOf(@bitReverse(rhs)) {4873inline fn bitReverse(comptime Type: type, rhs: Type) Type {
4853 return @bitReverse(rhs);4874 return @bitReverse(rhs);
4854}4875}
4855test bitReverse {4876test bitReverse {
...@@ -4858,7 +4879,7 @@ test bitReverse {...@@ -4858,7 +4879,7 @@ test bitReverse {
4858 try test_bit_reverse.testIntVectors();4879 try test_bit_reverse.testIntVectors();
4859}4880}
48604881
4861inline fn sqrt(comptime Type: type, rhs: Type) @TypeOf(@sqrt(rhs)) {4882inline fn sqrt(comptime Type: type, rhs: Type) Type {
4862 return @sqrt(rhs);4883 return @sqrt(rhs);
4863}4884}
4864test sqrt {4885test sqrt {
...@@ -4867,7 +4888,7 @@ test sqrt {...@@ -4867,7 +4888,7 @@ test sqrt {
4867 try test_sqrt.testFloatVectors();4888 try test_sqrt.testFloatVectors();
4868}4889}
48694890
4870inline fn sin(comptime Type: type, rhs: Type) @TypeOf(@sin(rhs)) {4891inline fn sin(comptime Type: type, rhs: Type) Type {
4871 return @sin(rhs);4892 return @sin(rhs);
4872}4893}
4873test sin {4894test sin {
...@@ -4876,7 +4897,7 @@ test sin {...@@ -4876,7 +4897,7 @@ test sin {
4876 try test_sin.testFloatVectors();4897 try test_sin.testFloatVectors();
4877}4898}
48784899
4879inline fn cos(comptime Type: type, rhs: Type) @TypeOf(@cos(rhs)) {4900inline fn cos(comptime Type: type, rhs: Type) Type {
4880 return @cos(rhs);4901 return @cos(rhs);
4881}4902}
4882test cos {4903test cos {
...@@ -4885,7 +4906,7 @@ test cos {...@@ -4885,7 +4906,7 @@ test cos {
4885 try test_cos.testFloatVectors();4906 try test_cos.testFloatVectors();
4886}4907}
48874908
4888inline fn tan(comptime Type: type, rhs: Type) @TypeOf(@tan(rhs)) {4909inline fn tan(comptime Type: type, rhs: Type) Type {
4889 return @tan(rhs);4910 return @tan(rhs);
4890}4911}
4891test tan {4912test tan {
...@@ -4894,7 +4915,7 @@ test tan {...@@ -4894,7 +4915,7 @@ test tan {
4894 try test_tan.testFloatVectors();4915 try test_tan.testFloatVectors();
4895}4916}
48964917
4897inline fn exp(comptime Type: type, rhs: Type) @TypeOf(@exp(rhs)) {4918inline fn exp(comptime Type: type, rhs: Type) Type {
4898 return @exp(rhs);4919 return @exp(rhs);
4899}4920}
4900test exp {4921test exp {
...@@ -4903,7 +4924,7 @@ test exp {...@@ -4903,7 +4924,7 @@ test exp {
4903 try test_exp.testFloatVectors();4924 try test_exp.testFloatVectors();
4904}4925}
49054926
4906inline fn exp2(comptime Type: type, rhs: Type) @TypeOf(@exp2(rhs)) {4927inline fn exp2(comptime Type: type, rhs: Type) Type {
4907 return @exp2(rhs);4928 return @exp2(rhs);
4908}4929}
4909test exp2 {4930test exp2 {
...@@ -4912,7 +4933,7 @@ test exp2 {...@@ -4912,7 +4933,7 @@ test exp2 {
4912 try test_exp2.testFloatVectors();4933 try test_exp2.testFloatVectors();
4913}4934}
49144935
4915inline fn log(comptime Type: type, rhs: Type) @TypeOf(@log(rhs)) {4936inline fn log(comptime Type: type, rhs: Type) Type {
4916 return @log(rhs);4937 return @log(rhs);
4917}4938}
4918test log {4939test log {
...@@ -4921,7 +4942,7 @@ test log {...@@ -4921,7 +4942,7 @@ test log {
4921 try test_log.testFloatVectors();4942 try test_log.testFloatVectors();
4922}4943}
49234944
4924inline fn log2(comptime Type: type, rhs: Type) @TypeOf(@log2(rhs)) {4945inline fn log2(comptime Type: type, rhs: Type) Type {
4925 return @log2(rhs);4946 return @log2(rhs);
4926}4947}
4927test log2 {4948test log2 {
...@@ -4930,7 +4951,7 @@ test log2 {...@@ -4930,7 +4951,7 @@ test log2 {
4930 try test_log2.testFloatVectors();4951 try test_log2.testFloatVectors();
4931}4952}
49324953
4933inline fn log10(comptime Type: type, rhs: Type) @TypeOf(@log10(rhs)) {4954inline fn log10(comptime Type: type, rhs: Type) Type {
4934 return @log10(rhs);4955 return @log10(rhs);
4935}4956}
4936test log10 {4957test log10 {
...@@ -4939,7 +4960,7 @@ test log10 {...@@ -4939,7 +4960,7 @@ test log10 {
4939 try test_log10.testFloatVectors();4960 try test_log10.testFloatVectors();
4940}4961}
49414962
4942inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {4963inline fn abs(comptime Type: type, rhs: Type) AsSignedness(Type, .unsigned) {
4943 return @abs(rhs);4964 return @abs(rhs);
4944}4965}
4945test abs {4966test abs {
...@@ -4950,7 +4971,7 @@ test abs {...@@ -4950,7 +4971,7 @@ test abs {
4950 try test_abs.testFloatVectors();4971 try test_abs.testFloatVectors();
4951}4972}
49524973
4953inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) {4974inline fn floor(comptime Type: type, rhs: Type) Type {
4954 return @floor(rhs);4975 return @floor(rhs);
4955}4976}
4956test floor {4977test floor {
...@@ -4959,7 +4980,7 @@ test floor {...@@ -4959,7 +4980,7 @@ test floor {
4959 try test_floor.testFloatVectors();4980 try test_floor.testFloatVectors();
4960}4981}
49614982
4962inline fn ceil(comptime Type: type, rhs: Type) @TypeOf(@ceil(rhs)) {4983inline fn ceil(comptime Type: type, rhs: Type) Type {
4963 return @ceil(rhs);4984 return @ceil(rhs);
4964}4985}
4965test ceil {4986test ceil {
...@@ -4968,7 +4989,7 @@ test ceil {...@@ -4968,7 +4989,7 @@ test ceil {
4968 try test_ceil.testFloatVectors();4989 try test_ceil.testFloatVectors();
4969}4990}
49704991
4971inline fn round(comptime Type: type, rhs: Type) @TypeOf(@round(rhs)) {4992inline fn round(comptime Type: type, rhs: Type) Type {
4972 return @round(rhs);4993 return @round(rhs);
4973}4994}
4974test round {4995test round {
...@@ -4977,7 +4998,7 @@ test round {...@@ -4977,7 +4998,7 @@ test round {
4977 try test_round.testFloatVectors();4998 try test_round.testFloatVectors();
4978}4999}
49795000
4980inline fn trunc(comptime Type: type, rhs: Type) @TypeOf(@trunc(rhs)) {5001inline fn trunc(comptime Type: type, rhs: Type) Type {
4981 return @trunc(rhs);5002 return @trunc(rhs);
4982}5003}
4983test trunc {5004test trunc {
...@@ -4986,7 +5007,7 @@ test trunc {...@@ -4986,7 +5007,7 @@ test trunc {
4986 try test_trunc.testFloatVectors();5007 try test_trunc.testFloatVectors();
4987}5008}
49885009
4989inline fn negate(comptime Type: type, rhs: Type) @TypeOf(-rhs) {5010inline fn negate(comptime Type: type, rhs: Type) Type {
4990 return -rhs;5011 return -rhs;
4991}5012}
4992test negate {5013test negate {
...@@ -5098,40 +5119,40 @@ test reduceXor {...@@ -5098,40 +5119,40 @@ test reduceXor {
5098 try test_reduce_xor.testIntVectors();5119 try test_reduce_xor.testIntVectors();
5099}5120}
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 {
5102 return @reduce(.Min, rhs);5123 return @reduce(.Min, rhs);
5103}5124}
5104test reduceMin {5125test reduceMinUnoptimized {
5105 const test_reduce_min = unary(reduceMin, .{});5126 const test_reduce_min_unoptimized = unary(reduceMinUnoptimized, .{});
5106 try test_reduce_min.testIntVectors();5127 try test_reduce_min_unoptimized.testIntVectors();
5107 try test_reduce_min.testFloatVectors();5128 try test_reduce_min_unoptimized.testFloatVectors();
5108}5129}
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 {
5111 return @reduce(.Max, rhs);5132 return @reduce(.Max, rhs);
5112}5133}
5113test reduceMax {5134test reduceMaxUnoptimized {
5114 const test_reduce_max = unary(reduceMax, .{});5135 const test_reduce_max_unoptimized = unary(reduceMaxUnoptimized, .{});
5115 try test_reduce_max.testIntVectors();5136 try test_reduce_max_unoptimized.testIntVectors();
5116 try test_reduce_max.testFloatVectors();5137 try test_reduce_max_unoptimized.testFloatVectors();
5117}5138}
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 {
5120 return @reduce(.Add, rhs);5141 return @reduce(.Add, rhs);
5121}5142}
5122test reduceAdd {5143test reduceAddUnoptimized {
5123 const test_reduce_add = unary(reduceAdd, .{});5144 const test_reduce_add_unoptimized = unary(reduceAddUnoptimized, .{});
5124 try test_reduce_add.testIntVectors();5145 try test_reduce_add_unoptimized.testIntVectors();
5125 try test_reduce_add.testFloatVectors();5146 try test_reduce_add_unoptimized.testFloatVectors();
5126}5147}
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 {
5129 return @reduce(.Mul, rhs);5150 return @reduce(.Mul, rhs);
5130}5151}
5131test reduceMul {5152test reduceMulUnoptimized {
5132 const test_reduce_mul = unary(reduceMul, .{});5153 const test_reduce_mul_unoptimized = unary(reduceMulUnoptimized, .{});
5133 try test_reduce_mul.testIntVectors();5154 try test_reduce_mul_unoptimized.testIntVectors();
5134 try test_reduce_mul.testFloatVectors();5155 try test_reduce_mul_unoptimized.testFloatVectors();
5135}5156}
51365157
5137inline fn reduceMinOptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {5158inline fn reduceMinOptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
test/tests.zig+9
...@@ -1558,6 +1558,15 @@ const test_targets = blk: {...@@ -1558,6 +1558,15 @@ const test_targets = blk: {
1558 .use_llvm = false,1558 .use_llvm = false,
1559 .use_lld = false,1559 .use_lld = false,
1560 },1560 },
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 },
1561 .{1570 .{
1562 .target = .{1571 .target = .{
1563 .cpu_arch = .x86_64,1572 .cpu_arch = .x86_64,