diff --git a/build.zig b/build.zig index b82279403ae54d53c8454a6280910bf240453326..14685ffd29b3a68fd51a396ded13ee7383eac9c1 100644 --- a/build.zig +++ b/build.zig @@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void { .skip_non_native = skip_non_native, .skip_libc = skip_libc, .use_llvm = use_llvm, - .max_rss = 1.25 * 1024 * 1024 * 1024, + .max_rss = 2 * 1024 * 1024 * 1024, })); test_modules_step.dependOn(tests.addModuleTests(b, .{ diff --git a/lib/std/math/big/int.zig b/lib/std/math/big/int.zig index 0af1a052b60f451c2fbb0e710ff07a2c589b864c..2aa6d02a67f968355112012450cfd42343def702 100644 --- a/lib/std/math/big/int.zig +++ b/lib/std/math/big/int.zig @@ -1793,9 +1793,13 @@ pub const Mutable = struct { /// The upper bound is `calcTwosCompLimbCount(a.len)`. pub fn truncate(r: *Mutable, a: Const, signedness: Signedness, bit_count: usize) void { const req_limbs = calcTwosCompLimbCount(bit_count); + const abs_trunc_a: Const = .{ + .positive = true, + .limbs = a.limbs[0..@min(a.limbs.len, req_limbs)], + }; // Handle 0-bit integers. - if (req_limbs == 0 or a.eqlZero()) { + if (req_limbs == 0 or abs_trunc_a.eqlZero()) { r.set(0); return; } @@ -1810,15 +1814,10 @@ pub const Mutable = struct { // Note, we simply take req_limbs * @bitSizeOf(Limb) as the // target bit count. - r.addScalar(a.abs(), -1); + r.addScalar(abs_trunc_a, -1); // Zero-extend the result - if (req_limbs > r.len) { - @memset(r.limbs[r.len..req_limbs], 0); - } - - // Truncate to required number of limbs. - assert(r.limbs.len >= req_limbs); + @memset(r.limbs[r.len..req_limbs], 0); r.len = req_limbs; // Without truncating, we can already peek at the sign bit of the result here. @@ -1846,16 +1845,10 @@ pub const Mutable = struct { r.normalize(r.len); } } else { - if (a.limbs.len < req_limbs) { - // Integer fits within target bits, no wrapping required. - r.copy(a); - return; - } + r.copy(abs_trunc_a); + // If the integer fits within target bits, no wrapping is required. + if (r.len < req_limbs) return; - r.copy(.{ - .positive = a.positive, - .limbs = a.limbs[0..req_limbs], - }); r.limbs[r.len - 1] &= mask; r.normalize(r.len); diff --git a/lib/std/math/big/int_test.zig b/lib/std/math/big/int_test.zig index a8907fdae05203e2fd0b29885e24f3621a81691a..701dddf0c9165843026fcb158625bfa9340871bb 100644 --- a/lib/std/math/big/int_test.zig +++ b/lib/std/math/big/int_test.zig @@ -1934,6 +1934,31 @@ test "truncate multi unsigned many" { try testing.expect((try b.toInt(i1)) == 0); } +test "truncate to mutable with fewer limbs" { + var res_limbs: [1]Limb = undefined; + var res: Mutable = .{ + .limbs = &res_limbs, + .len = undefined, + .positive = undefined, + }; + res.truncate(.{ .positive = true, .limbs = &.{ 0, 1 } }, .unsigned, @bitSizeOf(Limb)); + try testing.expect(res.eqlZero()); + res.truncate(.{ .positive = true, .limbs = &.{ 0, 1 } }, .signed, @bitSizeOf(Limb)); + try testing.expect(res.eqlZero()); + res.truncate(.{ .positive = false, .limbs = &.{ 0, 1 } }, .unsigned, @bitSizeOf(Limb)); + try testing.expect(res.eqlZero()); + res.truncate(.{ .positive = false, .limbs = &.{ 0, 1 } }, .signed, @bitSizeOf(Limb)); + try testing.expect(res.eqlZero()); + res.truncate(.{ .positive = true, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .unsigned, @bitSizeOf(Limb)); + try testing.expect(res.toConst().orderAgainstScalar(std.math.maxInt(Limb)).compare(.eq)); + res.truncate(.{ .positive = true, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .signed, @bitSizeOf(Limb)); + try testing.expect(res.toConst().orderAgainstScalar(-1).compare(.eq)); + res.truncate(.{ .positive = false, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .unsigned, @bitSizeOf(Limb)); + try testing.expect(res.toConst().orderAgainstScalar(1).compare(.eq)); + res.truncate(.{ .positive = false, .limbs = &.{ std.math.maxInt(Limb), 1 } }, .signed, @bitSizeOf(Limb)); + try testing.expect(res.toConst().orderAgainstScalar(1).compare(.eq)); +} + test "saturate single signed positive" { var a = try Managed.initSet(testing.allocator, 0xBBBB_BBBB); defer a.deinit(); diff --git a/src/Air.zig b/src/Air.zig index 22727adbd9251a2c50e940d16168da41ce9759cb..e323259cbed3d4f21b88ff1854bceb747d39df20 100644 --- a/src/Air.zig +++ b/src/Air.zig @@ -573,7 +573,7 @@ pub const Inst = struct { /// and the operand is not a valid value of this type; i.e. equivalent to /// a safety check based on `.is_named_enum_value` intcast_safe, - /// Truncate higher bits from an integer, resulting in an integer with the same + /// Truncate higher bits from an integer, resulting in an integer type with the same /// sign but an equal or smaller number of bits. /// Uses the `ty_op` field. trunc, diff --git a/src/Sema.zig b/src/Sema.zig index 0e16d92e659df8ae8762f3cffdbe76ca8a940138..4f445145a6cc4695fc7c90c52248e860a0d53056 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -23842,23 +23842,27 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai @tagName(dest_info.signedness), operand_ty.fmt(pt), }); } - if (operand_info.bits < dest_info.bits) { - const msg = msg: { - const msg = try sema.errMsg( - src, - "destination type '{}' has more bits than source type '{}'", - .{ dest_ty.fmt(pt), operand_ty.fmt(pt) }, - ); - errdefer msg.destroy(sema.gpa); - try sema.errNote(src, msg, "destination type has {d} bits", .{ - dest_info.bits, - }); - try sema.errNote(operand_src, msg, "operand type has {d} bits", .{ - operand_info.bits, - }); - break :msg msg; - }; - return sema.failWithOwnedErrorMsg(block, msg); + switch (std.math.order(dest_info.bits, operand_info.bits)) { + .gt => { + const msg = msg: { + const msg = try sema.errMsg( + src, + "destination type '{}' has more bits than source type '{}'", + .{ dest_ty.fmt(pt), operand_ty.fmt(pt) }, + ); + errdefer msg.destroy(sema.gpa); + try sema.errNote(src, msg, "destination type has {d} bits", .{ + dest_info.bits, + }); + try sema.errNote(operand_src, msg, "operand type has {d} bits", .{ + operand_info.bits, + }); + break :msg msg; + }; + return sema.failWithOwnedErrorMsg(block, msg); + }, + .eq => return operand, + .lt => {}, } } diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index 62783419dfb96b74a7dbca11d4bef202840996e1..4479ff01fbe16aad268deb03b55a9a79fafe234b 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { - @setEvalBranchQuota(4_500); + @setEvalBranchQuota(9_600); const pt = cg.pt; const zcu = pt.zcu; const ip = &zcu.intern_pool; @@ -2450,23 +2450,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); switch (air_tags[@intFromEnum(inst)]) { // zig fmt: off - .add, .add_wrap, - .sub, .sub_wrap, => |air_tag| try cg.airBinOp(inst, air_tag), .shr, .shr_exact => try cg.airShlShrBinOp(inst), .shl, .shl_exact => try cg.airShlShrBinOp(inst), - .mul, .mul_wrap, - .rem, - .mod, - .div_float, - .div_trunc, - .div_floor, - .div_exact, => |air_tag| try cg.airMulDivBinOp(inst, air_tag), .add_sat => try cg.airAddSat(inst), @@ -2474,23 +2465,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .mul_sat => try cg.airMulSat(inst), .shl_sat => try cg.airShlSat(inst), - .sin, - .cos, - .tan, - .exp, - .exp2, - .log, - .log2, - .log10, - .round, - => |air_tag| try cg.airUnaryMath(inst, air_tag), - - .floor => try cg.airRound(inst, .{ .mode = .down, .precision = .inexact }), - .ceil => try cg.airRound(inst, .{ .mode = .up, .precision = .inexact }), - .trunc_float => try cg.airRound(inst, .{ .mode = .zero, .precision = .inexact }), - .sqrt => try cg.airSqrt(inst), - .neg => |air_tag| try cg.airFloatSign(inst, air_tag), - .add_with_overflow => try cg.airAddSubWithOverflow(inst), .sub_with_overflow => try cg.airAddSubWithOverflow(inst), .mul_with_overflow => try cg.airMulWithOverflow(inst), @@ -2499,7 +2473,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst), .bitcast => try cg.airBitCast(inst), - .trunc => try cg.airTrunc(inst), .is_non_null => try cg.airIsNonNull(inst), .is_null => try cg.airIsNull(inst), .is_non_err => try cg.airIsNonErr(inst), @@ -2525,7 +2498,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .reduce => try cg.airReduce(inst), .aggregate_init => try cg.airAggregateInit(inst), .prefetch => try cg.airPrefetch(inst), - .mul_add => try cg.airMulAdd(inst), .atomic_store_unordered => try cg.airAtomicStore(inst, .unordered), .atomic_store_monotonic => try cg.airAtomicStore(inst, .monotonic), @@ -2549,16 +2521,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .intcast_safe, => return cg.fail("TODO implement safety_checked_instructions", .{}), - .add_optimized => try cg.airBinOp(inst, .add), - .sub_optimized => try cg.airBinOp(inst, .sub), - .mul_optimized => try cg.airBinOp(inst, .mul), - .div_float_optimized => try cg.airMulDivBinOp(inst, .div_float), - .div_trunc_optimized => try cg.airMulDivBinOp(inst, .div_trunc), - .div_floor_optimized => try cg.airMulDivBinOp(inst, .div_floor), - .div_exact_optimized => try cg.airMulDivBinOp(inst, .div_exact), - .rem_optimized => try cg.airMulDivBinOp(inst, .rem), - .mod_optimized => try cg.airMulDivBinOp(inst, .mod), - .neg_optimized => try cg.airFloatSign(inst, .neg), .reduce_optimized => try cg.airReduce(inst), .int_from_float_optimized => try cg.airIntFromFloat(inst), @@ -2576,6 +2538,8539 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { if (arg != .none) break; } else try cg.airDbgVarArgs(); }, + .add, .add_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .add) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .tmp2y, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .add, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .add, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .add, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .add, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .add, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .add, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .add, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .add, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .sub, .sub_optimized => |air_tag| if (use_old) try cg.airBinOp(inst, .sub) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airBinOp(inst, air_tag); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .sub, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .sub, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .sub, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .tmp2y, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .sub, .dst0x, .src0x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .sub, .dst0x, .src1d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .sub, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .sub, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .sub, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .sub, .dst0x, .src0x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .sub, .dst0x, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, + .{ ._, .f_p, .sub, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .sub, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .sub, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .sub, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .sub, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .sub, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .sub, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, + .{ ._, .f_p, .sub, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .sub, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mul); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .mul, .dst0x, .src0x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .mul, .dst0x, .src1d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .mul, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .mul, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .mul, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .mul, .dst0x, .src0x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .mul, .dst0x, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, + .{ ._, .f_p, .mul, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .mul, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .mul, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .mul, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .mul, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mul, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .mul, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, + .{ ._, .f_p, .mul, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .mul, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) { + else => unreachable, + .div_float, .div_float_optimized => .div_float, + .div_exact, .div_exact_optimized => .div_exact, + }) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .div_exact); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1q, ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .div_trunc, .div_floor => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, air_tag); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) { + else => unreachable, + .div_trunc => .zero, + .div_floor => .down, + })) { + else => unreachable, + inline .zero, .down => |direction| comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ }, + .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ }, + .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ }, + .{ ._, .v_, .cvtps2ph, .tmp1x, .tmp1y, .rm(.{}), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ }, + .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, + .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncf", + .down => "floorf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ }, + .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ }, + .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncf", + .down => "floorf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ }, + .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ }, + .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, + .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ }, + .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ }, + .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ }, + .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__truncx", + .down => "__floorx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__truncx", + .down => "__floorx", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }, + }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .div_trunc_optimized, .div_floor_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) { + else => unreachable, + .div_trunc_optimized => .div_trunc, + .div_floor_optimized => .div_floor, + }) else { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) { + else => unreachable, + .div_trunc_optimized => .zero, + .div_floor_optimized => .down, + })) { + else => unreachable, + inline .zero, .down => |direction| comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ }, + .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__trunch", + .down => "__floorh", + } } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ }, + .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, + .{ ._, ._ss, .round, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncf", + .down => "floorf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ }, + .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ }, + .{ ._, ._ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncf", + .down => "floorf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .div, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ }, + .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ }, + .{ ._, .v_sd, .round, .dst0x, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, + .{ ._, ._sd, .round, .dst0x, .dst0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ }, + .{ ._, .v_pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ }, + .{ ._, ._pd, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ }, + .{ ._, .v_pd, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .round, .tmp1x, .tmp1x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .div, .tmp1x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "trunc", + .down => "floor", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__truncx", + .down => "__floorx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .ld, .src1t, ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_x87, .mem, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__truncx", + .down => "__floorx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__truncx", + .down => "__floorx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "__truncx", + .down => "__floorx", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .div, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp3t), ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .zero => "truncq", + .down => "floorq", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }, + }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .rem, .rem_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .rem) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .rem); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .x87, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .x87, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .x87, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .x87, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, + .mod, .mod_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mod) else fallback: { + const bin_op = air_datas[@intFromEnum(inst)].bin_op; + if (cg.floatBits(cg.typeOf(bin_op.lhs).scalarType(zcu)) == null) break :fallback try cg.airMulDivBinOp(inst, .mod); + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .f16c, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .src0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .src1x, .src1q, ._, ._ }, + .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .src0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .src1x, .src1q, ._, ._ }, + .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .avx, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f32, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .mem(.tmp0d), ._, ._ }, + .{ ._, ._, .@"and", .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._ss, .mov, .src1x, .mem(.tmp0d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f32, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .mem(.tmp0d), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .cmp, .tmp3w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._ss, .mov, .src1x, .mem(.tmp0d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp3d, ._ }, + .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ }, + .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp3d, ._ }, + .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ }, + .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f16, .kind = .{ .reg = .dx } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .movzx, .tmp2d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp2d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ .@"1:", ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .fast_imm16, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .@"and", .tmp1w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .mem(.tmp6d), ._, ._ }, + .{ ._, ._, .cmp, .tmp1w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, + .{ .@"1:", ._, .mov, .tmp1d, .mem(.tmp6d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0x, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .mem(.tmp6d), ._, ._ }, + .{ ._, ._, .cmp, .tmp1w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp6d), .tmp3x, ._, ._ }, + .{ .@"1:", ._, .mov, .tmp1d, .mem(.tmp6d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .{ .type = .f32, .kind = .{ .reg = .edx } }, + .{ .type = .f32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, .v_ss, .add, .dst0x, .src0x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .{ .type = .f32, .kind = .{ .reg = .edx } }, + .{ .type = .f32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._d, .mov, .tmp0d, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp2d, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._d, .mov, .src1x, .tmp0d, ._, ._ }, + .{ ._, ._ss, .add, .dst0x, .src1d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f32, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ss, .mov, .mem(.tmp0d), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ }, + .{ ._, ._, .@"and", .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .cmp, .tmp3d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._ss, .add, .dst0x, .mem(.tmp0d), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .{ .type = .f32, .kind = .{ .reg = .edx } }, + .{ .type = .f32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_d, .mov, .tmp3d, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp3d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp2x, .tmp3d, ._, ._ }, + .{ ._, .v_ss, .add, .tmp1x, .tmp1x, .tmp2d, ._ }, + .{ .@"1:", .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .{ .type = .f32, .kind = .{ .reg = .edx } }, + .{ .type = .f32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._d, .mov, .tmp3d, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp5d, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp3d, ._, ._ }, + .{ ._, ._, .@"and", .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .cmp, .tmp6d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp2x, .tmp3d, ._, ._ }, + .{ ._, ._ss, .add, .tmp1x, .tmp2d, ._, ._ }, + .{ .@"1:", ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp5d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp5d, .mem(.tmp4d), ._, ._ }, + .{ ._, ._, .cmp, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._ss, .add, .tmp1x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ .@"1:", ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .{ .type = .f64, .kind = .{ .reg = .rcx } }, + .{ .type = .f64, .kind = .{ .reg = .rdx } }, + .{ .type = .f64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_q, .mov, .tmp0q, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .v_q, .mov, .tmp3q, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, + .{ ._, ._, .cmp, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_q, .mov, .src1q, .tmp0q, ._, ._ }, + .{ ._, .v_sd, .add, .dst0x, .src0x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .{ .type = .f64, .kind = .{ .reg = .rcx } }, + .{ .type = .f64, .kind = .{ .reg = .rdx } }, + .{ .type = .f64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._q, .mov, .tmp0q, .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, + .{ ._, ._, .cmp, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._q, .mov, .src1x, .tmp0q, ._, ._ }, + .{ ._, ._sd, .add, .dst0x, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f64, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .{ .type = .f64, .kind = .mem }, + .{ .type = .f64, .kind = .{ .reg = .rdx } }, + .{ .type = .f64, .kind = .{ .reg = .rax } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .movl, .mem(.tmp0q), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, ._ps, .movl, .mem(.tmp2q), .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .tmp3q, ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .mem(.tmp2q), ._, ._ }, + .{ ._, ._, .cmp, .tmp4q, .tmp3q, ._, ._ }, + .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .mem(.tmp2q), ._, ._, ._ }, + .{ ._, .f_, .ld, .mem(.tmp0q), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2q), ._, ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ps, .movl, .dst0x, .mem(.tmp2q), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .{ .type = .f64, .kind = .{ .reg = .rcx } }, + .{ .type = .f64, .kind = .{ .reg = .rdx } }, + .{ .type = .f64, .kind = .{ .reg = .rax } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_q, .mov, .tmp3q, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .v_q, .mov, .tmp6q, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp7q, .tmp3q, ._, ._ }, + .{ ._, ._, .@"and", .tmp7q, .tmp5q, ._, ._ }, + .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ }, + .{ ._, ._, .cmp, .tmp7q, .tmp5q, ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_q, .mov, .tmp2x, .tmp3q, ._, ._ }, + .{ ._, .v_sd, .add, .tmp1x, .tmp1x, .tmp2q, ._ }, + .{ .@"1:", .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .{ .type = .f64, .kind = .{ .reg = .rcx } }, + .{ .type = .f64, .kind = .{ .reg = .rdx } }, + .{ .type = .f64, .kind = .{ .reg = .rax } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._q, .mov, .tmp3q, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, ._q, .mov, .tmp6q, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp7q, .tmp3q, ._, ._ }, + .{ ._, ._, .@"and", .tmp7q, .tmp5q, ._, ._ }, + .{ ._, ._, .xor, .tmp7q, .tmp6q, ._, ._ }, + .{ ._, ._, .cmp, .tmp7q, .tmp5q, ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._q, .mov, .tmp2x, .tmp3q, ._, ._ }, + .{ ._, ._sd, .add, .tmp1x, .tmp2q, ._, ._ }, + .{ .@"1:", ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } }, + .{ .type = .f64, .kind = .{ .reg = .rdx } }, + .{ .type = .f64, .kind = .mem }, + .{ .type = .f64, .kind = .{ .reg = .rax } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, ._ps, .movl, .mem(.tmp5q), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6q, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._, .xor, .tmp6q, .mem(.tmp5q), ._, ._ }, + .{ ._, ._, .cmp, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .mem(.tmp5q), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp5q), ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .mem(.tmp5q), ._, ._ }, + .{ .@"1:", ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ }, + .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, .x87, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, .v_dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ }, + .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, .x87, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._dqa, .mov, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .memd(.tmp1w, 16 + 8), ._, ._ }, + .{ ._, ._, .@"and", .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, .x87, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .f_, .ld, .dst0t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp4w, .memd(.tmp1w, 16 + 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4w, .memd(.tmp1w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp1q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp1t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ }, + .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, .x87, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ }, + .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ }, + .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, .x87, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ }, + .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp5d, .memd(.tmp2w, 16 + 8), ._, ._ }, + .{ ._, ._, .@"and", .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, .x87, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .size = 16 * 2, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_, .ld, .tmp4t, ._, ._, ._ }, + .{ ._, .f_p, .st, .mem(.tmp2t), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._, .@"and", .tmp5w, .memd(.tmp2w, 16 + 8), ._, ._ }, + .{ ._, ._, .xor, .tmp5w, .memd(.tmp2w, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp2q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp5w, .sa(.src0, .add_smin), ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .ld, .memd(.tmp2t, 16), ._, ._, ._ }, + .{ ._, .f_p, .add, ._, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f128, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rcx } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .vp_q, .extr, .tmp3q, .dst0x, .ui(1), ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, + .{ ._, .v_q, .mov, .tmp3q, .dst0x, ._, ._ }, + .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f128, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rcx } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .p_q, .extr, .tmp3q, .dst0x, .ui(1), ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, + .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ }, + .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f128, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rcx } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .mem(.tmp0x), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .p_d, .shuf, .src1x, .dst0x, .ui(0b11_10_11_10), ._ }, + .{ ._, ._q, .mov, .tmp3q, .src1x, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp3q, ._, ._ }, + .{ ._, ._q, .mov, .tmp3q, .dst0x, ._, ._ }, + .{ ._, ._, .cmp, .tmp3q, .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._dqa, .mov, .src1x, .mem(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f128, .kind = .mem }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .mem }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .mem(.tmp0x), .src1x, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp3x), .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .memd(.tmp0q, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .memd(.tmp3q, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp3q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ }, + .{ ._, ._nae, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._ps, .mova, .src1x, .mem(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rcx } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .vp_q, .extr, .tmp5q, .tmp1x, .ui(1), ._ }, + .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ }, + .{ ._, .v_q, .mov, .tmp5q, .tmp1x, ._, ._ }, + .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rcx } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .p_q, .extr, .tmp5q, .tmp1x, .ui(1), ._ }, + .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ }, + .{ ._, ._q, .mov, .tmp5q, .tmp1x, ._, ._ }, + .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rcx } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, .p_d, .shuf, .tmp2x, .tmp1x, .ui(0b11_10_11_10), ._ }, + .{ ._, ._q, .mov, .tmp5q, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp6q, .tmp5q, ._, ._ }, + .{ ._, ._q, .mov, .tmp5q, .tmp1x, ._, ._ }, + .{ ._, ._, .cmp, .tmp5q, .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } }, + .{ .type = .f128, .kind = .{ .reg = .rdx } }, + .{ .type = .f128, .kind = .mem }, + .{ .type = .f128, .kind = .{ .reg = .rax } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.src0, .add_smin), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp5x), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._, .@"and", .tmp6q, .memiad(.src1q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .xor, .tmp6q, .memd(.tmp5q, 8), ._, ._ }, + .{ ._, ._, .cmp, .mem(.tmp5q), .si(1), ._, ._ }, + .{ ._, ._, .sbb, .tmp6q, .tmp4q, ._, ._ }, + .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp7d, ._, ._, ._ }, + .{ .@"1:", ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); + }, .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else { const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data; @@ -2584,7 +11079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{ .patterns = &.{ - .{ .src = .{ .to_gpr, .simm32 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2593,7 +11088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2602,7 +11097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 2 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2611,7 +11106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 2 + 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2621,7 +11116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 4 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2630,7 +11125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 4 + 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .each = .{ .once = &.{ @@ -2641,7 +11136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .elem_size_is = 8 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2651,7 +11146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .elem_size_is = 8 + 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .each = .{ .once = &.{ @@ -2661,7 +11156,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.po2_elem_size}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_mut_gpr } }, + .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .clobbers = .{ .eflags = true }, @@ -2671,7 +11166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -2700,7 +11195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; if (ty_pl.ty.toType().elemType2(zcu).hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{ty_pl.ty.toType()}, &ops, comptime &.{ .{ .patterns = &.{ - .{ .src = .{ .to_gpr, .simm32 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -2709,7 +11204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_mut_gpr } }, + .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .clobbers = .{ .eflags = true }, @@ -2720,7 +11215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 2 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_mut_gpr } }, + .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .clobbers = .{ .eflags = true }, @@ -2731,7 +11226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 2 + 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -2743,7 +11238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 4 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_mut_gpr } }, + .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .clobbers = .{ .eflags = true }, @@ -2754,7 +11249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .elem_size_is = 4 + 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -2767,7 +11262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .elem_size_is = 8 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_mut_gpr } }, + .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .clobbers = .{ .eflags = true }, @@ -2779,7 +11274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .elem_size_is = 8 + 1 }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -2791,7 +11286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.po2_elem_size}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_mut_gpr } }, + .{ .src = .{ .to_gpr, .to_mut_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src1 }}, .clobbers = .{ .eflags = true }, @@ -2802,7 +11297,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -2830,9 +11325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, + .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2841,11 +11336,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, + .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2856,9 +11351,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2867,11 +11362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2882,11 +11377,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, + .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2895,11 +11390,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._l, .cmov, .dst0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, + .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2910,11 +11405,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, + .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2923,11 +11418,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._b, .cmov, .dst0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, + .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2938,11 +11433,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, + .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2951,11 +11446,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._l, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, + .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2966,11 +11461,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2979,11 +11474,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._b, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -2994,11 +11489,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, + .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -3008,11 +11503,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, + .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -3023,11 +11518,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -3037,11 +11532,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -3052,9 +11547,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_signed_int, .any_signed_int }, + .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -3087,9 +11582,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_signed_int, .any_signed_int }, + .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -3122,9 +11617,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, + .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -3155,9 +11650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, + .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -3191,11 +11686,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3206,11 +11702,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -3221,11 +11718,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3240,11 +11738,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3255,9 +11754,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3285,9 +11785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3315,9 +11816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3345,9 +11847,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3379,9 +11882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3411,9 +11915,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3443,9 +11948,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3474,9 +11980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3506,11 +12013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_mmx, .mem } }, - .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mmx, .to_mmx } }, + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -3521,11 +12029,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3536,11 +12045,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -3551,11 +12061,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3566,9 +12077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3596,9 +12108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3626,9 +12139,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3656,9 +12170,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3688,9 +12203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3720,9 +12236,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3751,9 +12268,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3783,11 +12301,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_mmx, .mem } }, - .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mmx, .to_mmx } }, + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -3798,11 +12317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3813,11 +12333,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -3828,11 +12349,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -3843,9 +12365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3873,9 +12396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3903,9 +12427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3933,9 +12458,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3963,9 +12489,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -3995,11 +12522,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4010,11 +12538,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -4025,11 +12554,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -4041,11 +12571,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4056,9 +12587,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4086,9 +12618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4116,9 +12649,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4146,9 +12680,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4177,9 +12712,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4207,9 +12743,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4239,11 +12776,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4254,11 +12792,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -4269,11 +12808,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4288,11 +12828,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4303,9 +12844,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4333,9 +12875,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4363,9 +12906,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4393,9 +12937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4427,9 +12972,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4457,9 +13003,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4489,11 +13036,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4504,11 +13052,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -4519,11 +13068,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -4553,11 +13103,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4568,9 +13119,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4598,9 +13150,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4628,9 +13181,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4658,9 +13212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4698,9 +13253,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4728,9 +13284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4760,9 +13317,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4774,11 +13332,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, @@ -4802,9 +13361,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -4816,9 +13376,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4848,9 +13409,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4880,9 +13442,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4913,9 +13476,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4944,9 +13508,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -4976,11 +13541,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -5007,11 +13573,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -5039,11 +13606,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -5070,9 +13638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5106,9 +13675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5142,9 +13712,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5180,9 +13751,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5211,9 +13783,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5240,9 +13813,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, + .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5279,9 +13852,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, + .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5318,9 +13891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, + .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5355,9 +13928,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, + .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5395,13 +13968,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ - .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, - .{ .type = .f16, .kind = .{ .rc = .sse } }, + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -5414,8 +13988,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, - .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) }, - .{ ._, .v_ss, .max, .dst0x, .tmp0x, .dst0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp1x, .dst0d, .dst0x, .vp(.unord) }, + .{ ._, .v_ss, .max, .dst0x, .tmp0d, .dst0x, ._ }, .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, } }, @@ -5424,9 +13998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -5450,16 +14025,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ - .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, - .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -5482,16 +14058,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ - .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -5507,22 +14084,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) }, .{ ._, .v_ps, .max, .dst0y, .tmp0y, .dst0y, ._ }, .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, } }, }, .{ .required_features = .{ .f16c, null, null, null }, .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -5547,9 +14125,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -5580,9 +14159,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -5614,9 +14194,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -5649,9 +14230,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -5687,9 +14269,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .f32, .kind = .{ .rc = .sse } }, @@ -5704,8 +14287,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, - .{ ._, .v_ss, .max, .dst0x, .src1x, .src0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) }, + .{ ._, .v_ss, .max, .dst0x, .src1x, .src0d, ._ }, .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, } }, }, .{ @@ -5713,15 +14296,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, - .{ ._, ._ss, .max, .dst0x, .src0x, ._, ._ }, - .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._ss, .max, .dst0x, .src0d, ._, ._ }, + .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ }, .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -5729,9 +14313,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, @@ -5747,8 +14332,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, - .{ ._, ._ss, .max, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._ss, .max, .tmp0x, .src0d, ._, ._ }, + .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ }, .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -5758,9 +14343,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, @@ -5784,17 +14370,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, - .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, + .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, .{ ._, ._ps, .max, .dst0x, .src0x, ._, ._ }, - .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ }, .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -5802,11 +14389,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, @@ -5823,7 +14411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, .{ ._, ._ps, .max, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -5833,9 +14421,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, @@ -5859,9 +14448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5892,9 +14482,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5915,7 +14506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, @@ -5926,9 +14517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -5949,7 +14541,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._ps, .max, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ }, .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, @@ -5962,9 +14554,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .f64, .kind = .{ .rc = .sse } }, @@ -5979,8 +14572,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, - .{ ._, .v_sd, .max, .dst0x, .src1x, .src0x, ._ }, + .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) }, + .{ ._, .v_sd, .max, .dst0x, .src1x, .src0q, ._ }, .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, } }, }, .{ @@ -5988,15 +14581,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, - .{ ._, ._sd, .max, .dst0x, .src0x, ._, ._ }, - .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._sd, .max, .dst0x, .src0q, ._, ._ }, + .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ }, .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -6004,9 +14598,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, @@ -6022,8 +14617,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, - .{ ._, ._sd, .max, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._sd, .max, .tmp0x, .src0q, ._, ._ }, + .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ }, .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -6033,9 +14628,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -6059,9 +14655,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, @@ -6085,17 +14682,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, - .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, + .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, .{ ._, ._pd, .max, .dst0x, .src0x, ._, ._ }, - .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ }, .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -6103,11 +14701,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, @@ -6124,7 +14723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, .{ ._, ._pd, .max, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -6134,9 +14733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, @@ -6160,9 +14760,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -6193,9 +14794,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -6216,7 +14818,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, + .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, @@ -6227,9 +14829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -6250,7 +14853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._pd, .max, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, + .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ }, .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, @@ -6263,9 +14866,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -6297,11 +14901,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -6331,11 +14936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -6371,11 +14977,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -6411,9 +15018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -6448,9 +15056,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -6491,9 +15100,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -6534,9 +15144,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -6560,9 +15171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -6592,9 +15204,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -6624,9 +15237,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -6668,9 +15282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, + .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6679,11 +15293,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, + .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6694,9 +15308,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6705,11 +15319,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6720,11 +15334,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, + .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6733,11 +15347,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ge, .cmov, .dst0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, + .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6748,11 +15362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, + .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6761,11 +15375,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ae, .cmov, .dst0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, + .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6776,11 +15390,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, + .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6789,11 +15403,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ge, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, + .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6804,11 +15418,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6817,11 +15431,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ae, .cmov, .dst0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6832,11 +15446,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, + .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6846,11 +15460,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, + .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6861,11 +15475,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6875,11 +15489,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -6890,9 +15504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_signed_int, .any_signed_int }, + .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -6925,9 +15539,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_signed_int, .any_signed_int }, + .src_constraints = .{ .any_signed_int, .any_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -6960,9 +15574,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, + .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -6993,9 +15607,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_unsigned_int, .any_unsigned_int }, + .src_constraints = .{ .any_unsigned_int, .any_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .reg = .rsi } }, @@ -7029,11 +15643,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7044,11 +15659,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -7059,11 +15675,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7078,11 +15695,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7093,9 +15711,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7123,9 +15742,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7153,9 +15773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7183,9 +15804,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7217,9 +15839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7249,9 +15872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7281,9 +15905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7312,9 +15937,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7344,11 +15970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_mmx, .mem } }, - .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mmx, .to_mmx } }, + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -7359,11 +15986,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7374,11 +16002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -7389,11 +16018,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7404,9 +16034,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7434,9 +16065,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7464,9 +16096,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7494,9 +16127,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7526,9 +16160,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7558,9 +16193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7589,9 +16225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7621,11 +16258,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_mmx, .mem } }, - .{ .src = .{ .mem, .to_mut_mmx }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mmx, .to_mmx } }, + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -7636,11 +16274,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7651,11 +16290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -7666,11 +16306,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7681,9 +16322,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7711,9 +16353,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7741,9 +16384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7771,9 +16415,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7801,9 +16446,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7833,11 +16479,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7848,11 +16495,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -7863,11 +16511,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7880,11 +16529,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -7895,9 +16545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7925,9 +16576,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7955,9 +16607,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -7985,9 +16638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8017,9 +16671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8047,9 +16702,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8079,11 +16735,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8094,11 +16751,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -8109,11 +16767,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8128,11 +16787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8143,9 +16803,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8173,9 +16834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8203,9 +16865,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8233,9 +16896,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8267,9 +16931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8297,9 +16962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8329,11 +16995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8344,11 +17011,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -8359,11 +17027,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -8393,11 +17062,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8408,9 +17078,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8438,9 +17109,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8468,9 +17140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8498,9 +17171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8538,9 +17212,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8568,9 +17243,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8600,11 +17276,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8616,11 +17293,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, @@ -8644,11 +17322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -8660,9 +17339,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8692,9 +17372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8724,9 +17405,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8757,9 +17439,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8788,9 +17471,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8820,11 +17504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -8851,11 +17536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -8883,11 +17569,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -8914,9 +17601,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8950,9 +17638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -8986,9 +17675,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9024,9 +17714,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9055,9 +17746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9084,9 +17776,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, + .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9123,9 +17815,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int }, + .src_constraints = .{ .any_scalar_signed_int, .any_scalar_signed_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9162,9 +17854,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, + .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9199,9 +17891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int }, + .src_constraints = .{ .any_scalar_unsigned_int, .any_scalar_unsigned_int, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9239,9 +17931,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, @@ -9258,8 +17951,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, - .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0x, .vp(.unord) }, - .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp1x, .dst0x, .dst0d, .vp(.unord) }, + .{ ._, .v_ss, .min, .dst0x, .tmp0x, .dst0d, ._ }, .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, } }, @@ -9268,9 +17961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -9294,16 +17988,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ - .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, - .{ .type = .vector_4_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -9326,16 +18021,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ - .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -9351,22 +18047,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_ps, .cmp, .tmp1y, .dst0y, .dst0y, .vp(.unord) }, .{ ._, .v_ps, .min, .dst0y, .tmp0y, .dst0y, ._ }, .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0y, .rm(.{}), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, } }, }, .{ .required_features = .{ .f16c, null, null, null }, .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -9391,9 +18088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -9424,9 +18122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -9458,9 +18157,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -9493,9 +18193,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -9531,9 +18232,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .f32, .kind = .{ .rc = .sse } }, @@ -9548,8 +18250,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, - .{ ._, .v_ss, .min, .dst0x, .src1x, .src0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .src0x, .src0d, .vp(.unord) }, + .{ ._, .v_ss, .min, .dst0x, .src1x, .src0d, ._ }, .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, } }, }, .{ @@ -9557,15 +18259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, - .{ ._, ._ss, .min, .dst0x, .src0x, ._, ._ }, - .{ ._, ._ss, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._ss, .min, .dst0x, .src0d, ._, ._ }, + .{ ._, ._ss, .cmp, .src0x, .src0d, .sp(.unord), ._ }, .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -9573,9 +18276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, @@ -9591,8 +18295,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, - .{ ._, ._ss, .min, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._ss, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._ss, .min, .tmp0x, .src0d, ._, ._ }, + .{ ._, ._ss, .cmp, .dst0x, .src0d, .sp(.ord), ._ }, .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -9602,9 +18306,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, @@ -9628,17 +18333,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, - .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, + .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._ps, .mova, .dst0x, .src1x, ._, ._ }, .{ ._, ._ps, .min, .dst0x, .src0x, ._, ._ }, - .{ ._, ._ps, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._ps, .cmp, .src0x, .src0x, .sp(.unord), ._ }, .{ ._, ._ps, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -9646,11 +18352,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, @@ -9667,7 +18374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, ._ps, .mova, .tmp0x, .src1x, ._, ._ }, .{ ._, ._ps, .min, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._ps, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._ps, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, .{ ._, ._ps, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._ps, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -9677,9 +18384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, @@ -9703,9 +18411,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9736,9 +18445,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9759,7 +18469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, @@ -9770,9 +18480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -9793,7 +18504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._ps, .min, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, .{ ._, ._ps, .@"and", .tmp3x, .tmp1x, ._, ._ }, .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ }, @@ -9806,9 +18517,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .f64, .kind = .{ .rc = .sse } }, @@ -9823,8 +18535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0x, .vp(.unord) }, - .{ ._, .v_sd, .min, .dst0x, .src1x, .src0x, ._ }, + .{ ._, .v_sd, .cmp, .tmp0x, .src0x, .src0q, .vp(.unord) }, + .{ ._, .v_sd, .min, .dst0x, .src1x, .src0q, ._ }, .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .src1x, .tmp0x }, } }, }, .{ @@ -9832,15 +18544,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, - .{ ._, ._sd, .min, .dst0x, .src0x, ._, ._ }, - .{ ._, ._sd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._sd, .min, .dst0x, .src0q, ._, ._ }, + .{ ._, ._sd, .cmp, .src0x, .src0q, .sp(.unord), ._ }, .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -9848,9 +18561,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, @@ -9866,8 +18580,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, - .{ ._, ._sd, .min, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._sd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._sd, .min, .tmp0x, .src0q, ._, ._ }, + .{ ._, ._sd, .cmp, .dst0x, .src0q, .sp(.ord), ._ }, .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -9877,9 +18591,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -9903,9 +18618,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, @@ -9929,17 +18645,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .mem } }, - .{ .src = .{ .mem, .{ .to_reg = .xmm0 } }, .commute = .{ 0, 1 } }, - .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .mem, .none } }, + .{ .src = .{ .mem, .{ .to_reg = .xmm0 }, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .to_sse, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ .{ ._, ._pd, .mova, .dst0x, .src1x, ._, ._ }, .{ ._, ._pd, .min, .dst0x, .src0x, ._, ._ }, - .{ ._, ._pd, .cmp, .src0x, .src0x, .vp(.unord), ._ }, + .{ ._, ._pd, .cmp, .src0x, .src0x, .sp(.unord), ._ }, .{ ._, ._pd, .blendv, .dst0x, .src1x, .src0x, ._ }, } }, }, .{ @@ -9947,11 +18664,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, @@ -9968,7 +18686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, ._pd, .mova, .tmp0x, .src1x, ._, ._ }, .{ ._, ._pd, .min, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._pd, .cmp, .dst0x, .src0x, .vp(.ord), ._ }, + .{ ._, ._pd, .cmp, .dst0x, .src0x, .sp(.ord), ._ }, .{ ._, ._pd, .@"and", .tmp0x, .dst0x, ._, ._ }, .{ ._, ._pd, .andn, .dst0x, .src1x, ._, ._ }, .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, @@ -9978,9 +18696,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, @@ -10004,9 +18723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10037,9 +18757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10060,7 +18781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ }, + .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ }, .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, @@ -10071,9 +18792,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10094,7 +18816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, .{ ._, ._pd, .min, .tmp3x, .tmp1x, ._, ._ }, - .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.ord), ._ }, + .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, .{ ._, ._pd, .@"and", .tmp3x, .tmp1x, ._, ._ }, .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ }, @@ -10107,9 +18829,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -10141,11 +18864,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -10173,11 +18897,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -10211,11 +18936,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -10249,9 +18975,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10284,9 +19011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10325,9 +19053,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10366,9 +19095,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -10392,9 +19122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -10424,9 +19155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -10456,9 +19188,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -10530,17 +19263,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { })) { else => unreachable, inline .@"and", .@"or", .xor => |mir_tag| comptime &.{ .{ - .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } }, + .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .imm8 } }, - .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .imm8 } }, - .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .imm8, .none } }, + .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .imm8, .none } }, + .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10548,17 +19281,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, mir_tag, .dst0b, .src1b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .size = .word }, .{ .size = .word } }, + .src_constraints = .{ .{ .size = .word }, .{ .size = .word }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .imm16 } }, - .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .imm16 } }, - .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .imm16, .none } }, + .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .imm16, .none } }, + .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10566,17 +19299,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, mir_tag, .dst0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword } }, + .src_constraints = .{ .{ .size = .dword }, .{ .size = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .imm32 } }, - .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .imm32 } }, - .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .imm32, .none } }, + .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .imm32, .none } }, + .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10585,17 +19318,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } }, + .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .simm32 } }, - .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .simm32 } }, - .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .simm32, .none } }, + .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .simm32, .none } }, + .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10604,11 +19337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword } }, + .src_constraints = .{ .{ .size = .qword }, .{ .size = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem } }, - .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm } }, + .{ .src = .{ .to_mut_mm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mm, .to_mm, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -10616,11 +19349,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } }, + .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .mem } }, - .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm } }, + .{ .src = .{ .to_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -10628,11 +19361,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } }, + .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -10640,11 +19373,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword } }, + .src_constraints = .{ .{ .size = .xword }, .{ .size = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -10652,11 +19385,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } }, + .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -10664,11 +19397,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword } }, + .src_constraints = .{ .{ .size = .yword }, .{ .size = .yword }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -10676,9 +19409,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } }, + .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10703,9 +19436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword } }, + .src_constraints = .{ .{ .multiple_size = .yword }, .{ .multiple_size = .yword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10730,9 +19463,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } }, + .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10757,9 +19490,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } }, + .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10784,9 +19517,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword } }, + .src_constraints = .{ .{ .multiple_size = .xword }, .{ .multiple_size = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10811,9 +19544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } }, + .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10837,9 +19570,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword } }, + .src_constraints = .{ .{ .multiple_size = .qword }, .{ .multiple_size = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -10879,20 +19612,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); var res: [1]Temp = undefined; cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ - .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._, .not, .dst0b, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10900,20 +19633,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_umax), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._, .not, .dst0w, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10921,20 +19654,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_umax), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ .{ ._, ._, .not, .dst0d, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -10943,10 +19676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -10954,10 +19687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -10966,10 +19699,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_mm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_mm, .none, .none } }, }, .dst_temps = .{.{ .rc = .mmx }}, .each = .{ .once = &.{ @@ -10978,9 +19711,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .none } }, + .{ .src = .{ .to_mut_mm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11000,10 +19733,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_xmm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_xmm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11012,9 +19745,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .xword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .none } }, + .{ .src = .{ .to_xmm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11034,10 +19767,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_xmm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_xmm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11046,9 +19779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .xword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .none } }, + .{ .src = .{ .to_mut_xmm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11068,9 +19801,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .int = .xword }, .any }, + .src_constraints = .{ .{ .int = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .none } }, + .{ .src = .{ .to_mut_xmm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11090,10 +19823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11102,9 +19835,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .yword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11124,10 +19857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any }, + .src_constraints = .{ .{ .signed_or_exact_int = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11136,9 +19869,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .yword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11158,9 +19891,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11187,9 +19920,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11214,9 +19947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11243,9 +19976,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11270,9 +20003,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11297,9 +20030,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11325,9 +20058,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11351,9 +20084,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .signed_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11378,9 +20111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11405,9 +20138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11437,9 +20170,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11464,9 +20197,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11492,9 +20225,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11518,9 +20251,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11549,9 +20282,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11576,9 +20309,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11608,9 +20341,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11634,9 +20367,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11665,9 +20398,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11693,9 +20426,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11724,9 +20457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11751,9 +20484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -11781,10 +20514,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any }, + .src_constraints = .{ .{ .signed_int_or_full_vec = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_mm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_mm, .none, .none } }, }, .dst_temps = .{.{ .rc = .mmx }}, .each = .{ .once = &.{ @@ -11793,9 +20526,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int_vec = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .none } }, + .{ .src = .{ .to_mut_mm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11815,10 +20548,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any }, + .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_xmm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_xmm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11827,9 +20560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any }, + .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .none } }, + .{ .src = .{ .to_xmm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11849,10 +20582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any }, + .src_constraints = .{ .{ .signed_int_or_full_vec = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_xmm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_xmm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11861,9 +20594,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any }, + .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .none } }, + .{ .src = .{ .to_mut_xmm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11883,9 +20616,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .vec = .xword }, .any }, + .src_constraints = .{ .{ .vec = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .none } }, + .{ .src = .{ .to_mut_xmm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11905,10 +20638,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any }, + .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11917,9 +20650,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any }, + .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11939,10 +20672,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any }, + .src_constraints = .{ .{ .signed_int_or_full_vec = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -11951,9 +20684,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any }, + .src_constraints = .{ .{ .unsigned_int_vec = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .none } }, + .{ .src = .{ .to_ymm, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -11974,7 +20707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .required_features = .{ .@"64bit", null, null, null }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -12000,7 +20733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -12090,10 +20823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .exact_signed_int = 1 }, .any }, + .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12101,10 +20834,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .add, .dst0b, .si(1), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .exact_signed_int = 1 }, .any }, + .src_constraints = .{ .{ .exact_signed_int = 1 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12112,10 +20845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._c, .in, .dst0b, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any }, + .src_constraints = .{ .{ .exact_unsigned_int = 1 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12124,10 +20857,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12138,10 +20871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12153,9 +20886,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, - .src_constraints = .{ .{ .exact_int = 16 }, .any }, + .src_constraints = .{ .{ .exact_int = 16 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12164,10 +20897,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .exact_int = 16 }, .any }, + .src_constraints = .{ .{ .exact_int = 16 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12176,9 +20909,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12189,9 +20922,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12201,10 +20934,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12214,9 +20947,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, - .src_constraints = .{ .{ .exact_int = 32 }, .any }, + .src_constraints = .{ .{ .exact_int = 32 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12225,10 +20958,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .exact_int = 32 }, .any }, + .src_constraints = .{ .{ .exact_int = 32 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12237,9 +20970,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12250,9 +20983,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .false_deps_lzcnt_tzcnt, .lzcnt, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12262,10 +20995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12275,9 +21008,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .exact_int = 64 }, .any }, + .src_constraints = .{ .{ .exact_int = 64 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12286,10 +21019,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .exact_int = 64 }, .any }, + .src_constraints = .{ .{ .exact_int = 64 }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12298,10 +21031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12313,9 +21046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12325,10 +21058,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12338,10 +21071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12365,10 +21098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .signed_po2_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12393,10 +21126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12422,10 +21155,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12450,10 +21183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12466,10 +21199,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .signed_po2_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12483,10 +21216,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12512,10 +21245,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12539,10 +21272,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sbb, .dst0b, .tmp0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12564,10 +21297,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_po2_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_po2_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12590,10 +21323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12617,10 +21350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12644,9 +21377,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12658,9 +21391,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12674,9 +21407,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12689,9 +21422,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12703,9 +21436,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12719,9 +21452,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12733,10 +21466,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12746,9 +21479,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, @@ -12771,10 +21504,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, @@ -12797,9 +21530,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12811,9 +21544,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12827,9 +21560,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12842,9 +21575,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -12856,9 +21589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12872,9 +21605,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12886,10 +21619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sbb, .dst0b, .src0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12899,9 +21632,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12924,10 +21657,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -12950,9 +21683,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -12964,10 +21697,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, @@ -12993,9 +21726,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -13008,9 +21741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -13022,10 +21755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, @@ -13051,9 +21784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -13066,10 +21799,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_po2_or_exact_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -13080,10 +21813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, @@ -13108,10 +21841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, @@ -13134,9 +21867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13164,9 +21897,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13193,9 +21926,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13224,9 +21957,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13254,9 +21987,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13284,9 +22017,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13313,9 +22046,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13344,9 +22077,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .unsigned_or_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13374,9 +22107,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13407,9 +22140,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13439,9 +22172,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13471,9 +22204,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13504,9 +22237,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13536,9 +22269,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -13568,9 +22301,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13597,9 +22330,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13626,9 +22359,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13655,9 +22388,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13684,9 +22417,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13713,9 +22446,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .lzcnt, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13742,9 +22475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, .slow_incdec, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13771,9 +22504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13800,9 +22533,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13832,9 +22565,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13864,9 +22597,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13896,9 +22629,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13928,9 +22661,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13958,9 +22691,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .byte }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -13989,9 +22722,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14021,9 +22754,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14053,9 +22786,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14085,9 +22818,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14117,9 +22850,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14147,9 +22880,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .word }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14178,9 +22911,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14210,9 +22943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14242,9 +22975,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14274,9 +23007,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .bsf_bsr_0_clobbers_result, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14306,9 +23039,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14336,9 +23069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .dword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14367,9 +23100,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, .slow_incdec }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14399,9 +23132,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, .bsf_bsr_0_clobbers_result, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14431,9 +23164,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, .slow_incdec, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14463,9 +23196,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14495,9 +23228,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14526,9 +23259,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .any }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14557,10 +23290,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14597,10 +23330,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14636,10 +23369,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14675,10 +23408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14715,10 +23448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14754,10 +23487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14793,10 +23526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14833,10 +23566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14872,10 +23605,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14911,10 +23644,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14951,10 +23684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .lzcnt, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -14990,10 +23723,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int_is = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15043,13 +23776,2324 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { const extra = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data; switch (extra.compareOperator()) { .eq, .neq => {}, - else => break :fallback try cg.airCmpVector(inst), + .lt, .lte, .gte, .gt => if (cg.floatBits(cg.typeOf(extra.lhs).childType(zcu)) == null) + break :fallback try cg.airCmpVector(inst), } var ops = try cg.tempsFromOperands(inst, .{ extra.lhs, extra.rhs }); var res: [1]Temp = undefined; - switch (extra.compareOperator()) { - .lt => unreachable, - .lte => unreachable, + (err: switch (extra.compareOperator()) { + .lt, .lte, .gte, .gt => |cmp_op| { + switch (cmp_op) { + else => unreachable, + .lt, .lte => {}, + .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]), + } + break :err cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) { + else => unreachable, + .lt, .gt => .l, + .lte, .gte => .le, + })) { + else => unreachable, + inline .l, .le => |cc| comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .sse, .mem, .none } }, + .{ .src = .{ .mem, .sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .extra_temps = .{ + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .cmp, .dst0y, .dst0y, .tmp0y, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ + .ref = .src0, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ + .ref = .src0, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ + .ref = .src0, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ + .ref = .src0, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + } }, + }, .{ + .required_features = .{ .f16c, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .tmp3y, .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, + .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, + .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, + .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, + .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, + .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, + .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, + .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, + .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, + .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .{ .type = .f32, .kind = .mem }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, + .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, + .{ ._, ._, .add, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .{ .type = .f32, .kind = .mem }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp4d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp1x, .mem(.tmp7d), ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp7d), .tmp4d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp7d), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ }, + .{ ._, ._, .@"test", .tmp4d, .tmp4d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp6b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp6d, .tmp5b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp6d, ._, ._ }, + .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, + .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memsi(.src0w, .@"2", .tmp0), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0) }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, + .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, + .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp3x, .memsi(.src1w, .@"2", .tmp0), .ui(0), ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, + .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .{ .type = .f32, .kind = .mem }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ }, + .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, + .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .{ .type = .f32, .kind = .mem }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp5d, .memsi(.src0w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .mem(.tmp8d), ._, ._ }, + .{ ._, ._, .movzx, .tmp5d, .memsi(.src1w, .@"2", .tmp0), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp8d), .tmp5d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp8d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ }, + .{ ._, ._c, .in, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, + .{ ._, ._r, .sh, .tmp5d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp5, -8), .tmp1q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .cmp, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_ps, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp1q, ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, + .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ }, + .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, + .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ }, + .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ }, + .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ }, + .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ }, + .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ }, + .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, + .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ }, + .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ }, + .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ }, + .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ }, + .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp3y, .memiad(.src0y, .tmp0, .add_size, 32), ._, ._ }, + .{ ._, .v_pd, .cmp, .tmp2y, .tmp2y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memiad(.src1y, .tmp0, .add_size, 32), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_pd, .movmsk, .tmp4d, .tmp2y, ._, ._ }, + .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ }, + .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ }, + .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ }, + .{ ._, ._c, .in, .tmp1q, ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), .vp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }) }, + .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ }, + .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { + else => unreachable, + .l => .lt, + .le => .le, + }), ._ }, + .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ }, + .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .cmov, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, + .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, + .{ ._, .fromCond(switch (cc) { + else => unreachable, + .l => .a, + .le => .ae, + }), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .cmov, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, + .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, + .{ ._, .fromCond(switch (cc) { + else => unreachable, + .l => .a, + .le => .ae, + }), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .u8, .kind = .{ .reg = .ah } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1q, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ }, + switch (cc) { + else => unreachable, + .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ }, + .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ }, + }, + .{ ._, .fromCond(switch (cc) { + else => unreachable, + .l => .z, + .le => .nc, + }), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .cmov, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, + .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, + .{ ._, .fromCond(switch (cc) { + else => unreachable, + .l => .a, + .le => .ae, + }), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .cmov, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_p, .ucomi, .tmp4t, .tmp5t, ._, ._ }, + .{ ._, .f_p, .st, .tmp5t, ._, ._, ._ }, + .{ ._, .fromCond(switch (cc) { + else => unreachable, + .l => .a, + .le => .ae, + }), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .rcx } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .u8, .kind = .{ .reg = .ah } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ }, + .{ ._, .f_pp, .ucom, ._, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ }, + switch (cc) { + else => unreachable, + .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ }, + .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ }, + }, + .{ ._, .fromCond(switch (cc) { + else => unreachable, + .l => .z, + .le => .nc, + }), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .dst_constraints = .{.{ .bool_vec = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u32, .kind = .{ .reg = .edx } }, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ }, + .{ ._, ._, .@"test", .tmp5d, .tmp5d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp7b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ }, + .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, + .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, + .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, + .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, + .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, .slow_incdec, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, + .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .u8, .kind = .{ .reg = .cl } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ }, + .{ ._, ._, .@"test", .tmp6d, .tmp6d, ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp8b, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ }, + .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ }, + .{ ._, ._c, .in, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp6d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memid(.dst0q, .tmp6, -8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, + } }, + } }, + }); + }, .eq, .neq => |cmp_op| cg.select(&res, &.{ty_pl.ty.toType()}, &ops, switch (@as(Condition, switch (cmp_op) { else => unreachable, .eq => .e, @@ -15058,11 +26102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { else => unreachable, inline .e, .ne => |cc| comptime &.{ .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15078,11 +26122,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15098,11 +26142,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15118,11 +26162,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15138,11 +26182,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .mem } }, - .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm } }, + .{ .src = .{ .to_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15158,11 +26202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .mem } }, - .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm } }, + .{ .src = .{ .to_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15178,11 +26222,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .mem } }, - .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm } }, + .{ .src = .{ .to_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15198,11 +26242,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .mem } }, - .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm } }, + .{ .src = .{ .to_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ .kind = .all, @@ -15218,11 +26262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15238,11 +26282,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15258,11 +26302,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15278,11 +26322,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15298,11 +26342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem } }, - .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm } }, + .{ .src = .{ .to_mut_mm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mm, .to_mm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15318,11 +26362,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem } }, - .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm } }, + .{ .src = .{ .to_mut_mm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mm, .to_mm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15338,11 +26382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem } }, - .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm } }, + .{ .src = .{ .to_mut_mm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mm, .to_mm, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, @@ -15357,17 +26401,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte } }, + .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .imm8 } }, - .{ .src = .{ .imm8, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .imm8 } }, - .{ .src = .{ .imm8, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .imm8, .none } }, + .{ .src = .{ .imm8, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .imm8, .none } }, + .{ .src = .{ .imm8, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -15382,17 +26426,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, } }, }, .{ - .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word } }, + .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .imm16 } }, - .{ .src = .{ .imm16, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .imm16 } }, - .{ .src = .{ .imm16, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .imm16, .none } }, + .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .imm16, .none } }, + .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -15407,17 +26451,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, } }, }, .{ - .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword } }, + .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .imm32 } }, - .{ .src = .{ .imm32, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .imm32 } }, - .{ .src = .{ .imm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .imm32, .none } }, + .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .imm32, .none } }, + .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -15433,17 +26477,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword } }, + .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .simm32 } }, - .{ .src = .{ .simm32, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .simm32 } }, - .{ .src = .{ .simm32, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mut_mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mut_mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .mem } }, - .{ .src = .{ .mem, .to_mut_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_gpr, .to_gpr } }, + .{ .src = .{ .mut_mem, .simm32, .none } }, + .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .simm32, .none } }, + .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -15458,9 +26502,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, } }, }, .{ - .src_constraints = .{ .any_bool_vec, .any_bool_vec }, + .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15497,9 +26541,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15542,9 +26586,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15589,9 +26633,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15634,9 +26678,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15703,9 +26747,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15748,9 +26792,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15795,9 +26839,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15864,9 +26908,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15933,9 +26977,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -15978,9 +27022,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16025,9 +27069,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16094,9 +27138,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16163,9 +27207,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, .mmx, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16208,9 +27252,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, .mmx, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16281,9 +27325,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, .mmx, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16355,10 +27399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .dst_constraints = .{.{ .bool_vec = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16387,10 +27431,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .dst_constraints = .{.{ .bool_vec = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16419,10 +27463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .dst_constraints = .{.{ .bool_vec = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16452,10 +27496,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .dst_constraints = .{.{ .bool_vec = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16484,10 +27528,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .any_scalar_int, .any_scalar_int }, + .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any }, .dst_constraints = .{.{ .bool_vec = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -16523,10 +27567,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16556,10 +27600,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16589,10 +27633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16623,10 +27667,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16656,10 +27700,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .any_scalar_int, .any_scalar_int }, + .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -16697,10 +27741,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .dst_constraints = .{.{ .bool_vec = .qword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16731,10 +27775,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } }, + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, .dst_constraints = .{.{ .bool_vec = .qword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16764,10 +27808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } }, + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, .dst_constraints = .{.{ .bool_vec = .qword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16798,10 +27842,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, .dst_constraints = .{.{ .bool_vec = .qword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16832,10 +27876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_int, .any_scalar_int }, + .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any }, .dst_constraints = .{.{ .bool_vec = .qword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -16872,9 +27916,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._b, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } }, + .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -16918,9 +27962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .{ .scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, @@ -16941,7 +27986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, - .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0x, .vp(switch (cc) { + .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .tmp0d, .vp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -16952,12 +27997,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, - .{ .src = .{ .sse, .mem } }, - .{ .src = .{ .mem, .sse } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .sse, .mem, .none } }, + .{ .src = .{ .mem, .sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .kind = .{ .rc = .sse } }, @@ -16989,12 +28035,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .mem, .mem, .none } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .kind = .{ .rc = .sse } }, @@ -17026,11 +28073,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, @@ -17038,7 +28086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .info = .{ .kind = .all, .scalar = .dword }, } }}, .each = .{ .once = &.{ - .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { + .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -17049,18 +28097,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, .scalar = .dword }, } }}, .each = .{ .once = &.{ - .{ ._, ._ss, .cmp, .dst0x, .src1x, .vp(switch (cc) { + .{ ._, ._ss, .cmp, .dst0x, .src1d, .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -17071,11 +28120,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, @@ -17094,18 +28144,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, .scalar = .dword }, } }}, .each = .{ .once = &.{ - .{ ._, ._ps, .cmp, .dst0x, .src1x, .vp(switch (cc) { + .{ ._, ._ps, .cmp, .dst0x, .src1x, .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -17116,11 +28167,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, @@ -17139,11 +28191,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, @@ -17151,7 +28204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .info = .{ .kind = .all, .scalar = .qword }, } }}, .each = .{ .once = &.{ - .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { + .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -17162,18 +28215,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, .scalar = .qword }, } }}, .each = .{ .once = &.{ - .{ ._, ._sd, .cmp, .dst0x, .src1x, .vp(switch (cc) { + .{ ._, ._sd, .cmp, .dst0x, .src1q, .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -17184,11 +28238,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, @@ -17207,18 +28262,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .mem } }, - .{ .src = .{ .mem, .to_mut_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_sse, .to_sse } }, + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ .kind = .all, .scalar = .qword }, } }}, .each = .{ .once = &.{ - .{ ._, ._pd, .cmp, .dst0x, .src1x, .vp(switch (cc) { + .{ ._, ._pd, .cmp, .dst0x, .src1x, .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -17229,11 +28285,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, @@ -17252,15 +28309,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, .unused, .unused, @@ -17290,15 +28348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_f16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, .unused, .unused, @@ -17328,21 +28387,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -17373,21 +28429,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -17418,21 +28471,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -17464,21 +28514,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -17510,21 +28557,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -17558,21 +28602,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -17606,9 +28647,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -17616,11 +28658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -17660,9 +28698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -17670,11 +28709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -17714,9 +28749,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -17724,11 +28760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -17769,9 +28801,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -17779,11 +28812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -17824,9 +28853,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -17834,11 +28864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -17881,9 +28907,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -17891,11 +28918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqhf2", - .ne => "__nehf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -17938,9 +28961,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -17975,9 +28999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18012,9 +29037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18034,12 +29060,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, .{ ._, ._ps, .mova, .tmp3x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, - .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { + .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, }), ._ }, - .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) { + .{ ._, ._ps, .cmp, .tmp3x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -18057,9 +29083,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18078,14 +29105,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { + .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, }), ._ }, .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ }, .{ ._, ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, 16), ._, ._ }, - .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .vp(switch (cc) { + .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, 16), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -18103,9 +29130,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18125,7 +29153,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, .{ .@"0:", ._ps, .mova, .tmp2x, .memiad(.src0x, .tmp0, .add_size, -16), ._, ._ }, - .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .vp(switch (cc) { + .{ ._, ._ps, .cmp, .tmp2x, .memiad(.src1x, .tmp0, .add_size, -16), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -18136,7 +29164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ }, .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ }, .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { + .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -18151,9 +29179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18197,9 +29226,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18243,9 +29273,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18292,9 +29323,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18314,7 +29346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, .{ .@"0:", ._pd, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) { + .{ ._, ._pd, .cmp, .tmp3x, .memia(.src1x, .tmp0, .add_size), .sp(switch (cc) { else => unreachable, .e => .eq, .ne => .neq, @@ -18341,9 +29373,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18351,8 +29384,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, }, @@ -18400,9 +29433,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18410,8 +29444,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, }, @@ -18459,17 +29493,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .u32, .kind = .{ .reg = .rcx } }, .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .{ .type = .u8, .kind = .{ .reg = .ah } }, .unused, .unused, @@ -18509,9 +29544,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18568,9 +29604,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18627,9 +29664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -18677,10 +29715,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18688,11 +29727,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -18722,10 +29757,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18733,11 +29769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -18767,10 +29799,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18778,11 +29811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -18812,10 +29841,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18823,11 +29853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -18857,10 +29883,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18868,11 +29895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -18902,10 +29925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .dst_constraints = .{.{ .bool_vec = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18913,11 +29937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u32, .kind = .{ .reg = .edx } }, @@ -18947,9 +29967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -18958,11 +29979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -19001,9 +30018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -19012,11 +30030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -19055,9 +30069,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -19066,11 +30081,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -19109,9 +30120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -19120,11 +30132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -19163,9 +30171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -19174,11 +30183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -19217,9 +30222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -19228,11 +30234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (cc) { - else => unreachable, - .e => "__eqtf2", - .ne => "__netf2", - } } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } }, .{ .type = .i32, .kind = .{ .reg = .eax } }, .{ .type = .u8, .kind = .{ .reg = .cl } }, .{ .type = .u64, .kind = .{ .reg = .rdx } }, @@ -19267,31 +30269,1469 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp1), .tmp2q, ._, ._ }, } }, } }, - }) catch |err| switch (err) { - error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{ - @tagName(air_tag), - @tagName(extra.compareOperator()), - cg.typeOf(extra.lhs).fmt(pt), - ops[0].tracking(cg), - ops[1].tracking(cg), - }), - else => |e| return e, - }, - .gte => unreachable, - .gt => unreachable, - } + }), + }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {s} {} {} {}", .{ + @tagName(air_tag), + @tagName(extra.compareOperator()), + cg.typeOf(extra.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + }), + else => |e| return e, + }; try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg); }, + .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else { + const un_op = air_datas[@intFromEnum(inst)].un_op; + var ops = try cg.tempsFromOperands(inst, .{un_op}); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .dst0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .sqrt, .dst0x, .dst0x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .sqrt, .dst0y, .dst0y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .sqrt, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .sqrt, .dst0x, .dst0x, .src0d, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .sqrt, .dst0x, .src0x, .src0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .sqrt, .dst0x, .src0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .sqrt, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .sqrt, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .sqrt, .dst0y, .src0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .sqrt, .dst0x, .dst0x, .src0q, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .sqrt, .dst0x, .src0x, .src0q, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .sqrt, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .sqrt, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .sqrt, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .sqrt, .dst0y, .src0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .sqrt, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .sqrt, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .sqrt, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_, .sqrt, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ + @tagName(air_tag), + cg.typeOf(un_op).fmt(pt), + ops[0].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{un_op}, &ops, cg); + }, + .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |air_tag| if (use_old) try cg.airUnaryMath(inst, air_tag) else { + const un_op = air_datas[@intFromEnum(inst)].un_op; + var ops = try cg.tempsFromOperands(inst, .{un_op}); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (air_tag) { + else => unreachable, + inline .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |name| comptime &.{ .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }, + }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ + @tagName(air_tag), + cg.typeOf(un_op).fmt(pt), + ops[0].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{un_op}, &ops, cg); + }, .abs => |air_tag| if (use_old) try cg.airAbs(inst) else { const ty_op = air_datas[@intFromEnum(inst)].ty_op; var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); var res: [1]Temp = undefined; cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -19301,9 +31741,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19313,9 +31753,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .neg, .dst0b, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19326,9 +31766,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -19339,9 +31779,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -19351,9 +31791,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19363,9 +31803,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19376,10 +31816,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .int = .dword }, .any }, + .src_constraints = .{ .{ .int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -19389,9 +31829,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._s, .cmov, .dst0d, .src0d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .dword }, .any }, + .src_constraints = .{ .{ .int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19401,9 +31841,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .dword }, .any }, + .src_constraints = .{ .{ .int = .dword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19414,10 +31854,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .{ .int = .qword }, .any }, + .src_constraints = .{ .{ .int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -19428,9 +31868,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .qword }, .any }, + .src_constraints = .{ .{ .int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19441,9 +31881,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .qword }, .any }, + .src_constraints = .{ .{ .int = .qword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .clobbers = .{ .eflags = true }, @@ -19454,9 +31894,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_int, .any }, + .src_constraints = .{ .any_int, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19487,10 +31927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, .ssse3, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_mm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_mm, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, .each = .{ .once = &.{ @@ -19498,10 +31938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, .ssse3, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_mm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_mm, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, .each = .{ .once = &.{ @@ -19509,10 +31949,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, .ssse3, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_mm, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_mm, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .mmx } }}, .each = .{ .once = &.{ @@ -19520,10 +31960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .ssse3, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19531,10 +31971,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .ssse3, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19542,10 +31982,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .ssse3, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19553,10 +31993,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19564,10 +32004,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19575,10 +32015,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19586,10 +32026,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19597,10 +32037,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19608,10 +32048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -19619,9 +32059,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19645,9 +32085,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19671,9 +32111,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19697,9 +32137,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19723,9 +32163,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19749,9 +32189,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19775,9 +32215,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .ssse3, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19801,9 +32241,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .ssse3, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19827,9 +32267,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .ssse3, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19853,9 +32293,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, .ssse3, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19879,9 +32319,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, .ssse3, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19905,9 +32345,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .mmx, .ssse3, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19931,9 +32371,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, .slow_incdec, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19960,9 +32400,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -19989,9 +32429,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20017,9 +32457,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20046,9 +32486,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20073,9 +32513,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20102,9 +32542,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .cmov, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20129,9 +32569,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20158,9 +32598,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .cmov, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20186,9 +32626,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20215,9 +32655,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20252,9 +32692,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20274,9 +32714,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20296,9 +32736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20318,9 +32758,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20340,9 +32780,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20362,9 +32802,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20384,10 +32824,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_x87, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -20408,9 +32848,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, + .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20430,9 +32870,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, + .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20452,9 +32892,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_any_float = .xword }, .any }, + .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20474,9 +32914,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_any_float = .yword }, .any }, + .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20496,9 +32936,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_any_float = .yword }, .any }, + .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, @@ -20518,9 +32958,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20545,9 +32985,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20573,9 +33013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20600,9 +33040,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20628,9 +33068,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20655,9 +33095,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20682,9 +33122,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20710,9 +33150,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -20746,6 +33186,1576 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }; try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); }, + .floor, .ceil, .trunc_float => |air_tag| if (use_old) try cg.airRound(inst, .{ .direction = switch (air_tag) { + else => unreachable, + .floor => .down, + .ceil => .up, + .trunc_float => .zero, + }, .precision = .inexact }) else { + const un_op = air_datas[@intFromEnum(inst)].un_op; + var ops = try cg.tempsFromOperands(inst, .{un_op}); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(un_op)}, &ops, switch (@as(bits.RoundMode.Direction, switch (air_tag) { + else => unreachable, + .floor => .down, + .ceil => .up, + .trunc_float => .zero, + })) { + else => unreachable, + inline .down, .up, .zero => |direction| comptime &.{ .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ss, .round, .dst0x, .dst0x, .dst0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorh", + .up => "__ceilh", + .zero => "__trunch", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .round, .dst0x, .dst0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .round, .dst0y, .dst0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .round, .tmp1y, .tmp1y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorh", + .up => "__ceilh", + .zero => "__trunch", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorh", + .up => "__ceilh", + .zero => "__trunch", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorh", + .up => "__ceilh", + .zero => "__trunch", + } } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorh", + .up => "__ceilh", + .zero => "__trunch", + } } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .round, .dst0x, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .round, .dst0x, .src0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._ss, .round, .dst0x, .src0d, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorf", + .up => "ceilf", + .zero => "truncf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{ + .direction = direction, + .precision = .inexact, + }), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{ + .direction = direction, + .precision = .inexact, + }), ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorf", + .up => "ceilf", + .zero => "truncf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorf", + .up => "ceilf", + .zero => "truncf", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .round, .dst0x, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .round, .dst0x, .src0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }) }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._sd, .round, .dst0x, .src0q, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floor", + .up => "ceil", + .zero => "trunc", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .round, .dst0x, .src0x, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .round, .dst0y, .src0y, .rm(.{ .direction = direction, .precision = .inexact }), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .round, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), .rm(.{ + .direction = direction, + .precision = .inexact, + }), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{ + .direction = direction, + .precision = .inexact, + }), ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floor", + .up => "ceil", + .zero => "trunc", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floor", + .up => "ceil", + .zero => "trunc", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floor", + .up => "ceil", + .zero => "trunc", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorx", + .up => "__ceilx", + .zero => "__truncx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorx", + .up => "__ceilx", + .zero => "__truncx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorx", + .up => "__ceilx", + .zero => "__truncx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorx", + .up => "__ceilx", + .zero => "__truncx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorx", + .up => "__ceilx", + .zero => "__truncx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "__floorx", + .up => "__ceilx", + .zero => "__truncx", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorq", + .up => "ceilq", + .zero => "truncq", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorq", + .up => "ceilq", + .zero => "truncq", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorq", + .up => "ceilq", + .zero => "truncq", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) { + else => unreachable, + .down => "floorq", + .up => "ceilq", + .zero => "truncq", + } } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }, + }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ + @tagName(air_tag), + cg.typeOf(un_op).fmt(pt), + ops[0].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{un_op}, &ops, cg); + }, + .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else { + const un_op = air_datas[@intFromEnum(inst)].un_op; + var ops = try cg.tempsFromOperands(inst, .{un_op}); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .f_, .chs, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } }, + .{ .kind = .{ .rc = .sse } }, + .{ .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ + @tagName(air_tag), + cg.typeOf(un_op).fmt(pt), + ops[0].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{un_op}, &ops, cg); + }, .cmp_lt, .cmp_lt_optimized, @@ -20773,9 +34783,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }) { inline false, true => |strict| comptime &.{ .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, + .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, @@ -20800,9 +34810,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, + .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -20827,10 +34837,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, + .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = switch (strict) { true => .a, @@ -20842,10 +34852,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, + .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = switch (strict) { true => .a, @@ -20857,10 +34867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = switch (strict) { true => .a, @@ -20872,10 +34882,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = switch (strict) { true => .a, @@ -20887,13 +34897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, .cmov, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -20915,13 +34925,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sahf, .x87, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .{ .type = .u8, .kind = .{ .reg = .ah } }, .unused, .unused, @@ -20944,13 +34954,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .{ .type = .u8, .kind = .{ .reg = .ah } }, .unused, .unused, @@ -20976,10 +34986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, .cmov, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -21003,9 +35013,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sahf, .x87, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21032,10 +35042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sahf, .x87, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21061,9 +35071,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21093,10 +35103,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_x87, .to_x87 }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21125,9 +35135,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } }, + .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -21205,15 +35215,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { switch (Condition.fromCompareOperatorUnsigned(cmp_op)) { else => unreachable, inline .e, .ne => |cc| comptime &.{.{ - .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte } }, + .src_constraints = .{ .{ .size = .byte }, .{ .size = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm8 } }, - .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .imm8 } }, - .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr } }, - .{ .src = .{ .to_gpr, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm8, .none } }, + .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .imm8, .none } }, + .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none } }, + .{ .src = .{ .to_gpr, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .clobbers = .{ .eflags = true }, @@ -21255,9 +35265,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }) { inline false, true => |optimized| comptime &.{ .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, + .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .extra_temps = .{ .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, @@ -21278,13 +35288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ }, - .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .word }, .{ .float = .word } }, + .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -21306,11 +35316,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, + .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .cc = switch (optimized) { false => .z_and_np, @@ -21322,11 +35332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword } }, + .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .cc = switch (optimized) { false => .z_and_np, @@ -21338,11 +35348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .cc = switch (optimized) { false => .z_and_np, @@ -21354,11 +35364,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem } }, - .{ .src = .{ .mem, .to_sse }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .cc = switch (optimized) { false => .z_and_np, @@ -21370,13 +35380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, .cmov, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -21398,13 +35408,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sahf, .x87, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .{ .type = .u8, .kind = .{ .reg = .ah } }, .unused, .unused, @@ -21427,13 +35437,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword } }, + .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st6 } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .{ .type = .u8, .kind = .{ .reg = .ah } }, .unused, .unused, @@ -21466,11 +35476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, .cmov, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -21494,9 +35504,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sahf, .x87, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, + .{ .src = .{ .mem, .mem, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21523,11 +35533,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sahf, .x87, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21553,9 +35563,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .mem } }, + .{ .src = .{ .mem, .mem, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21592,11 +35602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte } }, + .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any }, .patterns = &.{ - .{ .src = .{ .to_x87, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_x87 } }, - .{ .src = .{ .to_x87, .to_x87 } }, + .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_x87, .none } }, + .{ .src = .{ .to_x87, .to_x87, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st6 } }, @@ -21631,9 +35641,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword } }, + .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 } } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -21895,10 +35905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -21906,10 +35916,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -21917,10 +35927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -21928,10 +35938,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -21952,10 +35962,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -21971,18 +35981,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, - .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ }, - .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22008,10 +36018,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22037,10 +36047,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22067,10 +36077,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22098,10 +36108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22122,10 +36132,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22151,10 +36161,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22180,10 +36190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22210,10 +36220,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22242,10 +36252,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -22254,10 +36264,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -22265,11 +36275,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -22278,13 +36288,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -22301,11 +36311,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -22313,11 +36323,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -22325,11 +36335,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -22337,10 +36347,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -22356,18 +36366,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, - .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ }, - .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -22383,22 +36393,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ }, - .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_size), ._, ._ }, - .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -22418,10 +36428,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22444,10 +36454,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22470,10 +36480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22496,10 +36506,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22526,10 +36536,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22556,10 +36566,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22587,10 +36597,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -22619,11 +36629,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_x87, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -22643,10 +36653,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -22670,11 +36680,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_x87, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, }, .extra_temps = .{ .{ .type = .f80, .kind = .{ .reg = .st7 } }, @@ -22694,10 +36704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -22721,10 +36731,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22745,10 +36755,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22774,10 +36784,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22803,10 +36813,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22833,10 +36843,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22864,10 +36874,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22888,10 +36898,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22917,10 +36927,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22946,10 +36956,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22975,10 +36985,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -22999,10 +37009,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23028,10 +37038,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23057,10 +37067,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23085,11 +37095,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23110,10 +37120,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23140,10 +37150,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23170,10 +37180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23215,10 +37225,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { var res: [1]Temp = undefined; cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23226,11 +37236,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23238,11 +37248,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23250,10 +37260,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23274,10 +37284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -23293,18 +37303,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23331,10 +37341,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23361,10 +37371,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23392,10 +37402,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23404,11 +37414,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23417,11 +37427,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23430,11 +37440,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, @@ -23458,10 +37468,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23482,10 +37492,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -23501,22 +37511,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ }, - .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp2y, ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ }, - .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_size, 32), .tmp2y, ._, ._ }, + .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23543,10 +37553,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23573,10 +37583,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23604,15 +37614,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .f16c, .x87, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, .{ .type = .f32, .kind = .mem }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f32, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -23628,11 +37638,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23653,10 +37663,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23684,10 +37694,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23715,10 +37725,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23747,10 +37757,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23771,10 +37781,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23801,10 +37811,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23831,10 +37841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -23862,10 +37872,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -23874,10 +37884,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23885,11 +37895,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .rc = .sse }}, .each = .{ .once = &.{ @@ -23898,13 +37908,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f32, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -23921,11 +37931,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23933,11 +37943,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23945,11 +37955,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -23957,10 +37967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -23976,18 +37986,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24003,22 +38013,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f32, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -24038,13 +38048,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f32, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -24061,14 +38071,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f32, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -24078,6 +38088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, @@ -24087,10 +38098,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24111,10 +38122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24140,10 +38151,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24169,10 +38180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24198,13 +38209,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -24221,14 +38232,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -24238,6 +38249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, @@ -24247,10 +38259,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none } }, + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24271,10 +38283,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24300,10 +38312,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24329,10 +38341,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ @@ -24359,10 +38371,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -24385,10 +38397,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -24411,10 +38423,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -24437,10 +38449,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -24467,10 +38479,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -24497,10 +38509,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .size = 16, .alignment = .@"16" }, .extra_temps = .{ @@ -24545,8 +38557,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{ .dst_constraints = .{.{ .int = .dword }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, @@ -24554,15 +38566,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_gpr, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .dst_constraints = .{.{ .int = .byte }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -24571,7 +38583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .word }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -24580,7 +38592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .dword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -24590,7 +38602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -24600,7 +38612,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .reg = .rsi } }, @@ -24622,30 +38634,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24653,10 +38665,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24664,10 +38676,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -24675,10 +38687,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -24686,10 +38698,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24697,10 +38709,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24708,10 +38720,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24725,6 +38737,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, @@ -24733,10 +38746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24750,6 +38763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, @@ -24759,10 +38773,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24771,10 +38785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24783,10 +38797,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -24795,10 +38809,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -24807,10 +38821,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24819,10 +38833,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -24831,10 +38845,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24848,6 +38862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, @@ -24856,10 +38871,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24873,6 +38888,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, @@ -24882,10 +38898,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24899,6 +38915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, @@ -24907,10 +38924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24924,6 +38941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, @@ -24933,10 +38951,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24950,6 +38968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, @@ -24960,10 +38979,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -24977,6 +38996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, @@ -24988,30 +39008,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -25019,10 +39039,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -25030,10 +39050,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -25041,10 +39061,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{ @@ -25052,10 +39072,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -25063,20 +39083,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25090,6 +39110,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, @@ -25098,10 +39119,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25115,6 +39136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, @@ -25123,10 +39145,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25140,6 +39162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, @@ -25148,10 +39171,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25165,6 +39188,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, @@ -25176,31 +39200,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -25208,21 +39232,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25236,6 +39260,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, @@ -25244,10 +39269,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25261,6 +39286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, @@ -25269,10 +39295,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25286,6 +39312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, @@ -25294,10 +39321,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25311,6 +39338,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, @@ -25322,30 +39350,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -25359,6 +39387,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, @@ -25370,40 +39399,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }}, .patterns = &.{ - .{ .src = .{ .mut_mem, .none } }, - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .mut_mem, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .dst_temps = .{.{ .ref = .src0 }}, .each = .{ .once = &.{} }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -25430,10 +39459,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -25459,22 +39488,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, } } else comptime &.{ .{ - .src_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, .dst_constraints = .{.{ .signed_int = .dword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .dst_constraints = .{.{ .int = .dword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25482,11 +39511,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, .dst_constraints = .{.{ .signed_int = .qword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25494,11 +39523,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25506,11 +39535,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i64, .kind = .{ .reg = .rax } }, @@ -25535,11 +39564,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .reg = .rax } }, @@ -25563,11 +39592,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .byte }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }}, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i32, .kind = .{ .reg = .eax } }, @@ -25591,11 +39620,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .byte }, .any }, + .src_constraints = .{ .{ .int = .byte }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .reg = .eax } }, @@ -25619,22 +39648,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, .dst_constraints = .{.{ .signed_int = .dword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .dst_constraints = .{.{ .int = .dword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25642,11 +39671,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, .dst_constraints = .{.{ .signed_int = .qword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25654,11 +39683,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25666,11 +39695,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i64, .kind = .{ .reg = .rax } }, @@ -25695,11 +39724,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .reg = .rax } }, @@ -25723,11 +39752,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }}, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i32, .kind = .{ .reg = .eax } }, @@ -25751,11 +39780,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .word }, .any }, + .src_constraints = .{ .{ .int = .word }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .reg = .eax } }, @@ -25780,11 +39809,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, .dst_constraints = .{.{ .signed_int = .qword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25792,11 +39821,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .dword }, .any }, + .src_constraints = .{ .{ .int = .dword }, .any, .any }, .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }}, .each = .{ .once = &.{ @@ -25804,11 +39833,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i64, .kind = .{ .reg = .rax } }, @@ -25833,11 +39862,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .dword }, .any }, + .src_constraints = .{ .{ .int = .dword }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .reg = .rax } }, @@ -25861,11 +39890,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .dword }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }}, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i32, .kind = .{ .reg = .eax } }, @@ -25889,11 +39918,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .dword }, .any }, + .src_constraints = .{ .{ .int = .dword }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .reg = .eax } }, @@ -25918,11 +39947,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .i64, .kind = .{ .reg = .rax } }, @@ -25947,11 +39976,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .qword }, .any }, + .src_constraints = .{ .{ .int = .qword }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_gpr, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, }, .extra_temps = .{ .{ .type = .u64, .kind = .{ .reg = .rax } }, @@ -25976,10 +40005,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, .any }, - .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }}, + .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .reg = .rsi } }, @@ -26007,10 +40036,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any }, .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .reg = .rsi } }, @@ -26036,11 +40065,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26048,11 +40077,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26060,11 +40089,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26072,11 +40101,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26084,10 +40113,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, @@ -26108,10 +40137,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, @@ -26131,11 +40160,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26143,11 +40172,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26155,10 +40184,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26172,19 +40201,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26198,19 +40228,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26224,19 +40255,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26250,19 +40282,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26276,19 +40309,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26302,19 +40336,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26328,6 +40363,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26336,10 +40372,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26353,6 +40389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26362,10 +40399,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26379,6 +40416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26387,10 +40425,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26404,6 +40442,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26413,11 +40452,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26425,11 +40464,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26437,11 +40476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26449,11 +40488,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26461,10 +40500,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, @@ -26487,10 +40526,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, @@ -26511,11 +40550,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26523,11 +40562,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26535,10 +40574,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26552,19 +40591,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26578,19 +40618,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26604,19 +40645,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26630,19 +40672,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26656,19 +40699,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26682,19 +40726,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26708,6 +40753,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26716,10 +40762,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26733,6 +40779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26742,10 +40789,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26759,6 +40806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26767,10 +40815,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26784,6 +40832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -26793,11 +40842,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26805,11 +40854,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26817,11 +40866,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26829,11 +40878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26841,10 +40890,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, @@ -26869,10 +40918,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, @@ -26894,11 +40943,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26906,11 +40955,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -26918,10 +40967,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26935,19 +40984,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26961,19 +41011,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -26987,19 +41038,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27013,19 +41065,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27039,19 +41092,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27065,19 +41119,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27091,6 +41146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -27100,10 +41156,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27117,6 +41173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -27126,10 +41183,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .slow_incdec, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27143,6 +41200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -27151,10 +41209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27168,6 +41226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, @@ -27177,11 +41236,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27190,11 +41249,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27203,11 +41262,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27216,11 +41275,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27229,10 +41288,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, @@ -27259,10 +41318,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, @@ -27285,10 +41344,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.any_scalar_signed_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27302,6 +41361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -27315,10 +41375,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.any_scalar_signed_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27332,6 +41392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -27345,10 +41406,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27362,6 +41423,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -27375,10 +41437,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27392,6 +41454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -27405,11 +41468,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27417,11 +41480,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27429,11 +41492,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27441,11 +41504,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27453,10 +41516,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, @@ -27477,10 +41540,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, @@ -27500,11 +41563,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27512,11 +41575,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27524,10 +41587,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27541,19 +41604,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27567,19 +41631,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27593,19 +41658,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27619,19 +41685,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27645,19 +41712,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27671,18 +41739,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27696,6 +41765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, @@ -27704,10 +41774,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27721,6 +41791,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, @@ -27730,11 +41801,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27742,11 +41813,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27754,11 +41825,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27766,11 +41837,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27778,10 +41849,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, @@ -27804,10 +41875,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, @@ -27828,11 +41899,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27840,11 +41911,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -27852,10 +41923,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27869,19 +41940,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27895,19 +41967,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27921,19 +41994,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27947,19 +42021,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27973,19 +42048,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -27999,19 +42075,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28025,6 +42102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, @@ -28034,10 +42112,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28051,6 +42129,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, @@ -28060,11 +42139,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28073,11 +42152,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28086,11 +42165,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28099,11 +42178,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28112,10 +42191,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, @@ -28140,10 +42219,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, @@ -28165,10 +42244,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.any_scalar_signed_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28182,6 +42261,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -28195,10 +42275,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28212,6 +42292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -28225,11 +42306,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28237,11 +42318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28249,11 +42330,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28261,11 +42342,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28273,10 +42354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, @@ -28297,10 +42378,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, @@ -28320,11 +42401,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28332,11 +42413,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28344,10 +42425,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28361,19 +42442,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28387,19 +42469,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28413,19 +42496,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28439,19 +42523,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28465,19 +42550,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28491,19 +42577,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, - .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28517,6 +42604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, @@ -28526,10 +42614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28543,6 +42631,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, @@ -28552,11 +42641,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28565,11 +42654,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28578,11 +42667,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28591,11 +42680,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none } }, - .{ .src = .{ .to_sse, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ @@ -28604,10 +42693,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, @@ -28630,10 +42719,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, .extra_temps = .{ .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, @@ -28654,10 +42743,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.any_scalar_signed_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28671,6 +42760,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -28684,10 +42774,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -28701,6 +42791,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ }, @@ -28714,10 +42805,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .any_scalar_signed_int, .any }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, .dst_constraints = .{.any_scalar_signed_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -28748,10 +42839,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_signed_int, .any }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, .dst_constraints = .{.any_scalar_signed_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -28782,10 +42873,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .slow_incdec, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -28814,10 +42905,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .any_scalar_int, .any }, + .src_constraints = .{ .any_scalar_int, .any, .any }, .dst_constraints = .{.any_scalar_int}, .patterns = &.{ - .{ .src = .{ .to_mem, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -28855,6 +42946,5322 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }; try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); }, + .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else { + const ty_op = air_datas[@intFromEnum(inst)].ty_op; + var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); + var res: [1]Temp = undefined; + cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ + .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .exact_signed_int = 1 }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ }, + .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .exact_signed_int = 1 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ }, + .{ ._, ._, .@"and", .dst0d, .si(1), ._, ._ }, + .{ ._, ._, .neg, .dst0d, ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .exact_int = 8 }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{} }, + }, .{ + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .exact_signed_int = 8 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .dst0d, .mem(.src0b), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 8 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._l, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .dst0b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_int, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .dst0d, .mem(.src0b), ._, ._ }, + .{ ._, ._, .@"and", .dst0b, .sa(.dst0, .add_umax), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .exact_int = 16 }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{} }, + }, .{ + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .exact_signed_int = 16 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .dst0d, .mem(.src0w), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 16 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .word }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .word }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .dst0d, .mem(.src0w), ._, ._ }, + .{ ._, ._, .@"and", .dst0w, .sa(.dst0, .add_umax), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .exact_int = 32 }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{} }, + }, .{ + .src_constraints = .{ .any_int, .any, .any }, + .dst_constraints = .{.{ .exact_int = 32 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .signed_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, + .{ ._, ._l, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .dst0d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ }, + .{ ._, ._, .@"and", .dst0d, .sa(.dst0, .add_umax), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_int, .any, .any }, + .dst_constraints = .{.{ .exact_int = 64 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .signed_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .signed_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ }, + .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_int, .any, .any }, + .dst_constraints = .{.{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, + .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, + .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, + .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_signed_int, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, + .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, + .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, + .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, + .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, + .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ }, + .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ }, + .{ ._, ._, .neg, .tmp1b, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fast_imm16, null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_d, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, .p_d, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .bmi2, null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ }, + .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_q, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_q, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .vp_q, .add, .tmp3y, .tmp3y, .tmp2y, ._ }, + .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .vp_q, .add, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_q, .add, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } }, + .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2q, .memia(.src0q, .tmp0, .add_unaligned_size), .tmp1q, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, + .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._r, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ }, + .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp2q, .memi(.src0q, .tmp1), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_int, .any, .any }, + .dst_constraints = .{.{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, + .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, + .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, + .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, + .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_signed_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._r, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .bmi2, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .lead(.tmp2q, 8), .si(0), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .lead(.tmp2, 16), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .slow_incdec, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .any_scalar_unsigned_int, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ }, + .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ }, + .{ ._, ._, .@"and", .tmp4q, .lea(.tmp1q), ._, ._ }, + .{ ._, ._sq, .sto, ._, ._, ._, ._ }, + .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + ty_op.ty.toType().fmt(pt), + cg.typeOf(ty_op.operand).fmt(pt), + ops[0].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); + }, .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else { const ty_op = air_datas[@intFromEnum(inst)].ty_op; const ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); @@ -29030,7 +48437,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { if (res_ty.hasRuntimeBitsIgnoreComptime(zcu)) cg.select(&res, &.{res_ty}, &ops, comptime &.{ .{ .dst_constraints = .{.{ .int = .byte }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .simm32 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29039,7 +48446,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .byte }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29048,7 +48455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .word }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .simm32 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29057,7 +48464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .word }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29066,7 +48473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .dword }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .simm32 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29075,7 +48482,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .dword }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29084,7 +48491,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .simm32 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29094,7 +48501,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .required_features = .{ .@"64bit", null, null, null }, .dst_constraints = .{.{ .int = .qword }}, .patterns = &.{ - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ @@ -29233,6 +48640,1124 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, cg); try res.finish(inst, &.{extra.init}, &ops, cg); }, + .mul_add => |air_tag| if (use_old) try cg.airMulAdd(inst) else { + const pl_op = air_datas[@intFromEnum(inst)].pl_op; + const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data; + var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs, pl_op.operand }); + var res: [1]Temp = undefined; + cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ + .required_features = .{ .fma, .f16c, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .to_sse, .to_sse } }, + }, + .extra_temps = .{ + .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ }, + .{ ._, .v_ss, .fmadd213, .dst0x, .tmp0x, .tmp1d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + .{ .scalar_float = .{ .of = .word, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fma, .f16c, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + .{ .scalar_float = .{ .of = .qword, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .mem } }, + .{ .src = .{ .to_sse, .mem, .mem } }, + .{ .src = .{ .mem, .to_sse, .mem } }, + .{ .src = .{ .mem, .mem, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .to_sse } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_4_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1x, .src2q, ._, ._ }, + .{ ._, .v_ps, .fmadd213, .dst0x, .tmp0x, .tmp1x, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .fma, .f16c, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + .{ .scalar_float = .{ .of = .xword, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .mem, .mem, .mem } }, + .{ .src = .{ .to_sse, .mem, .mem } }, + .{ .src = .{ .mem, .to_sse, .mem } }, + .{ .src = .{ .mem, .mem, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_sse, .to_sse } }, + .{ .src = .{ .to_sse, .to_sse, .to_sse } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .src2x, ._, ._ }, + .{ ._, .v_ps, .fmadd213, .dst0y, .tmp0y, .tmp1y, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .fma, .f16c, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f16, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memia(.src2w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .fmadd132, .dst0x, .src2x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .fmadd213, .dst0x, .src1x, .src2d, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, + .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, + }, + .dst_temps = .{.{ .ref = .src2 }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .fmadd231, .dst0x, .src0x, .src1d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .fmadd132, .dst0x, .src2x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .fmadd213, .dst0x, .src1x, .src2x, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, + .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, + }, + .dst_temps = .{.{ .ref = .src2 }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .fmadd231, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .fmadd132, .dst0y, .src2y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .fmadd213, .dst0y, .src1y, .src2y, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, + .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, + }, + .dst_temps = .{.{ .ref = .src2 }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .fmadd231, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f32, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .fmadd132, .dst0x, .src2x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .fmadd213, .dst0x, .src1x, .src2q, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, + .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, + }, + .dst_temps = .{.{ .ref = .src2 }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .fmadd231, .dst0x, .src0x, .src1q, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .fmadd132, .dst0x, .src2x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .fmadd213, .dst0x, .src1x, .src2x, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, + .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, + }, + .dst_temps = .{.{ .ref = .src2 }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .fmadd231, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .to_sse } }, + .{ .src = .{ .mem, .to_mut_sse, .to_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .fmadd132, .dst0y, .src2y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .to_sse, .mem } }, + .{ .src = .{ .to_sse, .to_mut_sse, .mem }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mut_sse, .sse, .sse } }, + .{ .src = .{ .sse, .mut_sse, .sse }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .fmadd213, .dst0y, .src1y, .src2y, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .to_mut_sse } }, + .{ .src = .{ .mem, .to_sse, .to_mut_sse }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .to_mut_sse } }, + }, + .dst_temps = .{.{ .ref = .src2 }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .fmadd231, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .fma, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } }, + .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f64, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .size = 16 * 3, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .st0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .mem(.src1x), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp1x, 16), .tmp0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .mem(.src2x), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp1x, 16 * 2), .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .x87, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .size = 16 * 3, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .scalar_float = .{ .of = .xword, .is = .xword } }, + }, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .ref = .src0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, + }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .to_mem } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .f128, .kind = .{ .reg = .xmm2 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{ + @tagName(air_tag), + cg.typeOf(bin_op.lhs).fmt(pt), + ops[0].tracking(cg), + ops[1].tracking(cg), + ops[2].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg); + }, .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else { const ty_pl = air_datas[@intFromEnum(inst)].ty_pl; const extra = cg.air.extraData(Air.FieldParentPtr, ty_pl.payload).data; @@ -34169,7 +54694,7 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM .param_types = &.{ty.toIntern()}, .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{ floatLibcAbiPrefix(ty), - switch (mode.mode) { + switch (mode.direction) { .down => "floor", .up => "ceil", .zero => "trunc", @@ -36813,7 +57338,7 @@ fn genBinOp( } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{}); }, .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{ - .mode = switch (air_tag) { + .direction = switch (air_tag) { .div_trunc => .zero, .div_floor => .down, else => unreachable, @@ -37271,7 +57796,7 @@ fn genBinOp( dst_reg, dst_reg, bits.RoundMode.imm(.{ - .mode = switch (air_tag) { + .direction = switch (air_tag) { .div_trunc => .zero, .div_floor => .down, else => unreachable, @@ -38073,7 +58598,7 @@ fn genBinOp( switch (air_tag) { .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {}, .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{ - .mode = switch (air_tag) { + .direction = switch (air_tag) { .div_trunc => .zero, .div_floor => .down, else => unreachable, @@ -45841,10 +66366,17 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp); const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg); defer self.register_manager.unlockReg(acc_lock); - var limb_offset: i31 = 0; - while (limb_offset < abi_size) : (limb_offset += 8) { + var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 8); + const need_mask = mask_len % 64 != 0; + if (need_mask) try self.asmRegisterImmediate( + .{ ._, .mov }, + if (mask_len % 64 <= 32) acc_reg.to32() else acc_reg.to64(), + .u((@as(u64, std.math.maxInt(u64)) >> @truncate(-%mask_len))), + ); + var first = true; + while (true) : (limb_offset -= 8) { try self.asmRegisterMemory( - .{ ._, if (limb_offset == 0) .mov else switch (reduce.operation) { + .{ ._, if (first) if (need_mask) .@"and" else .mov else switch (reduce.operation) { .Or => .@"or", .And => .@"and", else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}), @@ -45855,6 +66387,8 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { .disp = limb_offset, }), ); + if (limb_offset == 0) break; + first = false; } switch (reduce.operation) { .Or => { @@ -48345,11 +68879,11 @@ const Temp = struct { }; if (commute) std.mem.swap(Temp, &ops[0], &ops[1]); try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ - .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, + .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .g }}, .clobbers = .{ .eflags = true }, @@ -48357,12 +68891,12 @@ const Temp = struct { .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte } }, + .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm8 } }, - .{ .src = .{ .to_gpr, .imm8 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm8, .none } }, + .{ .src = .{ .to_gpr, .imm8, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .l }}, .clobbers = .{ .eflags = true }, @@ -48370,11 +68904,11 @@ const Temp = struct { .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .a }}, .clobbers = .{ .eflags = true }, @@ -48382,12 +68916,12 @@ const Temp = struct { .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte } }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm8 } }, - .{ .src = .{ .to_gpr, .imm8 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm8, .none } }, + .{ .src = .{ .to_gpr, .imm8, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .b }}, .clobbers = .{ .eflags = true }, @@ -48395,11 +68929,11 @@ const Temp = struct { .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, + .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .g }}, .clobbers = .{ .eflags = true }, @@ -48407,12 +68941,12 @@ const Temp = struct { .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word } }, + .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm16 } }, - .{ .src = .{ .to_gpr, .imm16 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm16, .none } }, + .{ .src = .{ .to_gpr, .imm16, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .l }}, .clobbers = .{ .eflags = true }, @@ -48420,11 +68954,11 @@ const Temp = struct { .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, + .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .a }}, .clobbers = .{ .eflags = true }, @@ -48432,12 +68966,12 @@ const Temp = struct { .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word } }, + .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm16 } }, - .{ .src = .{ .to_gpr, .imm16 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm16, .none } }, + .{ .src = .{ .to_gpr, .imm16, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .b }}, .clobbers = .{ .eflags = true }, @@ -48445,11 +68979,11 @@ const Temp = struct { .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, + .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .g }}, .clobbers = .{ .eflags = true }, @@ -48457,12 +68991,12 @@ const Temp = struct { .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword } }, + .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm32 } }, - .{ .src = .{ .to_gpr, .imm32 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm32, .none } }, + .{ .src = .{ .to_gpr, .imm32, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .l }}, .clobbers = .{ .eflags = true }, @@ -48470,11 +69004,11 @@ const Temp = struct { .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .a }}, .clobbers = .{ .eflags = true }, @@ -48482,12 +69016,12 @@ const Temp = struct { .{ ._, ._, .cmp, .src0d, .src1d, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword } }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm32 } }, - .{ .src = .{ .to_gpr, .imm32 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm32, .none } }, + .{ .src = .{ .to_gpr, .imm32, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .b }}, .clobbers = .{ .eflags = true }, @@ -48496,11 +69030,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, + .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .g }}, .clobbers = .{ .eflags = true }, @@ -48509,12 +69043,12 @@ const Temp = struct { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword } }, + .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .simm32 } }, - .{ .src = .{ .to_gpr, .simm32 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .simm32, .none } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .l }}, .clobbers = .{ .eflags = true }, @@ -48523,11 +69057,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, + .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, }, .dst_temps = .{.{ .cc = .a }}, .clobbers = .{ .eflags = true }, @@ -48536,12 +69070,12 @@ const Temp = struct { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword } }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .simm32 } }, - .{ .src = .{ .to_gpr, .simm32 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .simm32, .none } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .b }}, .clobbers = .{ .eflags = true }, @@ -48551,11 +69085,12 @@ const Temp = struct { }, .{ .required_features = .{ .@"64bit", null, null, null }, .src_constraints = .{ - .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, - .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, + .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, + .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -48583,11 +69118,12 @@ const Temp = struct { }, .{ .required_features = .{ .@"64bit", null, null, null }, .src_constraints = .{ - .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } }, - .{ .unsigned_remainder_int = .{ .of = .qword, .is = .qword } }, + .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, + .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -48612,11 +69148,12 @@ const Temp = struct { } }, }, .{ .src_constraints = .{ - .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }, - .{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }, + .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, + .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -48643,11 +69180,12 @@ const Temp = struct { } }, }, .{ .src_constraints = .{ - .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } }, - .{ .unsigned_remainder_int = .{ .of = .dword, .is = .dword } }, + .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, + .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -48675,15 +69213,15 @@ const Temp = struct { }, .eq, .neq => { try cg.select(&res, &.{.bool}, &ops, comptime &.{ .{ - .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte } }, + .src_constraints = .{ .{ .int = .byte }, .{ .int = .byte }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm8 } }, - .{ .src = .{ .imm8, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .imm8 } }, - .{ .src = .{ .imm8, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm8, .none } }, + .{ .src = .{ .imm8, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .imm8, .none } }, + .{ .src = .{ .imm8, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .e }}, .clobbers = .{ .eflags = true }, @@ -48691,15 +69229,15 @@ const Temp = struct { .{ ._, ._, .cmp, .src0b, .src1b, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .word }, .{ .int = .word } }, + .src_constraints = .{ .{ .int = .word }, .{ .int = .word }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm16 } }, - .{ .src = .{ .imm16, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .imm16 } }, - .{ .src = .{ .imm16, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm16, .none } }, + .{ .src = .{ .imm16, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .imm16, .none } }, + .{ .src = .{ .imm16, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .e }}, .clobbers = .{ .eflags = true }, @@ -48707,15 +69245,15 @@ const Temp = struct { .{ ._, ._, .cmp, .src0w, .src1w, ._, ._ }, } }, }, .{ - .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword } }, + .src_constraints = .{ .{ .int = .dword }, .{ .int = .dword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .imm32 } }, - .{ .src = .{ .imm32, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .imm32 } }, - .{ .src = .{ .imm32, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .imm32, .none } }, + .{ .src = .{ .imm32, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .imm32, .none } }, + .{ .src = .{ .imm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .e }}, .clobbers = .{ .eflags = true }, @@ -48724,15 +69262,15 @@ const Temp = struct { } }, }, .{ .required_features = .{ .@"64bit", null, null, null }, - .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } }, + .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .mem, .simm32 } }, - .{ .src = .{ .simm32, .mem }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .simm32 } }, - .{ .src = .{ .simm32, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .mem } }, - .{ .src = .{ .mem, .to_gpr }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_gpr, .to_gpr } }, + .{ .src = .{ .mem, .simm32, .none } }, + .{ .src = .{ .simm32, .mem, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .simm32, .none } }, + .{ .src = .{ .simm32, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .mem, .none } }, + .{ .src = .{ .mem, .to_gpr, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_gpr, .to_gpr, .none } }, }, .dst_temps = .{.{ .cc = .e }}, .clobbers = .{ .eflags = true }, @@ -48741,11 +69279,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .sse, .mmx, null, null }, - .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword } }, + .src_constraints = .{ .{ .int = .qword }, .{ .int = .qword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem } }, - .{ .src = .{ .mem, .to_mut_mm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm } }, + .{ .src = .{ .to_mut_mm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mm, .to_mm, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -48769,11 +69307,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, + .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_xmm, .mem } }, - .{ .src = .{ .mem, .to_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm } }, + .{ .src = .{ .to_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_xmm, .to_xmm, .none } }, }, .extra_temps = .{ .{ .kind = .{ .rc = .sse } }, @@ -48794,11 +69332,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, + .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .dst_temps = .{.{ .cc = .z }}, .clobbers = .{ .eflags = true }, @@ -48808,11 +69346,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .sse2, .fast_imm16, null, null }, - .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, + .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -48836,11 +69374,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword } }, + .src_constraints = .{ .{ .int = .xword }, .{ .int = .xword }, .any }, .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem } }, - .{ .src = .{ .mem, .to_mut_xmm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm } }, + .{ .src = .{ .to_mut_xmm, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, @@ -48864,11 +69402,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } }, + .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .extra_temps = .{ .{ .kind = .{ .rc = .sse } }, @@ -48889,11 +69427,11 @@ const Temp = struct { } }, }, .{ .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword } }, + .src_constraints = .{ .{ .int = .yword }, .{ .int = .yword }, .any }, .patterns = &.{ - .{ .src = .{ .to_ymm, .mem } }, - .{ .src = .{ .mem, .to_ymm }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm } }, + .{ .src = .{ .to_ymm, .mem, .none } }, + .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_ymm, .to_ymm, .none } }, }, .extra_temps = .{ .{ .kind = .{ .rc = .sse } }, @@ -48917,9 +69455,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .yword, .is = .xword } }, .{ .remainder_int = .{ .of = .yword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -48951,9 +69490,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .yword, .is = .xword } }, .{ .remainder_int = .{ .of = .yword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -48985,9 +69525,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .yword, .is = .yword } }, .{ .remainder_int = .{ .of = .yword, .is = .yword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49016,9 +69557,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .yword, .is = .yword } }, .{ .remainder_int = .{ .of = .yword, .is = .yword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49047,9 +69589,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .{ .remainder_int = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49078,9 +69621,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .{ .remainder_int = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49109,9 +69653,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .{ .remainder_int = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49141,9 +69686,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .xword, .is = .xword } }, .{ .remainder_int = .{ .of = .xword, .is = .xword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49173,9 +69719,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .{ .remainder_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49205,9 +69752,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .{ .remainder_int = .{ .of = .qword, .is = .qword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49234,9 +69782,10 @@ const Temp = struct { .src_constraints = .{ .{ .remainder_int = .{ .of = .dword, .is = .dword } }, .{ .remainder_int = .{ .of = .dword, .is = .dword } }, + .any, }, .patterns = &.{ - .{ .src = .{ .to_mem, .to_mem } }, + .{ .src = .{ .to_mem, .to_mem, .none } }, }, .extra_temps = .{ .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, @@ -49536,6 +70085,7 @@ const Operand = union(enum) { const Select = struct { cg: *CodeGen, + types: [@intFromEnum(Select.Operand.Ref.none)]Type, temps: [@intFromEnum(Select.Operand.Ref.none)]Temp, labels: [@intFromEnum(Label._)]struct { backward: ?Mir.Inst.Index, @@ -49747,7 +70297,15 @@ const Select = struct { multiple_scalar_int: OfIsSizes, multiple_scalar_signed_int: OfIsSizes, multiple_scalar_unsigned_int: OfIsSizes, + multiple_scalar_exact_int: struct { of: Memory.Size, is: u16 }, + multiple_scalar_exact_signed_int: struct { of: Memory.Size, is: u16 }, + multiple_scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 }, scalar_remainder_int: OfIsSizes, + scalar_remainder_signed_int: OfIsSizes, + scalar_remainder_unsigned_int: OfIsSizes, + scalar_exact_remainder_int: OfIsSizes, + scalar_exact_remainder_signed_int: OfIsSizes, + scalar_exact_remainder_unsigned_int: OfIsSizes, float: Memory.Size, scalar_any_float: Memory.Size, scalar_float: OfIsSizes, @@ -49762,9 +70320,11 @@ const Select = struct { signed_po2_int: Memory.Size, unsigned_po2_or_exact_int: Memory.Size, remainder_int: OfIsSizes, - signed_remainder_int: OfIsSizes, - unsigned_remainder_int: OfIsSizes, + remainder_signed_int: OfIsSizes, + remainder_unsigned_int: OfIsSizes, exact_remainder_int: OfIsSizes, + exact_remainder_signed_int: OfIsSizes, + exact_remainder_unsigned_int: OfIsSizes, signed_or_exact_remainder_int: OfIsSizes, unsigned_or_exact_remainder_int: OfIsSizes, signed_int: Memory.Size, @@ -49832,10 +70392,30 @@ const Select = struct { .multiple_scalar_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and of_is.is.bitSize(cg.target) >= int_info.bits else false, + .multiple_scalar_exact_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and + if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is == int_info.bits else false, + .multiple_scalar_exact_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and + if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and + of_is.is == int_info.bits else false, + .multiple_scalar_exact_unsigned_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and + if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and + of_is.is == int_info.bits else false, .scalar_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, + .scalar_remainder_signed_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and + of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, + .scalar_remainder_unsigned_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and + of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, + .scalar_exact_remainder_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| + of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 + else + false, + .scalar_exact_remainder_signed_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .signed and + of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, + .scalar_exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and + of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, .float => |size| if (cg.floatBits(ty)) |float_bits| size.bitSize(cg.target) == float_bits else false, .scalar_any_float => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and cg.floatBits(ty.scalarType(zcu)) != null, @@ -49878,14 +70458,18 @@ const Select = struct { of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, - .signed_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and + .remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, - .unsigned_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and + .remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, + .exact_remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and + of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, + .exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and + of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false, .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) { .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1, .unsigned => of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1, @@ -49913,7 +70497,7 @@ const Select = struct { }; const Pattern = struct { - src: [2]Src, + src: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Src, commute: struct { u8, u8 } = .{ 0, 0 }, const Src = union(enum) { @@ -50105,7 +70689,11 @@ const Select = struct { frame: FrameIndex, symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 }, - const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null }; + const ConstInfo = struct { + ref: Select.Operand.Ref, + to_signedness: ?std.builtin.Signedness = null, + vectorize_to: ?Memory.Size = null, + }; fn finish(kind: Kind, temp: Temp, s: *const Select) void { switch (kind) { @@ -50129,11 +70717,11 @@ const Select = struct { .unused => unreachable, .any => .{ try cg.tempAlloc(spec.type), true }, .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, - .ref => |ref| .{ ref.deref(s), false }, + .ref => |ref| .{ ref.tempOf(s), false }, .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true }, .mut_rc => |ref_rc| { - const temp = ref_rc.ref.deref(s); + const temp = ref_rc.ref.tempOf(s); if (temp.isMut(cg)) switch (temp.tracking(cg).short) { .register => |reg| if (reg.class() == ref_rc.rc) return .{ temp, false }, .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc.rc) return .{ temp, false }, @@ -50141,10 +70729,10 @@ const Select = struct { }; return .{ try cg.tempAllocReg(spec.type, regSetForRegClass(ref_rc.rc)), true }; }, - .ref_mask => |ref_mask| .{ ref_mask.ref.deref(s), false }, + .ref_mask => |ref_mask| .{ ref_mask.ref.tempOf(s), false }, .rc_mask => |rc_mask| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc_mask.rc)), true }, .mut_rc_mask => |ref_rc_mask| { - const temp = ref_rc_mask.ref.deref(s); + const temp = ref_rc_mask.ref.tempOf(s); if (temp.isMut(cg)) switch (temp.tracking(cg).short) { .register => |reg| if (reg.class() == ref_rc_mask.rc) return .{ temp, false }, .register_offset => |reg_off| if (reg_off.off == 0 and reg_off.reg.class() == ref_rc_mask.rc) return .{ temp, false }, @@ -50157,7 +70745,7 @@ const Select = struct { const pt = cg.pt; const zcu = pt.zcu; const ip = &zcu.intern_pool; - const ty = const_info.ref.deref(s).typeOf(cg); + const ty = const_info.ref.typeOf(s); const vector_len, const scalar_ty: Type = switch (ip.indexToKey(ty.toIntern())) { else => .{ null, ty }, .vector_type => |vector_type| .{ vector_type.len, .fromInterned(vector_type.child) }, @@ -50180,7 +70768,8 @@ const Select = struct { .signedness = .signed, .bits = cg.floatBits(scalar_ty).?, }; - const scalar_int_ty = try pt.intType(scalar_info.signedness, scalar_info.bits); + const scalar_signedness = const_info.to_signedness orelse scalar_info.signedness; + const scalar_int_ty = try pt.intType(scalar_signedness, scalar_info.bits); if (scalar_info.bits <= 64) { const int_val: i64 = switch (spec.kind) { else => unreachable, @@ -50190,7 +70779,7 @@ const Select = struct { .umax_mem => -1, }; const shift: u6 = @intCast(64 - scalar_info.bits); - break :res_scalar .{ scalar_int_ty, switch (scalar_info.signedness) { + break :res_scalar .{ scalar_int_ty, switch (scalar_signedness) { .signed => try pt.intValue_i64(scalar_int_ty, int_val >> shift), .unsigned => try pt.intValue_u64(scalar_int_ty, @as(u64, @bitCast(int_val)) >> shift), } }; @@ -50206,7 +70795,7 @@ const Select = struct { .smin_mem, .smax_mem => .signed, .umin_mem, .umax_mem => .unsigned, }, scalar_info.bits); - try big_int.truncate(&big_int, scalar_info.signedness, scalar_info.bits); + try big_int.truncate(&big_int, scalar_signedness, scalar_info.bits); break :res_scalar .{ scalar_int_ty, try pt.intValue_big(scalar_int_ty, big_int.toConst()) }; }, }; @@ -50246,7 +70835,7 @@ const Select = struct { flags: packed struct(u16) { tag: Tag, adjust: Adjust = .none, - unused: u4 = 0, + unused: u3 = 0, }, base: Ref.Sized = .none, index: packed struct(u6) { @@ -50265,7 +70854,7 @@ const Select = struct { lea, mem, }; - const Adjust = packed struct(u9) { + const Adjust = packed struct(u10) { sign: enum(u1) { neg, pos }, lhs: enum(u5) { none, @@ -50288,7 +70877,7 @@ const Select = struct { smax, umax, }, - op: enum(u1) { mul, div }, + op: enum(u2) { mul, div, rem_8_mul }, rhs: Memory.Scale, const none: Adjust = .{ .sign = .pos, .lhs = .none, .op = .mul, .rhs = .@"1" }; @@ -50308,6 +70897,8 @@ const Select = struct { const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" }; const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" }; const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; + const add_bit_size_rem_64: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; + const sub_bit_size_rem_64: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .rem_8_mul, .rhs = .@"8" }; const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" }; const add_src0_bit_size: Adjust = .{ .sign = .pos, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" }; const sub_src0_bit_size: Adjust = .{ .sign = .neg, .lhs = .src0_bit_size, .op = .mul, .rhs = .@"1" }; @@ -50328,6 +70919,7 @@ const Select = struct { const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" }; const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" }; const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" }; + const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" }; const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" }; }; const Ref = enum(u4) { @@ -50343,6 +70935,7 @@ const Select = struct { dst0, src0, src1, + src2, none, const Sized = packed struct(u8) { @@ -50356,6 +70949,7 @@ const Select = struct { const tmp0w: Sized = .{ .ref = .tmp0, .size = .word }; const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword }; const tmp0p: Sized = .{ .ref = .tmp0, .size = .ptr }; + const tmp0g: Sized = .{ .ref = .tmp0, .size = .gpr }; const tmp0q: Sized = .{ .ref = .tmp0, .size = .qword }; const tmp0t: Sized = .{ .ref = .tmp0, .size = .tbyte }; const tmp0x: Sized = .{ .ref = .tmp0, .size = .xword }; @@ -50366,6 +70960,7 @@ const Select = struct { const tmp1w: Sized = .{ .ref = .tmp1, .size = .word }; const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword }; const tmp1p: Sized = .{ .ref = .tmp1, .size = .ptr }; + const tmp1g: Sized = .{ .ref = .tmp1, .size = .gpr }; const tmp1q: Sized = .{ .ref = .tmp1, .size = .qword }; const tmp1t: Sized = .{ .ref = .tmp1, .size = .tbyte }; const tmp1x: Sized = .{ .ref = .tmp1, .size = .xword }; @@ -50376,6 +70971,7 @@ const Select = struct { const tmp2w: Sized = .{ .ref = .tmp2, .size = .word }; const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword }; const tmp2p: Sized = .{ .ref = .tmp2, .size = .ptr }; + const tmp2g: Sized = .{ .ref = .tmp2, .size = .gpr }; const tmp2q: Sized = .{ .ref = .tmp2, .size = .qword }; const tmp2t: Sized = .{ .ref = .tmp2, .size = .tbyte }; const tmp2x: Sized = .{ .ref = .tmp2, .size = .xword }; @@ -50386,6 +70982,7 @@ const Select = struct { const tmp3w: Sized = .{ .ref = .tmp3, .size = .word }; const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword }; const tmp3p: Sized = .{ .ref = .tmp3, .size = .ptr }; + const tmp3g: Sized = .{ .ref = .tmp3, .size = .gpr }; const tmp3q: Sized = .{ .ref = .tmp3, .size = .qword }; const tmp3t: Sized = .{ .ref = .tmp3, .size = .tbyte }; const tmp3x: Sized = .{ .ref = .tmp3, .size = .xword }; @@ -50396,6 +70993,7 @@ const Select = struct { const tmp4w: Sized = .{ .ref = .tmp4, .size = .word }; const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword }; const tmp4p: Sized = .{ .ref = .tmp4, .size = .ptr }; + const tmp4g: Sized = .{ .ref = .tmp4, .size = .gpr }; const tmp4q: Sized = .{ .ref = .tmp4, .size = .qword }; const tmp4t: Sized = .{ .ref = .tmp4, .size = .tbyte }; const tmp4x: Sized = .{ .ref = .tmp4, .size = .xword }; @@ -50406,6 +71004,7 @@ const Select = struct { const tmp5w: Sized = .{ .ref = .tmp5, .size = .word }; const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword }; const tmp5p: Sized = .{ .ref = .tmp5, .size = .ptr }; + const tmp5g: Sized = .{ .ref = .tmp5, .size = .gpr }; const tmp5q: Sized = .{ .ref = .tmp5, .size = .qword }; const tmp5t: Sized = .{ .ref = .tmp5, .size = .tbyte }; const tmp5x: Sized = .{ .ref = .tmp5, .size = .xword }; @@ -50416,6 +71015,7 @@ const Select = struct { const tmp6w: Sized = .{ .ref = .tmp6, .size = .word }; const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword }; const tmp6p: Sized = .{ .ref = .tmp6, .size = .ptr }; + const tmp6g: Sized = .{ .ref = .tmp6, .size = .gpr }; const tmp6q: Sized = .{ .ref = .tmp6, .size = .qword }; const tmp6t: Sized = .{ .ref = .tmp6, .size = .tbyte }; const tmp6x: Sized = .{ .ref = .tmp6, .size = .xword }; @@ -50426,6 +71026,7 @@ const Select = struct { const tmp7w: Sized = .{ .ref = .tmp7, .size = .word }; const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword }; const tmp7p: Sized = .{ .ref = .tmp7, .size = .ptr }; + const tmp7g: Sized = .{ .ref = .tmp7, .size = .gpr }; const tmp7q: Sized = .{ .ref = .tmp7, .size = .qword }; const tmp7t: Sized = .{ .ref = .tmp7, .size = .tbyte }; const tmp7x: Sized = .{ .ref = .tmp7, .size = .xword }; @@ -50436,6 +71037,7 @@ const Select = struct { const tmp8w: Sized = .{ .ref = .tmp8, .size = .word }; const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword }; const tmp8p: Sized = .{ .ref = .tmp8, .size = .ptr }; + const tmp8g: Sized = .{ .ref = .tmp8, .size = .gpr }; const tmp8q: Sized = .{ .ref = .tmp8, .size = .qword }; const tmp8t: Sized = .{ .ref = .tmp8, .size = .tbyte }; const tmp8x: Sized = .{ .ref = .tmp8, .size = .xword }; @@ -50446,6 +71048,7 @@ const Select = struct { const dst0w: Sized = .{ .ref = .dst0, .size = .word }; const dst0d: Sized = .{ .ref = .dst0, .size = .dword }; const dst0p: Sized = .{ .ref = .dst0, .size = .ptr }; + const dst0g: Sized = .{ .ref = .dst0, .size = .gpr }; const dst0q: Sized = .{ .ref = .dst0, .size = .qword }; const dst0t: Sized = .{ .ref = .dst0, .size = .tbyte }; const dst0x: Sized = .{ .ref = .dst0, .size = .xword }; @@ -50456,6 +71059,7 @@ const Select = struct { const src0w: Sized = .{ .ref = .src0, .size = .word }; const src0d: Sized = .{ .ref = .src0, .size = .dword }; const src0p: Sized = .{ .ref = .src0, .size = .ptr }; + const src0g: Sized = .{ .ref = .src0, .size = .gpr }; const src0q: Sized = .{ .ref = .src0, .size = .qword }; const src0t: Sized = .{ .ref = .src0, .size = .tbyte }; const src0x: Sized = .{ .ref = .src0, .size = .xword }; @@ -50466,15 +71070,35 @@ const Select = struct { const src1w: Sized = .{ .ref = .src1, .size = .word }; const src1d: Sized = .{ .ref = .src1, .size = .dword }; const src1p: Sized = .{ .ref = .src1, .size = .ptr }; + const src1g: Sized = .{ .ref = .src1, .size = .gpr }; const src1q: Sized = .{ .ref = .src1, .size = .qword }; const src1t: Sized = .{ .ref = .src1, .size = .tbyte }; const src1x: Sized = .{ .ref = .src1, .size = .xword }; const src1y: Sized = .{ .ref = .src1, .size = .yword }; + + const src2: Sized = .{ .ref = .src2, .size = .none }; + const src2b: Sized = .{ .ref = .src2, .size = .byte }; + const src2w: Sized = .{ .ref = .src2, .size = .word }; + const src2d: Sized = .{ .ref = .src2, .size = .dword }; + const src2p: Sized = .{ .ref = .src2, .size = .ptr }; + const src2g: Sized = .{ .ref = .src2, .size = .gpr }; + const src2q: Sized = .{ .ref = .src2, .size = .qword }; + const src2t: Sized = .{ .ref = .src2, .size = .tbyte }; + const src2x: Sized = .{ .ref = .src2, .size = .xword }; + const src2y: Sized = .{ .ref = .src2, .size = .yword }; }; - fn deref(ref: Ref, s: *const Select) Temp { + fn typeOf(ref: Ref, s: *const Select) Type { + return s.types[@intFromEnum(ref)]; + } + + fn tempOf(ref: Ref, s: *const Select) Temp { return s.temps[@intFromEnum(ref)]; } + + fn valueOf(ref: Ref, s: *const Select) MCValue { + return s.temps[@intFromEnum(ref)].tracking(s.cg).short; + } }; const @"_": Select.Operand = .{ .flags = .{ .tag = .none } }; @@ -50490,6 +71114,7 @@ const Select = struct { const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w }; const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d }; const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p }; + const tmp0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0g }; const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q }; const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t }; const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x }; @@ -50499,6 +71124,7 @@ const Select = struct { const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w }; const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d }; const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p }; + const tmp1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1g }; const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q }; const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t }; const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x }; @@ -50508,6 +71134,7 @@ const Select = struct { const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w }; const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d }; const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p }; + const tmp2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2g }; const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q }; const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t }; const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x }; @@ -50517,6 +71144,7 @@ const Select = struct { const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w }; const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d }; const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p }; + const tmp3g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3g }; const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q }; const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t }; const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x }; @@ -50526,6 +71154,7 @@ const Select = struct { const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w }; const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d }; const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p }; + const tmp4g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4g }; const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q }; const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t }; const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x }; @@ -50535,6 +71164,7 @@ const Select = struct { const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w }; const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d }; const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p }; + const tmp5g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5g }; const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q }; const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t }; const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x }; @@ -50544,6 +71174,7 @@ const Select = struct { const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w }; const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d }; const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p }; + const tmp6g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6g }; const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q }; const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t }; const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x }; @@ -50553,6 +71184,7 @@ const Select = struct { const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w }; const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d }; const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p }; + const tmp7g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7g }; const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q }; const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t }; const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x }; @@ -50562,6 +71194,7 @@ const Select = struct { const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w }; const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d }; const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p }; + const tmp8g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8g }; const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q }; const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t }; const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x }; @@ -50571,6 +71204,7 @@ const Select = struct { const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w }; const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d }; const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p }; + const dst0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0g }; const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q }; const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t }; const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x }; @@ -50580,6 +71214,7 @@ const Select = struct { const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w }; const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d }; const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p }; + const src0g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0g }; const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q }; const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t }; const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x }; @@ -50589,11 +71224,22 @@ const Select = struct { const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w }; const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d }; const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p }; + const src1g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1g }; const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q }; const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t }; const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x }; const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y }; + const src2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2b }; + const src2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2w }; + const src2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2d }; + const src2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2p }; + const src2g: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2g }; + const src2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2q }; + const src2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2t }; + const src2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2x }; + const src2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src2y }; + fn si(imm: i32) Select.Operand { return .{ .flags = .{ .tag = .simm }, .imm = imm }; } @@ -50606,6 +71252,9 @@ const Select = struct { fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand { return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm }; } + fn sia2(imm: i32, base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand { + return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .index = .{ .ref = index }, .imm = imm }; + } fn ui(imm: u32) Select.Operand { return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) }; } @@ -50786,36 +71435,36 @@ const Select = struct { .none => 0, .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8), .ptr_bit_size => s.cg.target.ptrBitWidth(), - .size => @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)), - .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu))) - - @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)))), - .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - - @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), + .size => @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu)), + .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).abiSize(s.cg.pt.zcu))) - + @as(SignedImm, @intCast(op.index.ref.typeOf(s).abiSize(s.cg.pt.zcu)))), + .delta_elem_size => @intCast(@as(SignedImm, @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))) - + @as(SignedImm, @intCast(op.index.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))), .size_sub_elem_size => { - const ty = op.base.ref.deref(s).typeOf(s.cg); + const ty = op.base.ref.typeOf(s); break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)); }, - .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.deref(s).typeOf(s.cg))), - .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), - .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), - .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)), + .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.typeOf(s))), + .bit_size => @intCast(op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), + .src0_bit_size => @intCast(Select.Operand.Ref.src0.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)), + .len => @intCast(op.base.ref.typeOf(s).vectorLen(s.cg.pt.zcu)), .elem_limbs => @intCast(@divExact( - op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu), + op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu), @divExact(op.base.size.bitSize(s.cg.target), 8), )), - .elem_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), - .src0_elem_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), - .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) * - Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.immediate), - .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))), + .elem_size => @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), + .src0_elem_size => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), + .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) * + Select.Operand.Ref.src1.valueOf(s).immediate), + .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))), .smin => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate( - -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), + -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), ), .smax => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate( - -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), + -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), ), .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate( - -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), + -%op.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), )), }; const rhs = op.flags.adjust.rhs.toLog2(); @@ -50826,6 +71475,7 @@ const Select = struct { break :res res[0]; }, .div => @shrExact(lhs, rhs), + .rem_8_mul => lhs & (@as(SignedImm, 1) << @intCast(@as(u3, 3) + rhs)) - 1, }; return switch (op.flags.adjust.sign) { .neg => op.imm - res, @@ -50842,7 +71492,7 @@ const Select = struct { label.* = @intCast(s.cg.mir_instructions.len); break .{ .inst = undefined }; } else unreachable, - .ref => switch (op.base.ref.deref(s).tracking(s.cg).short) { + .ref => switch (op.base.ref.valueOf(s)) { .immediate => |imm| .{ .imm = switch (op.base.size) { .byte => if (std.math.cast(i8, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u8, @intCast(imm))), .word => if (std.math.cast(i16, @as(i64, @bitCast(imm)))) |simm| .s(simm) else .u(@as(u16, @intCast(imm))), @@ -50857,21 +71507,21 @@ const Select = struct { .simm => .{ .imm = .s(op.adjustedImm(i32, s)) }, .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) }, .lea => .{ .mem = .{ - .base = .{ .reg = registerAlias(op.base.ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)) }, + .base = .{ .reg = registerAlias(op.base.ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)) }, .mod = .{ .rm = .{ .size = op.base.size, .index = switch (op.index.ref) { - else => |ref| registerAlias(ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)), + else => |ref| registerAlias(ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)), .none => .none, }, .scale = op.index.scale, .disp = op.adjustedImm(i32, s), } }, } }, - .mem => .{ .mem = try op.base.ref.deref(s).tracking(s.cg).short.mem(s.cg, .{ + .mem => .{ .mem = try op.base.ref.valueOf(s).mem(s.cg, .{ .size = op.base.size, .index = switch (op.index.ref) { - else => |ref| registerAlias(ref.deref(s).tracking(s.cg).short.register, @divExact(s.cg.target.ptrBitWidth(), 8)), + else => |ref| registerAlias(ref.valueOf(s).register, @divExact(s.cg.target.ptrBitWidth(), 8)), .none => .none, }, .scale = op.index.scale, @@ -50888,7 +71538,7 @@ fn select( src_temps: []Temp, cases: []const Select.Case, ) !void { - @setEvalBranchQuota(33_600); + @setEvalBranchQuota(33_500); cases: for (cases) |case| { for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases; 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; @@ -50914,12 +71564,21 @@ fn select( var s: Select = .{ .cg = cg, .temps = undefined, + .types = undefined, .labels = @splat(.{ .forward = @splat(null), .backward = null }), .top = 0, }; - const tmp_slots = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)]; - const dst_slots = s.temps[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)]; - const src_slots = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; + const s_tmp_types = s.types[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)]; + const s_tmp_temps = s.temps[@intFromEnum(Select.Operand.Ref.tmp0)..@intFromEnum(Select.Operand.Ref.dst0)]; + const s_dst_types = s.types[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)]; + const s_dst_temps = s.temps[@intFromEnum(Select.Operand.Ref.dst0)..@intFromEnum(Select.Operand.Ref.src0)]; + const s_src_types = s.types[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; + const s_src_temps = s.temps[@intFromEnum(Select.Operand.Ref.src0)..@intFromEnum(Select.Operand.Ref.none)]; + + for (s_tmp_types, case.extra_temps) |*ty, spec| ty.* = spec.type; + @memcpy(s_dst_types[0..dst_tys.len], dst_tys); + for (s_src_types[0..src_temps.len], src_temps) |*ty, temp| ty.* = temp.typeOf(cg); + std.mem.swap(Type, &s_src_types[pattern.commute[0]], &s_src_types[pattern.commute[1]]); caller_preserved: { const cc = switch (case.clobbers.caller_preserved) { @@ -50943,23 +71602,23 @@ fn select( } } - @memcpy(src_slots[0..src_temps.len], src_temps); - std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]); + @memcpy(s_src_temps[0..src_temps.len], src_temps); + std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]); for (dst_temps, dst_tys, case.dst_temps[0..dst_temps.len]) |*dst_temp, dst_ty, dst_kind| { if (dst_kind.pass() != 1) continue; dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s); } - var tmp_owned: [tmp_slots.len]bool = @splat(false); - for (1..3) |pass| for (tmp_slots, &tmp_owned, case.extra_temps) |*slot, *owned, spec| { + var tmp_owned: [s_tmp_temps.len]bool = @splat(false); + for (1..3) |pass| for (s_tmp_temps, &tmp_owned, case.extra_temps) |*temp, *owned, spec| { if (spec.kind.pass() != pass) continue; - slot.*, owned.* = try spec.create(&s); + temp.*, owned.* = try spec.create(&s); }; while (true) for (pattern.src[0..src_temps.len], src_temps) |src_pattern, *src_temp| { if (try src_pattern.convert(src_temp, cg)) break; } else break; - @memcpy(src_slots[0..src_temps.len], src_temps); - std.mem.swap(Temp, &src_slots[pattern.commute[0]], &src_slots[pattern.commute[1]]); + @memcpy(s_src_temps[0..src_temps.len], src_temps); + std.mem.swap(Temp, &s_src_temps[pattern.commute[0]], &s_src_temps[pattern.commute[1]]); if (case.clobbers.eflags) try cg.spillEflagsIfOccupied(); @@ -50967,7 +71626,7 @@ fn select( if (dst_kind.pass() != 2) continue; dst_temp.*, _ = try Select.TempSpec.create(.{ .type = dst_ty, .kind = dst_kind }, &s); } - @memcpy(dst_slots[0..dst_temps.len], dst_temps); + @memcpy(s_dst_temps[0..dst_temps.len], dst_temps); switch (case.each) { .once => |body| { @@ -50996,7 +71655,7 @@ fn select( } } for (dst_temps, case.dst_temps[0..dst_temps.len]) |dst_temp, dst_kind| dst_kind.finish(dst_temp, &s); - for (tmp_owned, tmp_slots) |owned, temp| if (owned) try temp.die(cg); + for (tmp_owned, s_tmp_temps) |owned, temp| if (owned) try temp.die(cg); return; } } diff --git a/src/arch/x86_64/bits.zig b/src/arch/x86_64/bits.zig index 26cd508299b7184812a0e7fa98581084ddddba7b..930515519f26a32896793a415e71fad5972074b1 100644 --- a/src/arch/x86_64/bits.zig +++ b/src/arch/x86_64/bits.zig @@ -177,7 +177,13 @@ pub const Condition = enum(u5) { /// The immediate operand of vcvtps2ph. pub const RoundMode = packed struct(u5) { - mode: enum(u4) { + direction: Direction = .mxcsr, + precision: enum(u1) { + normal = 0b0, + inexact = 0b1, + } = .normal, + + pub const Direction = enum(u4) { /// Round to nearest (even) nearest = 0b0_00, /// Round down (toward -∞) @@ -188,11 +194,7 @@ pub const RoundMode = packed struct(u5) { zero = 0b0_11, /// Use current rounding mode of MXCSR.RC mxcsr = 0b1_00, - } = .mxcsr, - precision: enum(u1) { - normal = 0b0, - inexact = 0b1, - } = .normal, + }; pub fn imm(mode: RoundMode) Immediate { return .u(@as(@typeInfo(RoundMode).@"struct".backing_integer.?, @bitCast(mode))); @@ -702,6 +704,7 @@ pub const Memory = struct { pub const Size = enum(u4) { none, ptr, + gpr, byte, word, dword, @@ -742,6 +745,11 @@ pub const Memory = struct { return switch (s) { .none => 0, .ptr => target.ptrBitWidth(), + .gpr => switch (target.cpu.arch) { + else => unreachable, + .x86 => 32, + .x86_64 => 64, + }, .byte => 8, .word => 16, .dword => 32, @@ -763,7 +771,7 @@ pub const Memory = struct { try writer.writeAll(@tagName(s)); switch (s) { .none => unreachable, - .ptr => {}, + .ptr, .gpr => {}, else => { try writer.writeByte(' '); try writer.writeAll("ptr"); diff --git a/src/arch/x86_64/encodings.zig b/src/arch/x86_64/encodings.zig index 9357549a5a3105e64c54fee9bc63d95f51b1118d..b34dc0ac78a398c1afdcaaec475ec24ae13b9c12 100644 --- a/src/arch/x86_64/encodings.zig +++ b/src/arch/x86_64/encodings.zig @@ -19,7 +19,7 @@ pub const table = [_]Entry{ .{ .aad, .zi, &.{ .imm8 }, &.{ 0xd5 }, 0, .none, .@"32bit" }, .{ .aam, .z, &.{ }, &.{ 0xd4, 0x0a }, 0, .none, .@"32bit" }, - .{ .aam, .z, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" }, + .{ .aam, .zi, &.{ .imm8 }, &.{ 0xd4 }, 0, .none, .@"32bit" }, .{ .aas, .z, &.{}, &.{ 0x3f }, 0, .none, .@"32bit" }, diff --git a/test/behavior/floatop.zig b/test/behavior/floatop.zig index d7cf657b90d4ba99eeb28474908394c6a6840098..a47f229296c5333da3d97b8cf47d8b3c9e266ddc 100644 --- a/test/behavior/floatop.zig +++ b/test/behavior/floatop.zig @@ -156,7 +156,13 @@ test "cmp f128" { } test "cmp f80/c_longdouble" { - if (true) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testCmp(f80); try comptime testCmp(f80); @@ -453,7 +459,7 @@ test "@sin with vectors" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testSinWithVectors(); @@ -526,7 +532,7 @@ test "@cos with vectors" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testCosWithVectors(); @@ -600,7 +606,7 @@ test "@tan with vectors" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testTanWithVectors(); @@ -677,7 +683,7 @@ test "@exp with vectors" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testExpWithVectors(); @@ -749,7 +755,7 @@ test "@exp2 with @vectors" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testExp2WithVectors(); @@ -822,7 +828,7 @@ test "@log with @vectors" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; { @@ -896,7 +902,7 @@ test "@log2 with vectors" { if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; try testLog2WithVectors(); try comptime testLog2WithVectors(); @@ -967,7 +973,7 @@ test "@log10 with vectors" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try testLog10WithVectors(); @@ -1188,8 +1194,7 @@ test "@floor with vectors" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64 and - !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; try testFloorWithVectors(); try comptime testFloorWithVectors(); @@ -1286,8 +1291,7 @@ test "@ceil with vectors" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64 and - !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; try testCeilWithVectors(); try comptime testCeilWithVectors(); @@ -1384,8 +1388,7 @@ test "@trunc with vectors" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64 and - !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; try testTruncWithVectors(); try comptime testTruncWithVectors(); diff --git a/test/behavior/memset.zig b/test/behavior/memset.zig index 2def7e6ee2e48d4594bc33ff6e23f8cfe3bf5b6b..3f526d6cc8ece1961cb7f234ecb75950c36772bb 100644 --- a/test/behavior/memset.zig +++ b/test/behavior/memset.zig @@ -84,6 +84,7 @@ test "memset with 1-byte struct element" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; const S = struct { x: bool }; var buf: [5]S = undefined; @@ -97,6 +98,7 @@ test "memset with 1-byte array element" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; const A = [1]bool; var buf: [5]A = undefined; diff --git a/test/behavior/muladd.zig b/test/behavior/muladd.zig index 2bebdd30f04b4cf190efe08317b5cb23df7b65d7..41174e65429987caba1d578d8a1566830b3b7b41 100644 --- a/test/behavior/muladd.zig +++ b/test/behavior/muladd.zig @@ -2,16 +2,12 @@ const std = @import("std"); const builtin = @import("builtin"); const expect = std.testing.expect; -const no_x86_64_hardware_fma_support = builtin.zig_backend == .stage2_x86_64 and - !std.Target.x86.featureSetHas(builtin.cpu.features, .fma); - test "@mulAdd" { - if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - - if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try comptime testMulAdd(); try testMulAdd(); @@ -110,10 +106,10 @@ fn vector16() !void { test "vector f16" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try comptime vector16(); @@ -135,11 +131,11 @@ fn vector32() !void { test "vector f32" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try comptime vector32(); try vector32(); @@ -160,11 +156,11 @@ fn vector64() !void { test "vector f64" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; - if (no_x86_64_hardware_fma_support) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try comptime vector64(); try vector64(); @@ -184,12 +180,12 @@ fn vector80() !void { test "vector f80" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try comptime vector80(); @@ -211,12 +207,12 @@ fn vector128() !void { test "vector f128" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; try comptime vector128(); diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig index 2dbd1de8eb7130232333b3b88b40123ccac4cc38..e8b463bede71c982b5ae10baebe129d8265f1e5d 100644 --- a/test/behavior/vector.zig +++ b/test/behavior/vector.zig @@ -102,7 +102,7 @@ test "vector float operators" { if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { // Triggers an assertion with LLVM 18: diff --git a/test/behavior/x86_64/math.zig b/test/behavior/x86_64/math.zig index 3befdab4bf9f76a648d39fbe448f882b92b78f0f..ce46d2207b3a7dcff41317803f5dc0717090683e 100644 --- a/test/behavior/x86_64/math.zig +++ b/test/behavior/x86_64/math.zig @@ -37,6 +37,14 @@ inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type { .vector => @splat(scalar), }; } +// inline to avoid a runtime `@select` +inline fn select(cond: anytype, lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) { + return switch (@typeInfo(@TypeOf(cond))) { + .bool => if (cond) lhs else rhs, + .vector => @select(Scalar(@TypeOf(lhs)), cond, lhs, rhs), + else => @compileError(@typeName(@TypeOf(cond))), + }; +} fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) { else => bool, .vector => |vector| @Vector(vector.len, bool), @@ -84,65 +92,81 @@ fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) { @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs))); } +const Compare = enum { strict, relaxed, approx, approx_int }; // noinline for a more helpful stack trace -noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime strict: bool) !void { - const info = @typeInfo(@TypeOf(expected)); - const unexpected = unexpected: switch (switch (info) { - else => info, - .vector => |vector| @typeInfo(vector.child), - }) { +noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comptime compare: Compare) !void { + const Expected = @TypeOf(expected); + const unexpected = unexpected: switch (@typeInfo(Scalar(Expected))) { else => expected != actual, - .float => { - const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual)); - break :unexpected switch (strict) { - false => unequal, - true => boolOr(unequal, sign(expected) != sign(actual)), - }; + .float => switch (compare) { + .strict, .relaxed => { + const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual)); + break :unexpected switch (compare) { + .strict => boolOr(unequal, sign(expected) != sign(actual)), + .relaxed => unequal, + .approx, .approx_int => comptime unreachable, + }; + }, + .approx, .approx_int => { + const epsilon = math.floatEps(Scalar(Expected)); + const tolerance = @sqrt(epsilon); + break :unexpected @abs(expected - actual) > @max( + @abs(expected) * splat(Expected, tolerance), + splat(Expected, switch (compare) { + .strict, .relaxed => comptime unreachable, + .approx => tolerance, + .approx_int => 1, + }), + ); + }, }, }; - if (switch (info) { + if (switch (@typeInfo(Expected)) { else => unexpected, .vector => @reduce(.Or, unexpected), }) return error.Unexpected; } test checkExpected { - if (checkExpected(nan(f16), nan(f16), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f16), -nan(f16), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), true) != error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f16), nan(f16), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f16), -nan(f16), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f16, 0.0), @as(f16, 0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f16, -0.0), @as(f16, -0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f16, -0.0), @as(f16, 0.0), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f16, 0.0), @as(f16, -0.0), .strict) != error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f32), nan(f32), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f32), -nan(f32), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), true) != error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f32), nan(f32), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f32), -nan(f32), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f32, 0.0), @as(f32, 0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f32, -0.0), @as(f32, -0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f32, -0.0), @as(f32, 0.0), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f32, 0.0), @as(f32, -0.0), .strict) != error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f64), nan(f64), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f64), -nan(f64), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), true) != error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f64), nan(f64), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f64), -nan(f64), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f64, 0.0), @as(f64, 0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f64, -0.0), @as(f64, -0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f64, -0.0), @as(f64, 0.0), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f64, 0.0), @as(f64, -0.0), .strict) != error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f80), nan(f80), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f80), -nan(f80), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), true) != error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f80), nan(f80), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f80), -nan(f80), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f80, 0.0), @as(f80, 0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f80, -0.0), @as(f80, -0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f80, -0.0), @as(f80, 0.0), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f80, 0.0), @as(f80, -0.0), .strict) != error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f128), nan(f128), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(nan(f128), -nan(f128), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), true) == error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), true) != error.Unexpected) return error.Unexpected; - if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), true) != error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f128), nan(f128), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(nan(f128), -nan(f128), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f128, 0.0), @as(f128, 0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f128, -0.0), @as(f128, -0.0), .strict) == error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f128, -0.0), @as(f128, 0.0), .strict) != error.Unexpected) return error.Unexpected; + if (checkExpected(@as(f128, 0.0), @as(f128, -0.0), .strict) != error.Unexpected) return error.Unexpected; } -fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type { +fn unary(comptime op: anytype, comptime opts: struct { + libc_name: ?[]const u8 = null, + compare: Compare = .relaxed, +}) type { return struct { // noinline so that `mem_arg` is on the stack noinline fn testArgKinds( @@ -166,12 +190,34 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t comptime imm_arg: Type, mem_arg: Type, ) !void { - const expected = comptime op(Type, imm_arg); + const expected = expected: { + if (opts.libc_name) |libc_name| libc: { + const libc_func = @extern(*const fn (Scalar(Type)) callconv(.c) Scalar(Type), .{ + .name = switch (Scalar(Type)) { + f16 => "__" ++ libc_name ++ "h", + f32 => libc_name ++ "f", + f64 => libc_name, + f80 => "__" ++ libc_name ++ "x", + f128 => libc_name ++ "q", + else => break :libc, + }, + }); + switch (@typeInfo(Type)) { + else => break :expected libc_func(imm_arg), + .vector => |vector| { + var res: Type = undefined; + inline for (0..vector.len) |i| res[i] = libc_func(imm_arg[i]); + break :expected res; + }, + } + } + break :expected comptime op(Type, imm_arg); + }; var reg_arg = mem_arg; _ = .{®_arg}; - try checkExpected(expected, op(Type, reg_arg), opts.strict); - try checkExpected(expected, op(Type, mem_arg), opts.strict); - try checkExpected(expected, op(Type, imm_arg), opts.strict); + try checkExpected(expected, op(Type, reg_arg), opts.compare); + try checkExpected(expected, op(Type, mem_arg), opts.compare); + if (opts.libc_name == null) try checkExpected(expected, op(Type, imm_arg), opts.compare); } // noinline for a more helpful stack trace noinline fn testArgs(comptime Type: type, comptime imm_arg: Type) !void { @@ -1628,7 +1674,7 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t }; } -fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) type { +fn cast(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type { return struct { // noinline so that `mem_arg` is on the stack noinline fn testArgKinds( @@ -1656,9 +1702,9 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty const expected = comptime op(Result, Type, imm_arg, imm_arg); var reg_arg = mem_arg; _ = .{®_arg}; - try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.strict); - try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.strict); - try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.strict); + try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.compare); + try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.compare); + try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.compare); } // noinline for a more helpful stack trace noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void { @@ -5222,1392 +5268,2781 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty try testArgs(f128, f128, inf(f128)); try testArgs(f128, f128, nan(f128)); } - fn testIntVectors() !void { + fn testSameSignednessIntVectors() !void { + try testArgs(@Vector(1, i7), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i8), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u8), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i9), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i15), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i16), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u16), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i17), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i31), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i32), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u32), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i33), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i63), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i64), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u64), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i65), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i127), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i128), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u128), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i129), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i255), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i256), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u256), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i257), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i511), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i512), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u512), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i513), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i1023), @Vector(1, i1), .{-1}); try testArgs(@Vector(1, i1024), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, u1024), @Vector(1, i1), .{-1}); - try testArgs(@Vector(1, i8), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i1025), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u7), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u8), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i16), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u9), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u15), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u16), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i32), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u17), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u31), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u32), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i64), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u33), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u63), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u64), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i128), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u65), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u127), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u128), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i256), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u129), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u255), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u256), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i512), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u257), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u511), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u512), @Vector(1, u1), .{1}); - try testArgs(@Vector(1, i1024), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u513), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u1023), @Vector(1, u1), .{1}); try testArgs(@Vector(1, u1024), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, u1025), @Vector(1, u1), .{1}); + try testArgs(@Vector(2, i7), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i8), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u8), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i9), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i15), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i16), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u16), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i17), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i31), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i32), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u32), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i33), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i63), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i64), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u64), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i65), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i127), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i128), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u128), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i129), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i255), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i256), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u256), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i257), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i511), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i512), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u512), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i513), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i1023), @Vector(2, i1), .{ -1, 0 }); try testArgs(@Vector(2, i1024), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 }); - try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i1025), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u7), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u8), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i16), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u9), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u15), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u16), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i32), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u17), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u31), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u32), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i64), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u33), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u63), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u64), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i128), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u65), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u127), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u128), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i256), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u129), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u255), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u256), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i512), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u257), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u511), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u512), @Vector(2, u1), .{ 0, 1 }); - try testArgs(@Vector(2, i1024), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u513), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u1023), @Vector(2, u1), .{ 0, 1 }); try testArgs(@Vector(2, u1024), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, u1025), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(3, i7), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i2), .{ -1 << 1, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i2), .{ -1 << 1, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i1025), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u8), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i16), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u9), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u15), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u16), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i32), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u17), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u31), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u32), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i64), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u33), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u63), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u64), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i128), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u65), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u127), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u128), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i256), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u129), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u255), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u256), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i512), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u257), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u511), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u512), @Vector(3, u2), .{ 0, 1, 1 << 1 }); - try testArgs(@Vector(3, i1024), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u513), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u1023), @Vector(3, u2), .{ 0, 1, 1 << 1 }); try testArgs(@Vector(3, u1024), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, u1025), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i7), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i3), .{ -1 << 2, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i3), .{ -1 << 2, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i1025), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u8), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i16), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u9), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u15), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u16), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i32), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u17), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u31), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u32), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i64), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u33), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u63), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u64), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i128), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u65), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u127), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u128), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i256), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u129), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u255), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u256), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i512), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u257), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u511), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u512), @Vector(3, u3), .{ 0, 1, 1 << 2 }); - try testArgs(@Vector(3, i1024), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u513), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u1023), @Vector(3, u3), .{ 0, 1, 1 << 2 }); try testArgs(@Vector(3, u1024), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, u1025), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i7), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i4), .{ -1 << 3, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i4), .{ -1 << 3, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i1025), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u8), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i16), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u9), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u15), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u16), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i32), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u17), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u31), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u32), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i64), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u33), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u63), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u64), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i128), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u65), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u127), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u128), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i256), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u129), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u255), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u256), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i512), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u257), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u511), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u512), @Vector(3, u4), .{ 0, 1, 1 << 3 }); - try testArgs(@Vector(3, i1024), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u513), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u1023), @Vector(3, u4), .{ 0, 1, 1 << 3 }); try testArgs(@Vector(3, u1024), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, u1025), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i7), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i5), .{ -1 << 4, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i5), .{ -1 << 4, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i1025), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u8), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i16), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u9), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u15), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u16), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i32), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u17), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u31), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u32), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i64), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u33), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u63), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u64), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i128), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u65), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u127), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u128), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i256), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u129), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u255), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u256), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i512), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u257), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u511), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u512), @Vector(3, u5), .{ 0, 1, 1 << 4 }); - try testArgs(@Vector(3, i1024), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u513), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u1023), @Vector(3, u5), .{ 0, 1, 1 << 4 }); try testArgs(@Vector(3, u1024), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, u1025), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i7), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i7), .{ -1 << 6, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i7), .{ -1 << 6, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i1025), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u8), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i16), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u9), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u15), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u16), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i32), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u17), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u31), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u32), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i64), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u33), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u63), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u64), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i128), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u65), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u127), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u128), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i256), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u129), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u255), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u256), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i512), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u257), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u511), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u512), @Vector(3, u7), .{ 0, 1, 1 << 6 }); - try testArgs(@Vector(3, i1024), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u513), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u1023), @Vector(3, u7), .{ 0, 1, 1 << 6 }); try testArgs(@Vector(3, u1024), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, u1025), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i7), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i8), .{ -1 << 7, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i8), .{ -1 << 7, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i1025), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u8), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i16), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u9), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u15), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u16), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i32), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u17), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u31), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u32), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i64), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u33), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u63), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u64), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i128), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u65), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u127), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u128), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i256), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u129), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u255), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u256), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i512), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u257), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u511), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u512), @Vector(3, u8), .{ 0, 1, 1 << 7 }); - try testArgs(@Vector(3, i1024), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u513), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u1023), @Vector(3, u8), .{ 0, 1, 1 << 7 }); try testArgs(@Vector(3, u1024), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, u1025), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i7), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i9), .{ -1 << 8, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i9), .{ -1 << 8, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i1025), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u8), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i16), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u9), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u15), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u16), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i32), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u17), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u31), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u32), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i64), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u33), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u63), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u64), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i128), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u65), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u127), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u128), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i256), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u129), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u255), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u256), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i512), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u257), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u511), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u512), @Vector(3, u9), .{ 0, 1, 1 << 8 }); - try testArgs(@Vector(3, i1024), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u513), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u1023), @Vector(3, u9), .{ 0, 1, 1 << 8 }); try testArgs(@Vector(3, u1024), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, u1025), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i7), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i15), .{ -1 << 14, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i15), .{ -1 << 14, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i1025), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u8), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i16), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u9), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u15), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u16), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i32), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u17), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u31), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u32), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i64), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u33), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u63), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u64), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i128), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u65), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u127), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u128), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i256), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u129), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u255), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u256), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i512), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u257), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u511), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u512), @Vector(3, u15), .{ 0, 1, 1 << 14 }); - try testArgs(@Vector(3, i1024), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u513), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u1023), @Vector(3, u15), .{ 0, 1, 1 << 14 }); try testArgs(@Vector(3, u1024), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, u1025), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i7), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i16), .{ -1 << 15, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i16), .{ -1 << 15, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i1025), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u8), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i16), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u9), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u15), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u16), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i32), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u17), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u31), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u32), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i64), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u33), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u63), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u64), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i128), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u65), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u127), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u128), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i256), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u129), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u255), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u256), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i512), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u257), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u511), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u512), @Vector(3, u16), .{ 0, 1, 1 << 15 }); - try testArgs(@Vector(3, i1024), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u513), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u1023), @Vector(3, u16), .{ 0, 1, 1 << 15 }); try testArgs(@Vector(3, u1024), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, u1025), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i7), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i17), .{ -1 << 16, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i17), .{ -1 << 16, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i1025), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u8), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i16), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u9), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u15), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u16), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i32), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u17), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u31), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u32), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i64), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u33), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u63), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u64), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i128), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u65), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u127), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u128), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i256), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u129), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u255), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u256), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i512), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u257), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u511), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u512), @Vector(3, u17), .{ 0, 1, 1 << 16 }); - try testArgs(@Vector(3, i1024), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u513), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u1023), @Vector(3, u17), .{ 0, 1, 1 << 16 }); try testArgs(@Vector(3, u1024), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, u1025), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i7), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i31), .{ -1 << 30, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i31), .{ -1 << 30, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i1025), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u8), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i16), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u9), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u15), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u16), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i32), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u17), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u31), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u32), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i64), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u33), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u63), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u64), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i128), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u65), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u127), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u128), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i256), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u129), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u255), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u256), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i512), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u257), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u511), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u512), @Vector(3, u31), .{ 0, 1, 1 << 30 }); - try testArgs(@Vector(3, i1024), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u513), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u1023), @Vector(3, u31), .{ 0, 1, 1 << 30 }); try testArgs(@Vector(3, u1024), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, u1025), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i7), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i32), .{ -1 << 31, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i32), .{ -1 << 31, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i1025), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u8), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i16), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u9), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u15), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u16), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i32), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u17), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u31), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u32), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i64), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u33), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u63), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u64), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i128), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u65), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u127), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u128), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i256), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u129), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u255), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u256), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i512), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u257), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u511), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u512), @Vector(3, u32), .{ 0, 1, 1 << 31 }); - try testArgs(@Vector(3, i1024), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u513), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u1023), @Vector(3, u32), .{ 0, 1, 1 << 31 }); try testArgs(@Vector(3, u1024), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, u1025), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i7), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i33), .{ -1 << 32, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i33), .{ -1 << 32, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i1025), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u8), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i16), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u9), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u15), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u16), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i32), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u17), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u31), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u32), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i64), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u33), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u63), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u64), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i128), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u65), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u127), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u128), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i256), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u129), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u255), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u256), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i512), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u257), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u511), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u512), @Vector(3, u33), .{ 0, 1, 1 << 32 }); - try testArgs(@Vector(3, i1024), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u513), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u1023), @Vector(3, u33), .{ 0, 1, 1 << 32 }); try testArgs(@Vector(3, u1024), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, u1025), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i7), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i63), .{ -1 << 62, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i63), .{ -1 << 62, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i1025), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u8), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i16), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u9), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u15), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u16), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i32), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u17), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u31), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u32), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i64), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u33), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u63), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u64), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i128), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u65), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u127), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u128), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i256), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u129), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u255), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u256), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i512), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u257), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u511), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u512), @Vector(3, u63), .{ 0, 1, 1 << 62 }); - try testArgs(@Vector(3, i1024), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u513), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u1023), @Vector(3, u63), .{ 0, 1, 1 << 62 }); try testArgs(@Vector(3, u1024), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, u1025), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i7), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i64), .{ -1 << 63, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i1025), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u8), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i16), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u9), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u15), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u16), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i32), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u17), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u31), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u32), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i64), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u33), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u63), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u64), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i128), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u65), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u127), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u128), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i256), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u129), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u255), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u256), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i512), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u257), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u511), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u512), @Vector(3, u64), .{ 0, 1, 1 << 63 }); - try testArgs(@Vector(3, i1024), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u513), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u1023), @Vector(3, u64), .{ 0, 1, 1 << 63 }); try testArgs(@Vector(3, u1024), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, u1025), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i7), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i65), .{ -1 << 64, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i1025), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u8), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i16), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u9), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u15), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u16), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i32), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u17), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u31), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u32), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i64), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u33), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u63), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u64), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i128), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u65), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u127), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u128), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i256), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u129), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u255), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u256), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i512), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u257), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u511), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u512), @Vector(3, u65), .{ 0, 1, 1 << 64 }); - try testArgs(@Vector(3, i1024), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u513), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u1023), @Vector(3, u65), .{ 0, 1, 1 << 64 }); try testArgs(@Vector(3, u1024), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, u1025), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i7), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i95), .{ -1 << 94, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i1025), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u8), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i16), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u9), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u15), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u16), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i32), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u17), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u31), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u32), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i64), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u33), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u63), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u64), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i128), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u65), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u127), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u128), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i256), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u129), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u255), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u256), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i512), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u257), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u511), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u512), @Vector(3, u95), .{ 0, 1, 1 << 94 }); - try testArgs(@Vector(3, i1024), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u513), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u1023), @Vector(3, u95), .{ 0, 1, 1 << 94 }); try testArgs(@Vector(3, u1024), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, u1025), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i7), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i96), .{ -1 << 95, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i1025), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u8), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i16), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u9), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u15), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u16), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i32), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u17), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u31), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u32), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i64), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u33), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u63), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u64), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i128), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u65), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u127), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u128), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i256), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u129), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u255), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u256), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i512), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u257), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u511), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u512), @Vector(3, u96), .{ 0, 1, 1 << 95 }); - try testArgs(@Vector(3, i1024), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u513), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u1023), @Vector(3, u96), .{ 0, 1, 1 << 95 }); try testArgs(@Vector(3, u1024), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, u1025), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i7), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i97), .{ -1 << 96, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i1025), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u8), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i16), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u9), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u15), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u16), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i32), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u17), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u31), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u32), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i64), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u33), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u63), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u64), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i128), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u65), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u127), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u128), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i256), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u129), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u255), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u256), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i512), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u257), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u511), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u512), @Vector(3, u97), .{ 0, 1, 1 << 96 }); - try testArgs(@Vector(3, i1024), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u513), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u1023), @Vector(3, u97), .{ 0, 1, 1 << 96 }); try testArgs(@Vector(3, u1024), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, u1025), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i7), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i127), .{ -1 << 126, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i1025), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u8), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i16), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u9), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u15), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u16), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i32), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u17), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u31), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u32), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i64), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u33), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u63), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u64), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i128), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u65), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u127), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u128), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i256), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u129), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u255), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u256), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i512), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u257), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u511), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u512), @Vector(3, u127), .{ 0, 1, 1 << 126 }); - try testArgs(@Vector(3, i1024), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u513), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u1023), @Vector(3, u127), .{ 0, 1, 1 << 126 }); try testArgs(@Vector(3, u1024), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, u1025), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i7), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i128), .{ -1 << 127, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i1025), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u8), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i16), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u9), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u15), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u16), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i32), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u17), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u31), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u32), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i64), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u33), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u63), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u64), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i128), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u65), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u127), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u128), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i256), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u129), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u255), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u256), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i512), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u257), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u511), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u512), @Vector(3, u128), .{ 0, 1, 1 << 127 }); - try testArgs(@Vector(3, i1024), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u513), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u1023), @Vector(3, u128), .{ 0, 1, 1 << 127 }); try testArgs(@Vector(3, u1024), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, u1025), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i7), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i129), .{ -1 << 128, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i1025), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u8), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i16), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u9), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u15), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u16), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i32), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u17), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u31), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u32), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i64), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u33), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u63), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u64), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i128), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u65), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u127), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u128), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i256), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u129), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u255), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u256), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i512), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u257), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u511), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u512), @Vector(3, u129), .{ 0, 1, 1 << 128 }); - try testArgs(@Vector(3, i1024), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u513), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u1023), @Vector(3, u129), .{ 0, 1, 1 << 128 }); try testArgs(@Vector(3, u1024), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, u1025), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i7), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i159), .{ -1 << 158, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i1025), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u8), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i16), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u9), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u15), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u16), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i32), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u17), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u31), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u32), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i64), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u33), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u63), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u64), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i128), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u65), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u127), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u128), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i256), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u129), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u255), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u256), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i512), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u257), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u511), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u512), @Vector(3, u159), .{ 0, 1, 1 << 158 }); - try testArgs(@Vector(3, i1024), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u513), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u1023), @Vector(3, u159), .{ 0, 1, 1 << 158 }); try testArgs(@Vector(3, u1024), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, u1025), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i7), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i160), .{ -1 << 159, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i1025), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u8), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i16), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u9), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u15), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u16), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i32), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u17), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u31), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u32), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i64), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u33), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u63), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u64), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i128), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u65), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u127), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u128), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i256), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u129), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u255), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u256), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i512), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u257), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u511), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u512), @Vector(3, u160), .{ 0, 1, 1 << 159 }); - try testArgs(@Vector(3, i1024), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u513), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u1023), @Vector(3, u160), .{ 0, 1, 1 << 159 }); try testArgs(@Vector(3, u1024), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, u1025), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i7), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i161), .{ -1 << 160, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i1025), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u8), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i16), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u9), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u15), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u16), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i32), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u17), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u31), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u32), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i64), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u33), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u63), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u64), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i128), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u65), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u127), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u128), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i256), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u129), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u255), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u256), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i512), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u257), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u511), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u512), @Vector(3, u161), .{ 0, 1, 1 << 160 }); - try testArgs(@Vector(3, i1024), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u513), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u1023), @Vector(3, u161), .{ 0, 1, 1 << 160 }); try testArgs(@Vector(3, u1024), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, u1025), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i7), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i191), .{ -1 << 190, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i1025), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u8), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i16), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u9), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u15), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u16), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i32), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u17), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u31), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u32), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i64), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u33), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u63), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u64), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i128), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u65), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u127), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u128), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i256), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u129), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u255), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u256), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i512), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u257), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u511), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u512), @Vector(3, u191), .{ 0, 1, 1 << 190 }); - try testArgs(@Vector(3, i1024), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u513), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u1023), @Vector(3, u191), .{ 0, 1, 1 << 190 }); try testArgs(@Vector(3, u1024), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, u1025), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i7), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i192), .{ -1 << 191, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i1025), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u8), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i16), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u9), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u15), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u16), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i32), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u17), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u31), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u32), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i64), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u33), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u63), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u64), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i128), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u65), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u127), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u128), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i256), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u129), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u255), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u256), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i512), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u257), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u511), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u512), @Vector(3, u192), .{ 0, 1, 1 << 191 }); - try testArgs(@Vector(3, i1024), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u513), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u1023), @Vector(3, u192), .{ 0, 1, 1 << 191 }); try testArgs(@Vector(3, u1024), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, u1025), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i7), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i193), .{ -1 << 192, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i1025), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u8), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i16), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u9), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u15), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u16), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i32), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u17), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u31), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u32), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i64), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u33), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u63), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u64), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i128), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u65), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u127), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u128), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i256), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u129), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u255), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u256), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i512), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u257), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u511), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u512), @Vector(3, u193), .{ 0, 1, 1 << 192 }); - try testArgs(@Vector(3, i1024), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u513), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u1023), @Vector(3, u193), .{ 0, 1, 1 << 192 }); try testArgs(@Vector(3, u1024), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, u1025), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i7), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i223), .{ -1 << 222, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i1025), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u8), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i16), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u9), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u15), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u16), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i32), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u17), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u31), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u32), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i64), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u33), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u63), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u64), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i128), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u65), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u127), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u128), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i256), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u129), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u255), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u256), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i512), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u257), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u511), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u512), @Vector(3, u223), .{ 0, 1, 1 << 222 }); - try testArgs(@Vector(3, i1024), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u513), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u1023), @Vector(3, u223), .{ 0, 1, 1 << 222 }); try testArgs(@Vector(3, u1024), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, u1025), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i7), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i224), .{ -1 << 223, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i1025), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u8), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i16), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u9), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u15), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u16), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i32), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u17), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u31), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u32), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i64), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u33), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u63), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u64), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i128), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u65), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u127), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u128), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i256), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u129), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u255), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u256), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i512), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u257), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u511), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u512), @Vector(3, u224), .{ 0, 1, 1 << 223 }); - try testArgs(@Vector(3, i1024), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u513), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u1023), @Vector(3, u224), .{ 0, 1, 1 << 223 }); try testArgs(@Vector(3, u1024), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, u1025), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i7), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i225), .{ -1 << 224, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i1025), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u8), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i16), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u9), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u15), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u16), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i32), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u17), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u31), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u32), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i64), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u33), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u63), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u64), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i128), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u65), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u127), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u128), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i256), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u129), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u255), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u256), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i512), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u257), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u511), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u512), @Vector(3, u225), .{ 0, 1, 1 << 224 }); - try testArgs(@Vector(3, i1024), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u513), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u1023), @Vector(3, u225), .{ 0, 1, 1 << 224 }); try testArgs(@Vector(3, u1024), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, u1025), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i7), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i255), .{ -1 << 254, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i1025), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u8), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i16), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u9), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u15), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u16), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i32), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u17), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u31), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u32), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i64), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u33), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u63), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u64), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i128), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u65), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u127), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u128), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i256), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u129), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u255), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u256), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i512), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u257), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u511), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u512), @Vector(3, u255), .{ 0, 1, 1 << 254 }); - try testArgs(@Vector(3, i1024), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u513), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u1023), @Vector(3, u255), .{ 0, 1, 1 << 254 }); try testArgs(@Vector(3, u1024), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, u1025), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i7), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i256), .{ -1 << 255, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i1025), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u8), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i16), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u9), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u15), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u16), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i32), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u17), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u31), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u32), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i64), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u33), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u63), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u64), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i128), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u65), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u127), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u128), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i256), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u129), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u255), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u256), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i512), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u257), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u511), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u512), @Vector(3, u256), .{ 0, 1, 1 << 255 }); - try testArgs(@Vector(3, i1024), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u513), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u1023), @Vector(3, u256), .{ 0, 1, 1 << 255 }); try testArgs(@Vector(3, u1024), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, u1025), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i7), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i257), .{ -1 << 256, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i1025), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u8), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i16), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u9), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u15), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u16), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i32), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u17), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u31), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u32), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i64), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u33), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u63), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u64), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i128), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u65), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u127), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u128), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i256), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u129), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u255), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u256), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i512), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u257), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u511), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u512), @Vector(3, u257), .{ 0, 1, 1 << 256 }); - try testArgs(@Vector(3, i1024), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u513), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u1023), @Vector(3, u257), .{ 0, 1, 1 << 256 }); try testArgs(@Vector(3, u1024), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, u1025), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i7), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i511), .{ -1 << 510, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i1025), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u8), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i16), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u9), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u15), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u16), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i32), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u17), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u31), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u32), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i64), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u33), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u63), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u64), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i128), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u65), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u127), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u128), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i256), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u129), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u255), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u256), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i512), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u257), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u511), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u512), @Vector(3, u511), .{ 0, 1, 1 << 510 }); - try testArgs(@Vector(3, i1024), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u513), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u1023), @Vector(3, u511), .{ 0, 1, 1 << 510 }); try testArgs(@Vector(3, u1024), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, u1025), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i7), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i512), .{ -1 << 511, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i1025), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u8), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i16), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u9), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u15), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u16), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i32), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u17), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u31), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u32), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i64), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u33), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u63), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u64), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i128), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u65), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u127), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u128), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i256), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u129), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u255), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u256), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i512), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u257), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u511), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u512), @Vector(3, u512), .{ 0, 1, 1 << 511 }); - try testArgs(@Vector(3, i1024), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u513), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u1023), @Vector(3, u512), .{ 0, 1, 1 << 511 }); try testArgs(@Vector(3, u1024), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, u1025), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i7), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i513), .{ -1 << 512, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i1025), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u8), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i16), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u9), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u15), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u16), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i32), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u17), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u31), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u32), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i64), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u33), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u63), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u64), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i128), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u65), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u127), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u128), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i256), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u129), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u255), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u256), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i512), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u257), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u511), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u512), @Vector(3, u513), .{ 0, 1, 1 << 512 }); - try testArgs(@Vector(3, i1024), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u513), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u1023), @Vector(3, u513), .{ 0, 1, 1 << 512 }); try testArgs(@Vector(3, u1024), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, u1025), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i7), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i1025), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u9), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u15), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u17), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u31), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u33), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u63), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u65), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u127), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u129), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u255), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u257), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u511), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); - try testArgs(@Vector(3, i1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u513), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u1023), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); try testArgs(@Vector(3, u1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, u1025), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i7), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); - try testArgs(@Vector(3, i8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i1025), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u9), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u15), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u17), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u31), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u33), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u63), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u65), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u127), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u129), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u255), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u257), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u511), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); - try testArgs(@Vector(3, i1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u513), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u1023), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); try testArgs(@Vector(3, u1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, u1025), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i7), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i9), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i15), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i17), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i31), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i33), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i63), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i65), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i127), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i129), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i255), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i257), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i511), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); - try testArgs(@Vector(3, u512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i513), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i1023), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, i1025), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u7), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u9), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u15), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u17), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u31), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u33), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u63), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u65), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u127), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u129), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u255), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u257), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u511), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u513), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u1023), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + try testArgs(@Vector(3, u1025), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); + } + fn testIntVectors() !void { + try testSameSignednessIntVectors(); + + try testArgs(@Vector(1, u8), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u16), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u32), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u64), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u128), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u256), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u512), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, u1024), @Vector(1, i1), .{-1}); + try testArgs(@Vector(1, i8), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i16), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i32), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i64), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i128), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i256), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i512), @Vector(1, u1), .{1}); + try testArgs(@Vector(1, i1024), @Vector(1, u1), .{1}); + + try testArgs(@Vector(2, u8), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u16), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u32), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u64), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u128), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u256), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u512), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 }); + try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i16), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i32), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i64), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i128), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i256), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i512), @Vector(2, u1), .{ 0, 1 }); + try testArgs(@Vector(2, i1024), @Vector(2, u1), .{ 0, 1 }); + + try testArgs(@Vector(3, u8), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i2), .{ -1 << 1, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i16), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i32), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i64), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i128), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i256), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i512), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + try testArgs(@Vector(3, i1024), @Vector(3, u2), .{ 0, 1, 1 << 1 }); + + try testArgs(@Vector(3, u8), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i3), .{ -1 << 2, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i16), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i32), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i64), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i128), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i256), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i512), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + try testArgs(@Vector(3, i1024), @Vector(3, u3), .{ 0, 1, 1 << 2 }); + + try testArgs(@Vector(3, u8), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i4), .{ -1 << 3, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i16), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i32), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i64), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i128), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i256), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i512), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + try testArgs(@Vector(3, i1024), @Vector(3, u4), .{ 0, 1, 1 << 3 }); + + try testArgs(@Vector(3, u8), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i5), .{ -1 << 4, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i16), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i32), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i64), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i128), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i256), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i512), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + try testArgs(@Vector(3, i1024), @Vector(3, u5), .{ 0, 1, 1 << 4 }); + + try testArgs(@Vector(3, u8), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i7), .{ -1 << 6, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i16), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i32), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i64), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i128), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i256), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i512), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + try testArgs(@Vector(3, i1024), @Vector(3, u7), .{ 0, 1, 1 << 6 }); + + try testArgs(@Vector(3, u8), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i8), .{ -1 << 7, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i16), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i32), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i64), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i128), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i256), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i512), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + try testArgs(@Vector(3, i1024), @Vector(3, u8), .{ 0, 1, 1 << 7 }); + + try testArgs(@Vector(3, u8), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i9), .{ -1 << 8, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i16), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i32), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i64), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i128), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i256), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i512), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + try testArgs(@Vector(3, i1024), @Vector(3, u9), .{ 0, 1, 1 << 8 }); + + try testArgs(@Vector(3, u8), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i15), .{ -1 << 14, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i16), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i32), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i64), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i128), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i256), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i512), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + try testArgs(@Vector(3, i1024), @Vector(3, u15), .{ 0, 1, 1 << 14 }); + + try testArgs(@Vector(3, u8), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i16), .{ -1 << 15, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i16), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i32), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i64), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i128), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i256), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i512), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + try testArgs(@Vector(3, i1024), @Vector(3, u16), .{ 0, 1, 1 << 15 }); + + try testArgs(@Vector(3, u8), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i17), .{ -1 << 16, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i16), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i32), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i64), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i128), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i256), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i512), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + try testArgs(@Vector(3, i1024), @Vector(3, u17), .{ 0, 1, 1 << 16 }); + + try testArgs(@Vector(3, u8), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i31), .{ -1 << 30, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i16), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i32), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i64), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i128), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i256), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i512), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + try testArgs(@Vector(3, i1024), @Vector(3, u31), .{ 0, 1, 1 << 30 }); + + try testArgs(@Vector(3, u8), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i32), .{ -1 << 31, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i16), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i32), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i64), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i128), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i256), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i512), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + try testArgs(@Vector(3, i1024), @Vector(3, u32), .{ 0, 1, 1 << 31 }); + + try testArgs(@Vector(3, u8), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i33), .{ -1 << 32, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i16), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i32), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i64), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i128), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i256), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i512), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + try testArgs(@Vector(3, i1024), @Vector(3, u33), .{ 0, 1, 1 << 32 }); + + try testArgs(@Vector(3, u8), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i63), .{ -1 << 62, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i16), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i32), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i64), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i128), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i256), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i512), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + try testArgs(@Vector(3, i1024), @Vector(3, u63), .{ 0, 1, 1 << 62 }); + + try testArgs(@Vector(3, u8), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i16), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i32), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i64), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i128), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i256), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i512), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + try testArgs(@Vector(3, i1024), @Vector(3, u64), .{ 0, 1, 1 << 63 }); + + try testArgs(@Vector(3, u8), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i16), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i32), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i64), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i128), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i256), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i512), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + try testArgs(@Vector(3, i1024), @Vector(3, u65), .{ 0, 1, 1 << 64 }); + + try testArgs(@Vector(3, u8), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i16), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i32), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i64), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i128), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i256), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i512), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + try testArgs(@Vector(3, i1024), @Vector(3, u95), .{ 0, 1, 1 << 94 }); + + try testArgs(@Vector(3, u8), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i16), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i32), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i64), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i128), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i256), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i512), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + try testArgs(@Vector(3, i1024), @Vector(3, u96), .{ 0, 1, 1 << 95 }); + + try testArgs(@Vector(3, u8), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i16), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i32), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i64), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i128), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i256), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i512), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + try testArgs(@Vector(3, i1024), @Vector(3, u97), .{ 0, 1, 1 << 96 }); + + try testArgs(@Vector(3, u8), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i16), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i32), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i64), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i128), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i256), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i512), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + try testArgs(@Vector(3, i1024), @Vector(3, u127), .{ 0, 1, 1 << 126 }); + + try testArgs(@Vector(3, u8), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i16), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i32), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i64), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i128), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i256), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i512), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + try testArgs(@Vector(3, i1024), @Vector(3, u128), .{ 0, 1, 1 << 127 }); + + try testArgs(@Vector(3, u8), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i16), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i32), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i64), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i128), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i256), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i512), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + try testArgs(@Vector(3, i1024), @Vector(3, u129), .{ 0, 1, 1 << 128 }); + + try testArgs(@Vector(3, u8), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i16), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i32), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i64), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i128), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i256), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i512), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + try testArgs(@Vector(3, i1024), @Vector(3, u159), .{ 0, 1, 1 << 158 }); + + try testArgs(@Vector(3, u8), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i16), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i32), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i64), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i128), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i256), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i512), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + try testArgs(@Vector(3, i1024), @Vector(3, u160), .{ 0, 1, 1 << 159 }); + + try testArgs(@Vector(3, u8), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i16), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i32), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i64), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i128), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i256), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i512), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + try testArgs(@Vector(3, i1024), @Vector(3, u161), .{ 0, 1, 1 << 160 }); + + try testArgs(@Vector(3, u8), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i16), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i32), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i64), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i128), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i256), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i512), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + try testArgs(@Vector(3, i1024), @Vector(3, u191), .{ 0, 1, 1 << 190 }); + + try testArgs(@Vector(3, u8), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i16), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i32), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i64), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i128), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i256), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i512), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + try testArgs(@Vector(3, i1024), @Vector(3, u192), .{ 0, 1, 1 << 191 }); + + try testArgs(@Vector(3, u8), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i16), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i32), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i64), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i128), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i256), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i512), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + try testArgs(@Vector(3, i1024), @Vector(3, u193), .{ 0, 1, 1 << 192 }); + + try testArgs(@Vector(3, u8), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i16), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i32), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i64), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i128), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i256), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i512), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + try testArgs(@Vector(3, i1024), @Vector(3, u223), .{ 0, 1, 1 << 222 }); + + try testArgs(@Vector(3, u8), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i16), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i32), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i64), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i128), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i256), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i512), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + try testArgs(@Vector(3, i1024), @Vector(3, u224), .{ 0, 1, 1 << 223 }); + + try testArgs(@Vector(3, u8), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i16), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i32), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i64), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i128), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i256), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i512), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + try testArgs(@Vector(3, i1024), @Vector(3, u225), .{ 0, 1, 1 << 224 }); + + try testArgs(@Vector(3, u8), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i16), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i32), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i64), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i128), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i256), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i512), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + try testArgs(@Vector(3, i1024), @Vector(3, u255), .{ 0, 1, 1 << 254 }); + + try testArgs(@Vector(3, u8), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i16), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i32), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i64), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i128), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i256), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i512), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + try testArgs(@Vector(3, i1024), @Vector(3, u256), .{ 0, 1, 1 << 255 }); + + try testArgs(@Vector(3, u8), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i16), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i32), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i64), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i128), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i256), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i512), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + try testArgs(@Vector(3, i1024), @Vector(3, u257), .{ 0, 1, 1 << 256 }); + + try testArgs(@Vector(3, u8), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i16), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i32), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i64), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i128), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i256), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i512), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + try testArgs(@Vector(3, i1024), @Vector(3, u511), .{ 0, 1, 1 << 510 }); + + try testArgs(@Vector(3, u8), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i16), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i32), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i64), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i128), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i256), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i512), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + try testArgs(@Vector(3, i1024), @Vector(3, u512), .{ 0, 1, 1 << 511 }); + + try testArgs(@Vector(3, u8), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i16), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i32), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i64), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i128), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i256), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i512), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + try testArgs(@Vector(3, i1024), @Vector(3, u513), .{ 0, 1, 1 << 512 }); + + try testArgs(@Vector(3, u8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + try testArgs(@Vector(3, i1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 }); + + try testArgs(@Vector(3, u8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 }); + try testArgs(@Vector(3, i8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + try testArgs(@Vector(3, i1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 }); + + try testArgs(@Vector(3, u8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); + try testArgs(@Vector(3, u512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, u1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 }); try testArgs(@Vector(3, i8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); try testArgs(@Vector(3, i1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); - try testArgs(@Vector(3, u1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 }); } fn testFloatVectors() !void { @setEvalBranchQuota(6_700); @@ -7115,7 +8550,7 @@ fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) ty }; } -fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type { +fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxed }) type { return struct { // noinline so that `mem_lhs` and `mem_rhs` are on the stack noinline fn testArgKinds( @@ -7145,14 +8580,14 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) var reg_lhs = mem_lhs; var reg_rhs = mem_rhs; _ = .{ ®_lhs, ®_rhs }; - try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.strict); - try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.strict); - try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.strict); - try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.strict); - try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.strict); - try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.strict); - try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.strict); - try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.strict); + try checkExpected(expected, op(Type, reg_lhs, reg_rhs), opts.compare); + try checkExpected(expected, op(Type, reg_lhs, mem_rhs), opts.compare); + try checkExpected(expected, op(Type, reg_lhs, imm_rhs), opts.compare); + try checkExpected(expected, op(Type, mem_lhs, reg_rhs), opts.compare); + try checkExpected(expected, op(Type, mem_lhs, mem_rhs), opts.compare); + try checkExpected(expected, op(Type, mem_lhs, imm_rhs), opts.compare); + try checkExpected(expected, op(Type, imm_lhs, reg_rhs), opts.compare); + try checkExpected(expected, op(Type, imm_lhs, mem_rhs), opts.compare); } // noinline for a more helpful stack trace noinline fn testArgs(comptime Type: type, comptime imm_lhs: Type, comptime imm_rhs: Type) !void { @@ -9926,6 +11361,163 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) }; } +inline fn add(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs + rhs) { + return lhs + rhs; +} +test add { + const test_add = binary(add, .{}); + try test_add.testFloats(); + try test_add.testFloatVectors(); +} + +inline fn subtract(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs - rhs) { + return lhs - rhs; +} +test subtract { + const test_subtract = binary(subtract, .{}); + try test_subtract.testFloats(); + try test_subtract.testFloatVectors(); +} + +inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) { + if (@inComptime() and @typeInfo(Type) == .vector) { + // workaround https://github.com/ziglang/zig/issues/22743 + // TODO: return @select(Scalar(Type), boolAnd(lhs == lhs, rhs == rhs), lhs * rhs, lhs + rhs); + // workaround https://github.com/ziglang/zig/issues/22744 + var res: Type = undefined; + for (0..@typeInfo(Type).vector.len) |i| res[i] = lhs[i] * rhs[i]; + return res; + } + // workaround https://github.com/ziglang/zig/issues/22745 + // TODO: return lhs * rhs; + var rt_lhs = lhs; + var rt_rhs = rhs; + _ = .{ &rt_lhs, &rt_rhs }; + return rt_lhs * rt_rhs; +} +test multiply { + const test_multiply = binary(multiply, .{}); + try test_multiply.testFloats(); + try test_multiply.testFloatVectors(); +} + +inline fn divide(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) { + return lhs / rhs; +} +test divide { + const test_divide = binary(divide, .{ .compare = .approx }); + try test_divide.testFloats(); + try test_divide.testFloatVectors(); +} + +// workaround https://github.com/ziglang/zig/issues/22748 +// TODO: @TypeOf(@divTrunc(lhs, rhs)) +inline fn divTrunc(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) { + if (@inComptime()) { + // workaround https://github.com/ziglang/zig/issues/22748 + return @trunc(lhs / rhs); + } + // workaround https://github.com/ziglang/zig/issues/22748 + // workaround https://github.com/ziglang/zig/issues/22749 + // TODO: return @divTrunc(lhs, rhs); + var rt_lhs = lhs; + var rt_rhs = rhs; + _ = .{ &rt_lhs, &rt_rhs }; + return @divTrunc(rt_lhs, rt_rhs); +} +test divTrunc { + const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int }); + try test_div_trunc.testFloats(); + try test_div_trunc.testFloatVectors(); +} + +// workaround https://github.com/ziglang/zig/issues/22748 +// TODO: @TypeOf(@divFloor(lhs, rhs)) +inline fn divFloor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) { + if (@inComptime()) { + // workaround https://github.com/ziglang/zig/issues/22748 + return @floor(lhs / rhs); + } + // workaround https://github.com/ziglang/zig/issues/22748 + // workaround https://github.com/ziglang/zig/issues/22749 + // TODO: return @divFloor(lhs, rhs); + var rt_lhs = lhs; + var rt_rhs = rhs; + _ = &rt_lhs; + _ = &rt_rhs; + return @divFloor(rt_lhs, rt_rhs); +} +test divFloor { + const test_div_floor = binary(divFloor, .{ .compare = .approx_int }); + try test_div_floor.testFloats(); + try test_div_floor.testFloatVectors(); +} + +// workaround https://github.com/ziglang/zig/issues/22748 +// TODO: @TypeOf(@rem(lhs, rhs)) +inline fn rem(comptime Type: type, lhs: Type, rhs: Type) Type { + if (@inComptime()) { + // workaround https://github.com/ziglang/zig/issues/22748 + switch (@typeInfo(Type)) { + else => return if (rhs != 0) @rem(lhs, rhs) else nan(Type), + .vector => |info| { + var res: Type = undefined; + inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @rem(lhs[i], rhs[i]) else nan(Scalar(Type)); + return res; + }, + } + } + // workaround https://github.com/ziglang/zig/issues/22748 + // TODO: return @rem(lhs, rhs); + var rt_rhs = rhs; + _ = &rt_rhs; + return @rem(lhs, rt_rhs); +} +test rem { + const test_rem = binary(rem, .{}); + try test_rem.testFloats(); + try test_rem.testFloatVectors(); +} + +inline fn mod(comptime Type: type, lhs: Type, rhs: Type) Type { + if (@inComptime()) { + const scalarMod = struct { + fn scalarMod(scalar_lhs: Scalar(Type), scalar_rhs: Scalar(Type)) Scalar(Type) { + // workaround https://github.com/ziglang/zig/issues/22748 + if (scalar_rhs == 0) return nan(Scalar(Type)); + const scalar_rem = @rem(scalar_lhs, scalar_rhs); + return if (scalar_rem == 0 or math.signbit(scalar_rem) == math.signbit(scalar_rhs)) scalar_rem else scalar_rem + scalar_rhs; + } + }.scalarMod; + // workaround https://github.com/ziglang/zig/issues/22748 + switch (@typeInfo(Type)) { + // workaround llvm backend bugs + // TODO: else => return if (rhs != 0) @mod(lhs, rhs) else nan(Type), + // TODO: .vector => |info| { + // TODO: var res: Type = undefined; + // TODO: inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @mod(lhs[i], rhs[i]) else nan(Scalar(Type)); + // TODO: return res; + // TODO: }, + else => return scalarMod(lhs, rhs), + .vector => |info| { + var res: Type = undefined; + inline for (0..info.len) |i| res[i] = scalarMod(lhs[i], rhs[i]); + return res; + }, + } + } + // workaround https://github.com/ziglang/zig/issues/22748 + // TODO: return @mod(lhs, rhs); + var rt_rhs = rhs; + _ = &rt_rhs; + return @mod(lhs, rt_rhs); +} +test mod { + const test_mod = binary(mod, .{}); + try test_mod.testFloats(); + try test_mod.testFloatVectors(); +} + inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) { return ~rhs; } @@ -9935,24 +11527,150 @@ test bitNot { try test_bit_not.testIntVectors(); } +inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) { + return @clz(rhs); +} +test clz { + const test_clz = unary(clz, .{}); + try test_clz.testInts(); + try test_clz.testIntVectors(); +} + +inline fn sqrt(comptime Type: type, rhs: Type) @TypeOf(@sqrt(rhs)) { + return @sqrt(rhs); +} +test sqrt { + const test_sqrt = unary(sqrt, .{ .libc_name = "sqrt", .compare = .approx }); + try test_sqrt.testFloats(); + try test_sqrt.testFloatVectors(); +} + +inline fn sin(comptime Type: type, rhs: Type) @TypeOf(@sin(rhs)) { + return @sin(rhs); +} +test sin { + const test_sin = unary(sin, .{ .libc_name = "sin", .compare = .strict }); + try test_sin.testFloats(); + try test_sin.testFloatVectors(); +} + +inline fn cos(comptime Type: type, rhs: Type) @TypeOf(@cos(rhs)) { + return @cos(rhs); +} +test cos { + const test_cos = unary(cos, .{ .libc_name = "cos", .compare = .strict }); + try test_cos.testFloats(); + try test_cos.testFloatVectors(); +} + +inline fn tan(comptime Type: type, rhs: Type) @TypeOf(@tan(rhs)) { + return @tan(rhs); +} +test tan { + const test_tan = unary(tan, .{ .libc_name = "tan", .compare = .strict }); + try test_tan.testFloats(); + try test_tan.testFloatVectors(); +} + +inline fn exp(comptime Type: type, rhs: Type) @TypeOf(@exp(rhs)) { + return @exp(rhs); +} +test exp { + const test_exp = unary(exp, .{ .libc_name = "exp", .compare = .strict }); + try test_exp.testFloats(); + try test_exp.testFloatVectors(); +} + +inline fn exp2(comptime Type: type, rhs: Type) @TypeOf(@exp2(rhs)) { + return @exp2(rhs); +} +test exp2 { + const test_exp2 = unary(exp2, .{ .libc_name = "exp2", .compare = .strict }); + try test_exp2.testFloats(); + try test_exp2.testFloatVectors(); +} + +inline fn log(comptime Type: type, rhs: Type) @TypeOf(@log(rhs)) { + return @log(rhs); +} +test log { + const test_log = unary(log, .{ .libc_name = "log", .compare = .strict }); + try test_log.testFloats(); + try test_log.testFloatVectors(); +} + +inline fn log2(comptime Type: type, rhs: Type) @TypeOf(@log2(rhs)) { + return @log2(rhs); +} +test log2 { + const test_log2 = unary(log2, .{ .libc_name = "log2", .compare = .strict }); + try test_log2.testFloats(); + try test_log2.testFloatVectors(); +} + +inline fn log10(comptime Type: type, rhs: Type) @TypeOf(@log10(rhs)) { + return @log10(rhs); +} +test log10 { + const test_log10 = unary(log10, .{ .libc_name = "log10", .compare = .strict }); + try test_log10.testFloats(); + try test_log10.testFloatVectors(); +} + inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) { return @abs(rhs); } test abs { - const test_abs = unary(abs, .{ .strict = true }); + const test_abs = unary(abs, .{ .compare = .strict }); try test_abs.testInts(); try test_abs.testIntVectors(); try test_abs.testFloats(); try test_abs.testFloatVectors(); } -inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) { - return @clz(rhs); +inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) { + return @floor(rhs); } -test clz { - const test_clz = unary(clz, .{}); - try test_clz.testInts(); - try test_clz.testIntVectors(); +test floor { + const test_floor = unary(floor, .{ .libc_name = "floor", .compare = .strict }); + try test_floor.testFloats(); + try test_floor.testFloatVectors(); +} + +inline fn ceil(comptime Type: type, rhs: Type) @TypeOf(@ceil(rhs)) { + return @ceil(rhs); +} +test ceil { + const test_ceil = unary(ceil, .{ .libc_name = "ceil", .compare = .strict }); + try test_ceil.testFloats(); + try test_ceil.testFloatVectors(); +} + +inline fn round(comptime Type: type, rhs: Type) @TypeOf(@round(rhs)) { + return @round(rhs); +} +test round { + const test_round = unary(round, .{ .libc_name = "round", .compare = .strict }); + try test_round.testFloats(); + try test_round.testFloatVectors(); +} + +inline fn trunc(comptime Type: type, rhs: Type) @TypeOf(@trunc(rhs)) { + return @trunc(rhs); +} +test trunc { + const test_trunc = unary(trunc, .{ .libc_name = "trunc", .compare = .strict }); + try test_trunc.testFloats(); + try test_trunc.testFloatVectors(); +} + +inline fn negate(comptime Type: type, rhs: Type) @TypeOf(-rhs) { + return -rhs; +} +test negate { + const test_negate = unary(negate, .{ .compare = .strict }); + try test_negate.testFloats(); + try test_negate.testFloatVectors(); } inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result { @@ -10005,11 +11723,20 @@ test intCast { try test_int_cast.testIntVectors(); } +inline fn truncate(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result { + return if (@typeInfo(Scalar(Result)).int.bits <= @typeInfo(Scalar(Type)).int.bits) @truncate(rhs) else rhs; +} +test truncate { + const test_truncate = cast(truncate, .{}); + try test_truncate.testSameSignednessInts(); + try test_truncate.testSameSignednessIntVectors(); +} + inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result { return @floatCast(rhs); } test floatCast { - const test_float_cast = cast(floatCast, .{ .strict = true }); + const test_float_cast = cast(floatCast, .{ .compare = .strict }); try test_float_cast.testFloats(); try test_float_cast.testFloatVectors(); } @@ -10212,3 +11939,12 @@ test optionalsNotEqual { try test_optionals_not_equal.testInts(); try test_optionals_not_equal.testFloats(); } + +inline fn mulAdd(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mulAdd(Type, lhs, rhs, rhs)) { + return @mulAdd(Type, lhs, rhs, rhs); +} +test mulAdd { + const test_mul_add = binary(mulAdd, .{ .compare = .approx }); + try test_mul_add.testFloats(); + try test_mul_add.testFloatVectors(); +}