authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-02-01 14:32:43-08:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-02-01 14:32:43-08:00
log963651bbf292b21017cac9e977a933b5e2a8c671
tree4b2dc8071e8ebe522f24d8dec8584582b25261d5
parentcdc9d65b0db3e988ae0f4006e05c178312518bfb
parent4c5abe5ac664a7214d822b09703682a5cac6891c
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22672 from jacobly0/x86_64-rewrite

x86_64: rewrite float conversions

27 files changed, 14666 insertions(+), 2274 deletions(-)

build.zig+1-1
......@@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void {
450450 .skip_non_native = skip_non_native,
451451 .skip_libc = skip_libc,
452452 .use_llvm = use_llvm,
453 .max_rss = 1 * 1024 * 1024 * 1024,
453 .max_rss = 1.25 * 1024 * 1024 * 1024,
454454 }));
455455
456456 test_modules_step.dependOn(tests.addModuleTests(b, .{
lib/std/zig/Zir.zig+2-1
......@@ -2114,7 +2114,7 @@ pub const Inst = struct {
21142114 ref_start_index = static_len,
21152115 _,
21162116
2117 pub const static_len = 92;
2117 pub const static_len = 93;
21182118
21192119 pub fn toRef(i: Index) Inst.Ref {
21202120 return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i));
......@@ -2215,6 +2215,7 @@ pub const Inst = struct {
22152215 vector_4_u64_type,
22162216 vector_4_f16_type,
22172217 vector_8_f16_type,
2218 vector_2_f32_type,
22182219 vector_4_f32_type,
22192220 vector_8_f32_type,
22202221 vector_2_f64_type,
src/Air.zig+3-14
......@@ -266,7 +266,8 @@ pub const Inst = struct {
266266 /// Boolean or binary NOT.
267267 /// Uses the `ty_op` field.
268268 not,
269 /// Reinterpret the memory representation of a value as a different type.
269 /// Reinterpret the bits of a value as a different type. This is like `@bitCast` but
270 /// also supports enums and pointers.
270271 /// Uses the `ty_op` field.
271272 bitcast,
272273 /// Uses the `ty_pl` field with payload `Block`. A block runs its body which always ends
......@@ -517,14 +518,6 @@ pub const Inst = struct {
517518 /// Read a value from a pointer.
518519 /// Uses the `ty_op` field.
519520 load,
520 /// Converts a pointer to its address. Result type is always `usize`.
521 /// Pointer type size may be any, including slice.
522 /// Uses the `un_op` field.
523 int_from_ptr,
524 /// Given a boolean, returns 0 or 1.
525 /// Result type is always `u1`.
526 /// Uses the `un_op` field.
527 int_from_bool,
528521 /// Return a value from a function.
529522 /// Result type is always noreturn; no instructions in a block follow this one.
530523 /// Uses the `un_op` field.
......@@ -1008,6 +1001,7 @@ pub const Inst = struct {
10081001 vector_4_u64_type = @intFromEnum(InternPool.Index.vector_4_u64_type),
10091002 vector_4_f16_type = @intFromEnum(InternPool.Index.vector_4_f16_type),
10101003 vector_8_f16_type = @intFromEnum(InternPool.Index.vector_8_f16_type),
1004 vector_2_f32_type = @intFromEnum(InternPool.Index.vector_2_f32_type),
10111005 vector_4_f32_type = @intFromEnum(InternPool.Index.vector_4_f32_type),
10121006 vector_8_f32_type = @intFromEnum(InternPool.Index.vector_8_f32_type),
10131007 vector_2_f64_type = @intFromEnum(InternPool.Index.vector_2_f64_type),
......@@ -1542,7 +1536,6 @@ pub fn typeOfIndex(air: *const Air, inst: Air.Inst.Index, ip: *const InternPool)
15421536 .c_va_end,
15431537 => return Type.void,
15441538
1545 .int_from_ptr,
15461539 .slice_len,
15471540 .ret_addr,
15481541 .frame_addr,
......@@ -1552,8 +1545,6 @@ pub fn typeOfIndex(air: *const Air, inst: Air.Inst.Index, ip: *const InternPool)
15521545 .wasm_memory_grow => return Type.isize,
15531546 .wasm_memory_size => return Type.usize,
15541547
1555 .int_from_bool => return Type.u1,
1556
15571548 .tag_name, .error_name => return Type.slice_const_u8_sentinel_0,
15581549
15591550 .call, .call_always_tail, .call_never_tail, .call_never_inline => {
......@@ -1815,8 +1806,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
18151806 .is_non_err_ptr,
18161807 .bool_and,
18171808 .bool_or,
1818 .int_from_ptr,
1819 .int_from_bool,
18201809 .fptrunc,
18211810 .fpext,
18221811 .intcast,
src/Air/types_resolved.zig-2
......@@ -208,8 +208,6 @@ fn checkBody(air: Air, body: []const Air.Inst.Index, zcu: *Zcu) bool {
208208 .is_non_err,
209209 .is_err_ptr,
210210 .is_non_err_ptr,
211 .int_from_ptr,
212 .int_from_bool,
213211 .ret,
214212 .ret_safe,
215213 .ret_load,
src/InternPool.zig+5
......@@ -4593,6 +4593,7 @@ pub const Index = enum(u32) {
45934593 vector_4_u64_type,
45944594 vector_4_f16_type,
45954595 vector_8_f16_type,
4596 vector_2_f32_type,
45964597 vector_4_f32_type,
45974598 vector_8_f32_type,
45984599 vector_2_f64_type,
......@@ -5124,6 +5125,8 @@ pub const static_keys = [_]Key{
51245125 .{ .vector_type = .{ .len = 4, .child = .f16_type } },
51255126 // @Vector(8, f16)
51265127 .{ .vector_type = .{ .len = 8, .child = .f16_type } },
5128 // @Vector(2, f32)
5129 .{ .vector_type = .{ .len = 2, .child = .f32_type } },
51275130 // @Vector(4, f32)
51285131 .{ .vector_type = .{ .len = 4, .child = .f32_type } },
51295132 // @Vector(8, f32)
......@@ -11778,6 +11781,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
1177811781 .vector_4_u64_type,
1177911782 .vector_4_f16_type,
1178011783 .vector_8_f16_type,
11784 .vector_2_f32_type,
1178111785 .vector_4_f32_type,
1178211786 .vector_8_f32_type,
1178311787 .vector_2_f64_type,
......@@ -12117,6 +12121,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId {
1211712121 .vector_4_u64_type,
1211812122 .vector_4_f16_type,
1211912123 .vector_8_f16_type,
12124 .vector_2_f32_type,
1212012125 .vector_4_f32_type,
1212112126 .vector_8_f32_type,
1212212127 .vector_2_f64_type,
src/Liveness.zig-4
......@@ -402,8 +402,6 @@ pub fn categorizeOperand(
402402 .is_non_err,
403403 .is_err_ptr,
404404 .is_non_err_ptr,
405 .int_from_ptr,
406 .int_from_bool,
407405 .is_named_enum_value,
408406 .tag_name,
409407 .error_name,
......@@ -1028,8 +1026,6 @@ fn analyzeInst(
10281026 .is_non_err,
10291027 .is_err_ptr,
10301028 .is_non_err_ptr,
1031 .int_from_ptr,
1032 .int_from_bool,
10331029 .is_named_enum_value,
10341030 .tag_name,
10351031 .error_name,
src/Liveness/Verify.zig-2
......@@ -130,8 +130,6 @@ fn verifyBody(self: *Verify, body: []const Air.Inst.Index) Error!void {
130130 .is_non_err,
131131 .is_err_ptr,
132132 .is_non_err_ptr,
133 .int_from_ptr,
134 .int_from_bool,
135133 .is_named_enum_value,
136134 .tag_name,
137135 .error_name,
src/Sema.zig+71-33
......@@ -10038,6 +10038,8 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
1003810038 };
1003910039 return sema.failWithOwnedErrorMsg(block, msg);
1004010040 }
10041 const len = if (is_vector) operand_ty.vectorLen(zcu) else undefined;
10042 const dest_ty: Type = if (is_vector) try pt.vectorType(.{ .child = .usize_type, .len = len }) else .usize;
1004110043 if (try sema.resolveValueIntable(operand)) |operand_val| ct: {
1004210044 if (!is_vector) {
1004310045 if (operand_val.isUndef(zcu)) {
......@@ -10048,8 +10050,6 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
1004810050 (try operand_val.toUnsignedIntSema(pt)),
1004910051 )).toIntern());
1005010052 }
10051 const len = operand_ty.vectorLen(zcu);
10052 const dest_ty = try pt.vectorType(.{ .child = .usize_type, .len = len });
1005310053 const new_elems = try sema.arena.alloc(InternPool.Index, len);
1005410054 for (new_elems, 0..) |*new_elem, i| {
1005510055 const ptr_val = try operand_val.elemValue(pt, i);
......@@ -10073,16 +10073,14 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
1007310073 }
1007410074 try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), ptr_src);
1007510075 try sema.validateRuntimeValue(block, ptr_src, operand);
10076 if (!is_vector) {
10077 return block.addUnOp(.int_from_ptr, operand);
10076 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
10077 return block.addBitCast(dest_ty, operand);
1007810078 }
10079 const len = operand_ty.vectorLen(zcu);
10080 const dest_ty = try pt.vectorType(.{ .child = .usize_type, .len = len });
1008110079 const new_elems = try sema.arena.alloc(Air.Inst.Ref, len);
1008210080 for (new_elems, 0..) |*new_elem, i| {
1008310081 const idx_ref = try pt.intRef(Type.usize, i);
1008410082 const old_elem = try block.addBinOp(.array_elem_val, operand, idx_ref);
10085 new_elem.* = try block.addUnOp(.int_from_ptr, old_elem);
10083 new_elem.* = try block.addBitCast(.usize, old_elem);
1008610084 }
1008710085 return block.addAggregateInit(dest_ty, new_elems);
1008810086}
......@@ -10569,7 +10567,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
1056910567 if (dst_bits >= src_bits) {
1057010568 return sema.coerce(block, dest_ty, operand, operand_src);
1057110569 }
10572 if (!is_vector) {
10570 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
1057310571 return block.addTyOp(.fptrunc, dest_ty, operand);
1057410572 }
1057510573 const vec_len = operand_ty.vectorLen(zcu);
......@@ -14746,7 +14744,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1474614744 });
1474714745
1474814746 const many_ty = slice_ty.slicePtrFieldType(zcu);
14749 const many_alloc = try block.addTyOp(.bitcast, many_ty, mutable_alloc);
14747 const many_alloc = try block.addBitCast(many_ty, mutable_alloc);
1475014748
1475114749 // lhs_dest_slice = dest[0..lhs.len]
1475214750 const slice_ty_ref = Air.internedToRef(slice_ty.toIntern());
......@@ -14796,7 +14794,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1479614794 try sema.storePtr2(block, src, elem_ptr, src, init, lhs_src, .store);
1479714795 }
1479814796
14799 return block.addTyOp(.bitcast, constant_alloc_ty, mutable_alloc);
14797 return block.addBitCast(constant_alloc_ty, mutable_alloc);
1480014798 }
1480114799
1480214800 var elem_i: u32 = 0;
......@@ -14829,7 +14827,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1482914827 try sema.storePtr2(block, src, elem_ptr, src, init, lhs_src, .store);
1483014828 }
1483114829
14832 return block.addTyOp(.bitcast, constant_alloc_ty, mutable_alloc);
14830 return block.addBitCast(constant_alloc_ty, mutable_alloc);
1483314831 }
1483414832
1483514833 const element_refs = try sema.arena.alloc(Air.Inst.Ref, result_len);
......@@ -16596,8 +16594,8 @@ fn analyzeArithmetic(
1659616594 };
1659716595
1659816596 try sema.requireRuntimeBlock(block, src, runtime_src);
16599 const lhs_int = try block.addUnOp(.int_from_ptr, lhs);
16600 const rhs_int = try block.addUnOp(.int_from_ptr, rhs);
16597 const lhs_int = try block.addBitCast(.usize, lhs);
16598 const rhs_int = try block.addBitCast(.usize, rhs);
1660116599 const address = try block.addBinOp(.sub_wrap, lhs_int, rhs_int);
1660216600 return try block.addBinOp(.div_exact, address, try pt.intRef(Type.usize, elem_size));
1660316601 }
......@@ -21215,14 +21213,14 @@ fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
2121521213 if (operand_scalar_ty.toIntern() != .bool_type) {
2121621214 return sema.fail(block, src, "expected 'bool', found '{}'", .{operand_scalar_ty.zigTypeTag(zcu)});
2121721215 }
21216 const len = if (is_vector) operand_ty.vectorLen(zcu) else undefined;
21217 const dest_ty: Type = if (is_vector) try pt.vectorType(.{ .child = .u1_type, .len = len }) else .u1;
2121821218 if (try sema.resolveValue(operand)) |val| {
2121921219 if (!is_vector) {
2122021220 if (val.isUndef(zcu)) return pt.undefRef(Type.u1);
2122121221 if (val.toBool()) return Air.internedToRef((try pt.intValue(Type.u1, 1)).toIntern());
2122221222 return Air.internedToRef((try pt.intValue(Type.u1, 0)).toIntern());
2122321223 }
21224 const len = operand_ty.vectorLen(zcu);
21225 const dest_ty = try pt.vectorType(.{ .child = .u1_type, .len = len });
2122621224 if (val.isUndef(zcu)) return pt.undefRef(dest_ty);
2122721225 const new_elems = try sema.arena.alloc(InternPool.Index, len);
2122821226 for (new_elems, 0..) |*new_elem, i| {
......@@ -21240,16 +21238,14 @@ fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
2124021238 .storage = .{ .elems = new_elems },
2124121239 } }));
2124221240 }
21243 if (!is_vector) {
21244 return block.addUnOp(.int_from_bool, operand);
21241 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
21242 return block.addBitCast(dest_ty, operand);
2124521243 }
21246 const len = operand_ty.vectorLen(zcu);
21247 const dest_ty = try pt.vectorType(.{ .child = .u1_type, .len = len });
2124821244 const new_elems = try sema.arena.alloc(Air.Inst.Ref, len);
2124921245 for (new_elems, 0..) |*new_elem, i| {
2125021246 const idx_ref = try pt.intRef(Type.usize, i);
2125121247 const old_elem = try block.addBinOp(.array_elem_val, operand, idx_ref);
21252 new_elem.* = try block.addUnOp(.int_from_bool, old_elem);
21248 new_elem.* = try block.addBitCast(.u1, old_elem);
2125321249 }
2125421250 return block.addAggregateInit(dest_ty, new_elems);
2125521251}
......@@ -22842,14 +22838,27 @@ fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
2284222838 .storage = .{ .repeated_elem = (try pt.intValue(dest_scalar_ty, 0)).toIntern() },
2284322839 } }));
2284422840 }
22845 if (!is_vector) {
22841 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
2284622842 const result = try block.addTyOp(if (block.float_mode == .optimized) .int_from_float_optimized else .int_from_float, dest_ty, operand);
2284722843 if (block.wantSafety()) {
2284822844 const back = try block.addTyOp(.float_from_int, operand_ty, result);
22849 const diff = try block.addBinOp(.sub, operand, back);
22850 const ok_pos = try block.addBinOp(if (block.float_mode == .optimized) .cmp_lt_optimized else .cmp_lt, diff, Air.internedToRef((try pt.floatValue(operand_ty, 1.0)).toIntern()));
22851 const ok_neg = try block.addBinOp(if (block.float_mode == .optimized) .cmp_gt_optimized else .cmp_gt, diff, Air.internedToRef((try pt.floatValue(operand_ty, -1.0)).toIntern()));
22852 const ok = try block.addBinOp(.bool_and, ok_pos, ok_neg);
22845 const diff = try block.addBinOp(if (block.float_mode == .optimized) .sub_optimized else .sub, operand, back);
22846 const ok = if (is_vector) ok: {
22847 const ok_pos = try block.addCmpVector(diff, Air.internedToRef((try sema.splat(operand_ty, try pt.floatValue(operand_scalar_ty, 1.0))).toIntern()), .lt);
22848 const ok_neg = try block.addCmpVector(diff, Air.internedToRef((try sema.splat(operand_ty, try pt.floatValue(operand_scalar_ty, -1.0))).toIntern()), .gt);
22849 const ok = try block.addBinOp(.bit_and, ok_pos, ok_neg);
22850 break :ok try block.addInst(.{
22851 .tag = .reduce,
22852 .data = .{ .reduce = .{
22853 .operand = ok,
22854 .operation = .And,
22855 } },
22856 });
22857 } else ok: {
22858 const ok_pos = try block.addBinOp(if (block.float_mode == .optimized) .cmp_lt_optimized else .cmp_lt, diff, Air.internedToRef((try pt.floatValue(operand_ty, 1.0)).toIntern()));
22859 const ok_neg = try block.addBinOp(if (block.float_mode == .optimized) .cmp_gt_optimized else .cmp_gt, diff, Air.internedToRef((try pt.floatValue(operand_ty, -1.0)).toIntern()));
22860 break :ok try block.addBinOp(.bool_and, ok_pos, ok_neg);
22861 };
2285322862 try sema.addSafetyCheck(block, src, ok, .integer_part_out_of_bounds);
2285422863 }
2285522864 return result;
......@@ -22901,7 +22910,7 @@ fn zirFloatFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
2290122910 }
2290222911
2290322912 try sema.requireRuntimeBlock(block, src, operand_src);
22904 if (!is_vector) {
22913 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
2290522914 return block.addTyOp(.float_from_int, dest_ty, operand);
2290622915 }
2290722916 const len = operand_ty.vectorLen(zcu);
......@@ -22980,17 +22989,37 @@ fn zirPtrFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
2298022989 });
2298122990 }
2298222991 try sema.requireRuntimeBlock(block, src, operand_src);
22983 if (!is_vector) {
22992 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
2298422993 if (block.wantSafety() and (try elem_ty.hasRuntimeBitsSema(pt) or elem_ty.zigTypeTag(zcu) == .@"fn")) {
2298522994 if (!ptr_ty.isAllowzeroPtr(zcu)) {
22986 const is_non_zero = try block.addBinOp(.cmp_neq, operand_coerced, .zero_usize);
22995 const is_non_zero = if (is_vector) all_non_zero: {
22996 const zero_usize = Air.internedToRef((try sema.splat(operand_ty, .zero_usize)).toIntern());
22997 const is_non_zero = try block.addCmpVector(operand_coerced, zero_usize, .neq);
22998 break :all_non_zero try block.addInst(.{
22999 .tag = .reduce,
23000 .data = .{ .reduce = .{
23001 .operand = is_non_zero,
23002 .operation = .And,
23003 } },
23004 });
23005 } else try block.addBinOp(.cmp_neq, operand_coerced, .zero_usize);
2298723006 try sema.addSafetyCheck(block, src, is_non_zero, .cast_to_null);
2298823007 }
2298923008 if (ptr_align.compare(.gt, .@"1")) {
2299023009 const align_bytes_minus_1 = ptr_align.toByteUnits().? - 1;
22991 const align_minus_1 = Air.internedToRef((try pt.intValue(Type.usize, align_bytes_minus_1)).toIntern());
23010 const align_minus_1 = Air.internedToRef((try sema.splat(operand_ty, try pt.intValue(Type.usize, align_bytes_minus_1))).toIntern());
2299223011 const remainder = try block.addBinOp(.bit_and, operand_coerced, align_minus_1);
22993 const is_aligned = try block.addBinOp(.cmp_eq, remainder, .zero_usize);
23012 const is_aligned = if (is_vector) all_aligned: {
23013 const splat_zero_usize = Air.internedToRef((try sema.splat(operand_ty, .zero_usize)).toIntern());
23014 const is_aligned = try block.addCmpVector(remainder, splat_zero_usize, .eq);
23015 break :all_aligned try block.addInst(.{
23016 .tag = .reduce,
23017 .data = .{ .reduce = .{
23018 .operand = is_aligned,
23019 .operation = .And,
23020 } },
23021 });
23022 } else try block.addBinOp(.cmp_eq, remainder, .zero_usize);
2299423023 try sema.addSafetyCheck(block, src, is_aligned, .incorrect_alignment);
2299523024 }
2299623025 }
......@@ -23543,7 +23572,11 @@ fn ptrCastFull(
2354323572 if (block.wantSafety() and operand_ty.ptrAllowsZero(zcu) and !dest_ty.ptrAllowsZero(zcu) and
2354423573 (try Type.fromInterned(dest_info.child).hasRuntimeBitsSema(pt) or Type.fromInterned(dest_info.child).zigTypeTag(zcu) == .@"fn"))
2354523574 {
23546 const ptr_int = try block.addUnOp(.int_from_ptr, ptr);
23575 const actual_ptr = if (src_info.flags.size == .slice)
23576 try sema.analyzeSlicePtr(block, src, ptr, operand_ty)
23577 else
23578 ptr;
23579 const ptr_int = try block.addBitCast(.usize, actual_ptr);
2354723580 const is_non_zero = try block.addBinOp(.cmp_neq, ptr_int, .zero_usize);
2354823581 const ok = if (src_info.flags.size == .slice and dest_info.flags.size == .slice) ok: {
2354923582 const len = try sema.analyzeSliceLen(block, operand_src, ptr);
......@@ -23559,7 +23592,11 @@ fn ptrCastFull(
2355923592 {
2356023593 const align_bytes_minus_1 = dest_align.toByteUnits().? - 1;
2356123594 const align_minus_1 = Air.internedToRef((try pt.intValue(Type.usize, align_bytes_minus_1)).toIntern());
23562 const ptr_int = try block.addUnOp(.int_from_ptr, ptr);
23595 const actual_ptr = if (src_info.flags.size == .slice)
23596 try sema.analyzeSlicePtr(block, src, ptr, operand_ty)
23597 else
23598 ptr;
23599 const ptr_int = try block.addBitCast(.usize, actual_ptr);
2356323600 const remainder = try block.addBinOp(.bit_and, ptr_int, align_minus_1);
2356423601 const is_aligned = try block.addBinOp(.cmp_eq, remainder, .zero_usize);
2356523602 const ok = if (src_info.flags.size == .slice and dest_info.flags.size == .slice) ok: {
......@@ -31407,7 +31444,7 @@ fn coerceCompatiblePtrs(
3140731444 try sema.analyzeSlicePtr(block, inst_src, inst, inst_ty)
3140831445 else
3140931446 inst;
31410 const ptr_int = try block.addUnOp(.int_from_ptr, actual_ptr);
31447 const ptr_int = try block.addBitCast(.usize, actual_ptr);
3141131448 const is_non_zero = try block.addBinOp(.cmp_neq, ptr_int, .zero_usize);
3141231449 const ok = if (inst_ty.isSlice(zcu)) ok: {
3141331450 const len = try sema.analyzeSliceLen(block, inst_src, inst);
......@@ -36700,6 +36737,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
3670036737 .vector_4_u64_type,
3670136738 .vector_4_f16_type,
3670236739 .vector_8_f16_type,
36740 .vector_2_f32_type,
3670336741 .vector_4_f32_type,
3670436742 .vector_8_f32_type,
3670536743 .vector_2_f64_type,
src/Type.zig+1
......@@ -4216,6 +4216,7 @@ pub const vector_2_u64: Type = .{ .ip_index = .vector_2_u64_type };
42164216pub const vector_4_u64: Type = .{ .ip_index = .vector_4_u64_type };
42174217pub const vector_4_f16: Type = .{ .ip_index = .vector_4_f16_type };
42184218pub const vector_8_f16: Type = .{ .ip_index = .vector_8_f16_type };
4219pub const vector_2_f32: Type = .{ .ip_index = .vector_2_f32_type };
42194220pub const vector_4_f32: Type = .{ .ip_index = .vector_4_f32_type };
42204221pub const vector_8_f32: Type = .{ .ip_index = .vector_8_f32_type };
42214222pub const vector_2_f64: Type = .{ .ip_index = .vector_2_f64_type };
src/Zcu.zig+9
......@@ -3336,6 +3336,15 @@ pub const Feature = enum {
33363336 safety_checked_instructions,
33373337 /// If the backend supports running from another thread.
33383338 separate_thread,
3339 /// If the backend supports the following AIR instructions with vector types:
3340 /// * `Air.Inst.Tag.bit_and`
3341 /// * `Air.Inst.Tag.bit_or`
3342 /// * `Air.Inst.Tag.bitcast`
3343 /// * `Air.Inst.Tag.float_from_int`
3344 /// * `Air.Inst.Tag.fptrunc`
3345 /// * `Air.Inst.Tag.int_from_float`
3346 /// If not supported, Sema will scalarize the operation.
3347 all_vector_instructions,
33393348};
33403349
33413350pub fn backendSupportsFeature(zcu: *const Zcu, comptime feature: Feature) bool {
src/arch/aarch64/CodeGen.zig-15
......@@ -734,7 +734,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
734734 .fpext => try self.airFpext(inst),
735735 .intcast => try self.airIntCast(inst),
736736 .trunc => try self.airTrunc(inst),
737 .int_from_bool => try self.airIntFromBool(inst),
738737 .is_non_null => try self.airIsNonNull(inst),
739738 .is_non_null_ptr => try self.airIsNonNullPtr(inst),
740739 .is_null => try self.airIsNull(inst),
......@@ -746,7 +745,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
746745 .load => try self.airLoad(inst),
747746 .loop => try self.airLoop(inst),
748747 .not => try self.airNot(inst),
749 .int_from_ptr => try self.airIntFromPtr(inst),
750748 .ret => try self.airRet(inst),
751749 .ret_safe => try self.airRet(inst), // TODO
752750 .ret_load => try self.airRetLoad(inst),
......@@ -1294,13 +1292,6 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) InnerError!void {
12941292 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
12951293}
12961294
1297fn airIntFromBool(self: *Self, inst: Air.Inst.Index) InnerError!void {
1298 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
1299 const operand = try self.resolveInst(un_op);
1300 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else operand;
1301 return self.finishAir(inst, result, .{ un_op, .none, .none });
1302}
1303
13041295fn airNot(self: *Self, inst: Air.Inst.Index) InnerError!void {
13051296 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
13061297 const pt = self.pt;
......@@ -5906,12 +5897,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I
59065897 }
59075898}
59085899
5909fn airIntFromPtr(self: *Self, inst: Air.Inst.Index) InnerError!void {
5910 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
5911 const result = try self.resolveInst(un_op);
5912 return self.finishAir(inst, result, .{ un_op, .none, .none });
5913}
5914
59155900fn airBitCast(self: *Self, inst: Air.Inst.Index) InnerError!void {
59165901 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
59175902 const result = if (self.liveness.isUnused(inst)) .dead else result: {
src/arch/arm/CodeGen.zig-15
......@@ -723,7 +723,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
723723 .fpext => try self.airFpext(inst),
724724 .intcast => try self.airIntCast(inst),
725725 .trunc => try self.airTrunc(inst),
726 .int_from_bool => try self.airIntFromBool(inst),
727726 .is_non_null => try self.airIsNonNull(inst),
728727 .is_non_null_ptr => try self.airIsNonNullPtr(inst),
729728 .is_null => try self.airIsNull(inst),
......@@ -735,7 +734,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
735734 .load => try self.airLoad(inst),
736735 .loop => try self.airLoop(inst),
737736 .not => try self.airNot(inst),
738 .int_from_ptr => try self.airIntFromPtr(inst),
739737 .ret => try self.airRet(inst),
740738 .ret_safe => try self.airRet(inst), // TODO
741739 .ret_load => try self.airRetLoad(inst),
......@@ -1258,13 +1256,6 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void {
12581256 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
12591257}
12601258
1261fn airIntFromBool(self: *Self, inst: Air.Inst.Index) !void {
1262 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
1263 const operand = try self.resolveInst(un_op);
1264 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else operand;
1265 return self.finishAir(inst, result, .{ un_op, .none, .none });
1266}
1267
12681259fn airNot(self: *Self, inst: Air.Inst.Index) !void {
12691260 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
12701261 const pt = self.pt;
......@@ -5874,12 +5865,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I
58745865 }
58755866}
58765867
5877fn airIntFromPtr(self: *Self, inst: Air.Inst.Index) !void {
5878 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
5879 const result = try self.resolveInst(un_op);
5880 return self.finishAir(inst, result, .{ un_op, .none, .none });
5881}
5882
58835868fn airBitCast(self: *Self, inst: Air.Inst.Index) !void {
58845869 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
58855870 const result = if (self.liveness.isUnused(inst)) .dead else result: {
src/arch/riscv64/CodeGen.zig+2-25
......@@ -1557,7 +1557,6 @@ fn genBody(func: *Func, body: []const Air.Inst.Index) InnerError!void {
15571557 .fpext => try func.airFpext(inst),
15581558 .intcast => try func.airIntCast(inst),
15591559 .trunc => try func.airTrunc(inst),
1560 .int_from_bool => try func.airIntFromBool(inst),
15611560 .is_non_null => try func.airIsNonNull(inst),
15621561 .is_non_null_ptr => try func.airIsNonNullPtr(inst),
15631562 .is_null => try func.airIsNull(inst),
......@@ -1569,7 +1568,6 @@ fn genBody(func: *Func, body: []const Air.Inst.Index) InnerError!void {
15691568 .load => try func.airLoad(inst),
15701569 .loop => try func.airLoop(inst),
15711570 .not => try func.airNot(inst),
1572 .int_from_ptr => try func.airIntFromPtr(inst),
15731571 .ret => try func.airRet(inst, false),
15741572 .ret_safe => try func.airRet(inst, true),
15751573 .ret_load => try func.airRetLoad(inst),
......@@ -2299,13 +2297,6 @@ fn airTrunc(func: *Func, inst: Air.Inst.Index) !void {
22992297 return func.finishAir(inst, operand, .{ ty_op.operand, .none, .none });
23002298}
23012299
2302fn airIntFromBool(func: *Func, inst: Air.Inst.Index) !void {
2303 const un_op = func.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
2304 const operand = try func.resolveInst(un_op);
2305 const result: MCValue = if (func.liveness.isUnused(inst)) .unreach else operand;
2306 return func.finishAir(inst, result, .{ un_op, .none, .none });
2307}
2308
23092300fn airNot(func: *Func, inst: Air.Inst.Index) !void {
23102301 const ty_op = func.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
23112302 const result: MCValue = if (func.liveness.isUnused(inst)) .unreach else result: {
......@@ -7262,21 +7253,6 @@ fn genSetMem(
72627253 }
72637254}
72647255
7265fn airIntFromPtr(func: *Func, inst: Air.Inst.Index) !void {
7266 const un_op = func.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
7267 const result = result: {
7268 const src_mcv = try func.resolveInst(un_op);
7269 const src_ty = func.typeOfIndex(inst);
7270 if (func.reuseOperand(inst, un_op, 0, src_mcv)) break :result src_mcv;
7271
7272 const dst_mcv = try func.allocRegOrMem(src_ty, inst, true);
7273 const dst_ty = func.typeOfIndex(inst);
7274 try func.genCopy(dst_ty, dst_mcv, src_mcv);
7275 break :result dst_mcv;
7276 };
7277 return func.finishAir(inst, result, .{ un_op, .none, .none });
7278}
7279
72807256fn airBitCast(func: *Func, inst: Air.Inst.Index) !void {
72817257 const pt = func.pt;
72827258 const zcu = pt.zcu;
......@@ -7285,8 +7261,9 @@ fn airBitCast(func: *Func, inst: Air.Inst.Index) !void {
72857261 const result = if (func.liveness.isUnused(inst)) .unreach else result: {
72867262 const src_mcv = try func.resolveInst(ty_op.operand);
72877263
7288 const dst_ty = func.typeOfIndex(inst);
72897264 const src_ty = func.typeOf(ty_op.operand);
7265 if (src_ty.toIntern() == .bool_type) break :result src_mcv;
7266 const dst_ty = func.typeOfIndex(inst);
72907267
72917268 const src_lock = if (src_mcv.getReg()) |reg| func.register_manager.lockReg(reg) else null;
72927269 defer if (src_lock) |lock| func.register_manager.unlockReg(lock);
src/arch/sparc64/CodeGen.zig-15
......@@ -577,7 +577,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
577577 .fpext => @panic("TODO try self.airFpext(inst)"),
578578 .intcast => try self.airIntCast(inst),
579579 .trunc => try self.airTrunc(inst),
580 .int_from_bool => try self.airIntFromBool(inst),
581580 .is_non_null => try self.airIsNonNull(inst),
582581 .is_non_null_ptr => @panic("TODO try self.airIsNonNullPtr(inst)"),
583582 .is_null => try self.airIsNull(inst),
......@@ -589,7 +588,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
589588 .load => try self.airLoad(inst),
590589 .loop => try self.airLoop(inst),
591590 .not => try self.airNot(inst),
592 .int_from_ptr => try self.airIntFromPtr(inst),
593591 .ret => try self.airRet(inst),
594592 .ret_safe => try self.airRet(inst), // TODO
595593 .ret_load => try self.airRetLoad(inst),
......@@ -1077,13 +1075,6 @@ fn airBinOp(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
10771075 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });
10781076}
10791077
1080fn airIntFromBool(self: *Self, inst: Air.Inst.Index) !void {
1081 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
1082 const operand = try self.resolveInst(un_op);
1083 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else operand;
1084 return self.finishAir(inst, result, .{ un_op, .none, .none });
1085}
1086
10871078fn airPtrArithmetic(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
10881079 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
10891080 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
......@@ -2230,12 +2221,6 @@ fn airPtrSlicePtrPtr(self: *Self, inst: Air.Inst.Index) !void {
22302221 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
22312222}
22322223
2233fn airIntFromPtr(self: *Self, inst: Air.Inst.Index) !void {
2234 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
2235 const result = try self.resolveInst(un_op);
2236 return self.finishAir(inst, result, .{ un_op, .none, .none });
2237}
2238
22392224fn airRem(self: *Self, inst: Air.Inst.Index) !void {
22402225 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
22412226 const lhs = try self.resolveInst(bin_op.lhs);
src/arch/wasm/CodeGen.zig+5-26
......@@ -1926,7 +1926,6 @@ fn genInst(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
19261926 .br => cg.airBr(inst),
19271927 .repeat => cg.airRepeat(inst),
19281928 .switch_dispatch => return cg.fail("TODO implement `switch_dispatch`", .{}),
1929 .int_from_bool => cg.airIntFromBool(inst),
19301929 .cond_br => cg.airCondBr(inst),
19311930 .intcast => cg.airIntcast(inst),
19321931 .fptrunc => cg.airFptrunc(inst),
......@@ -1972,7 +1971,6 @@ fn genInst(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
19721971 .ptr_sub => cg.airPtrBinOp(inst, .sub),
19731972 .ptr_elem_ptr => cg.airPtrElemPtr(inst),
19741973 .ptr_elem_val => cg.airPtrElemVal(inst),
1975 .int_from_ptr => cg.airIntFromPtr(inst),
19761974 .ret => cg.airRet(inst),
19771975 .ret_safe => cg.airRet(inst), // TODO
19781976 .ret_ptr => cg.airRetPtr(inst),
......@@ -3777,7 +3775,11 @@ fn airBitcast(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
37773775 break :result try cg.wrapOperand(operand, wanted_ty);
37783776 }
37793777
3780 break :result cg.reuseOperand(ty_op.operand, operand);
3778 break :result switch (operand) {
3779 // for stack offset, return a pointer to this offset.
3780 .stack_offset => try cg.buildPointerOffset(operand, 0, .new),
3781 else => cg.reuseOperand(ty_op.operand, operand),
3782 };
37813783 };
37823784 return cg.finishAir(inst, result, &.{ty_op.operand});
37833785}
......@@ -4637,14 +4639,6 @@ fn trunc(cg: *CodeGen, operand: WValue, wanted_ty: Type, given_ty: Type) InnerEr
46374639 return result;
46384640}
46394641
4640fn airIntFromBool(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
4641 const un_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
4642 const operand = try cg.resolveInst(un_op);
4643 const result = cg.reuseOperand(un_op, operand);
4644
4645 return cg.finishAir(inst, result, &.{un_op});
4646}
4647
46484642fn airArrayToSlice(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
46494643 const zcu = cg.pt.zcu;
46504644 const ty_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -4668,21 +4662,6 @@ fn airArrayToSlice(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
46684662 return cg.finishAir(inst, slice_local, &.{ty_op.operand});
46694663}
46704664
4671fn airIntFromPtr(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
4672 const zcu = cg.pt.zcu;
4673 const un_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
4674 const operand = try cg.resolveInst(un_op);
4675 const ptr_ty = cg.typeOf(un_op);
4676 const result = if (ptr_ty.isSlice(zcu))
4677 try cg.slicePtr(operand)
4678 else switch (operand) {
4679 // for stack offset, return a pointer to this offset.
4680 .stack_offset => try cg.buildPointerOffset(operand, 0, .new),
4681 else => cg.reuseOperand(un_op, operand),
4682 };
4683 return cg.finishAir(inst, result, &.{un_op});
4684}
4685
46864665fn airPtrElemVal(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
46874666 const zcu = cg.pt.zcu;
46884667 const bin_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
src/arch/x86_64/CodeGen.zig+7783-837
......@@ -1339,7 +1339,7 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {
13391339 self.mir_extra.appendAssumeCapacity(switch (field.type) {
13401340 u32 => @field(extra, field.name),
13411341 i32, Mir.Memory.Info => @bitCast(@field(extra, field.name)),
1342 bits.FrameIndex => @intFromEnum(@field(extra, field.name)),
1342 FrameIndex => @intFromEnum(@field(extra, field.name)),
13431343 else => @compileError("bad field type: " ++ field.name ++ ": " ++ @typeName(field.type)),
13441344 });
13451345 }
......@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24142414}
24152415
24162416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417 @setEvalBranchQuota(3_900);
2417 @setEvalBranchQuota(4_500);
24182418 const pt = cg.pt;
24192419 const zcu = pt.zcu;
24202420 const ip = &zcu.intern_pool;
......@@ -2499,9 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24992499 .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),
25002500
25012501 .bitcast => try cg.airBitCast(inst),
2502 .fptrunc => try cg.airFptrunc(inst),
2503 .fpext => try cg.airFpext(inst),
2504 .intcast => try cg.airIntCast(inst),
25052502 .trunc => try cg.airTrunc(inst),
25062503 .is_non_null => try cg.airIsNonNull(inst),
25072504 .is_null => try cg.airIsNull(inst),
......@@ -2591,7 +2588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
25912588 },
25922589 .dst_temps = .{.{ .rc = .general_purpose }},
25932590 .each = .{ .once = &.{
2594 .{ ._, ._, .lea, .dst0p, .leaa(.none, .src0, .add_src0_elem_size_times_src1), ._, ._ },
2591 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ },
25952592 } },
25962593 }, .{
25972594 .dst_constraints = .{.{ .elem_size_is = 1 }},
......@@ -2600,7 +2597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26002597 },
26012598 .dst_temps = .{.{ .rc = .general_purpose }},
26022599 .each = .{ .once = &.{
2603 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
2600 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
26042601 } },
26052602 }, .{
26062603 .dst_constraints = .{.{ .elem_size_is = 2 }},
......@@ -2609,7 +2606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26092606 },
26102607 .dst_temps = .{.{ .rc = .general_purpose }},
26112608 .each = .{ .once = &.{
2612 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"2", .src1), ._, ._ },
2609 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
26132610 } },
26142611 }, .{
26152612 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
......@@ -2618,8 +2615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26182615 },
26192616 .dst_temps = .{.{ .rc = .general_purpose }},
26202617 .each = .{ .once = &.{
2621 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"2", .src1), ._, ._ },
2622 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2618 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2619 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
26232620 } },
26242621 }, .{
26252622 .dst_constraints = .{.{ .elem_size_is = 4 }},
......@@ -2628,7 +2625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26282625 },
26292626 .dst_temps = .{.{ .rc = .general_purpose }},
26302627 .each = .{ .once = &.{
2631 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"4", .src1), ._, ._ },
2628 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
26322629 } },
26332630 }, .{
26342631 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
......@@ -2637,8 +2634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26372634 },
26382635 .dst_temps = .{.{ .ref = .src1 }},
26392636 .each = .{ .once = &.{
2640 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"4", .src1), ._, ._ },
2641 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2637 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2638 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
26422639 } },
26432640 }, .{
26442641 .required_features = .{ .@"64bit", null, null, null },
......@@ -2648,7 +2645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26482645 },
26492646 .dst_temps = .{.{ .rc = .general_purpose }},
26502647 .each = .{ .once = &.{
2651 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"8", .src1), ._, ._ },
2648 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
26522649 } },
26532650 }, .{
26542651 .required_features = .{ .@"64bit", null, null, null },
......@@ -2658,8 +2655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26582655 },
26592656 .dst_temps = .{.{ .ref = .src1 }},
26602657 .each = .{ .once = &.{
2661 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"8", .src1), ._, ._ },
2662 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2658 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2659 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
26632660 } },
26642661 }, .{
26652662 .dst_constraints = .{.po2_elem_size},
......@@ -2670,7 +2667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26702667 .clobbers = .{ .eflags = true },
26712668 .each = .{ .once = &.{
26722669 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2673 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
2670 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
26742671 } },
26752672 }, .{
26762673 .patterns = &.{
......@@ -2680,7 +2677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26802677 .clobbers = .{ .eflags = true },
26812678 .each = .{ .once = &.{
26822679 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
2683 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2680 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
26842681 } },
26852682 } }) catch |err| switch (err) {
26862683 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -2707,7 +2704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27072704 },
27082705 .dst_temps = .{.{ .rc = .general_purpose }},
27092706 .each = .{ .once = &.{
2710 .{ ._, ._, .lea, .dst0p, .leaa(.none, .src0, .sub_src0_elem_size_times_src1), ._, ._ },
2707 .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ },
27112708 } },
27122709 }, .{
27132710 .dst_constraints = .{.{ .elem_size_is = 1 }},
......@@ -2718,7 +2715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27182715 .clobbers = .{ .eflags = true },
27192716 .each = .{ .once = &.{
27202717 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2721 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
2718 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
27222719 } },
27232720 }, .{
27242721 .dst_constraints = .{.{ .elem_size_is = 2 }},
......@@ -2729,7 +2726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27292726 .clobbers = .{ .eflags = true },
27302727 .each = .{ .once = &.{
27312728 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2732 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"2", .src1), ._, ._ },
2729 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
27332730 } },
27342731 }, .{
27352732 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
......@@ -2739,9 +2736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27392736 .dst_temps = .{.{ .rc = .general_purpose }},
27402737 .clobbers = .{ .eflags = true },
27412738 .each = .{ .once = &.{
2742 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"2", .src1), ._, ._ },
2739 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
27432740 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2744 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2741 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
27452742 } },
27462743 }, .{
27472744 .dst_constraints = .{.{ .elem_size_is = 4 }},
......@@ -2752,7 +2749,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27522749 .clobbers = .{ .eflags = true },
27532750 .each = .{ .once = &.{
27542751 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2755 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"4", .src1), ._, ._ },
2752 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
27562753 } },
27572754 }, .{
27582755 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
......@@ -2762,9 +2759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27622759 .dst_temps = .{.{ .rc = .general_purpose }},
27632760 .clobbers = .{ .eflags = true },
27642761 .each = .{ .once = &.{
2765 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"4", .src1), ._, ._ },
2762 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
27662763 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2767 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2764 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
27682765 } },
27692766 }, .{
27702767 .required_features = .{ .@"64bit", null, null, null },
......@@ -2776,7 +2773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27762773 .clobbers = .{ .eflags = true },
27772774 .each = .{ .once = &.{
27782775 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2779 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"8", .src1), ._, ._ },
2776 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
27802777 } },
27812778 }, .{
27822779 .required_features = .{ .@"64bit", null, null, null },
......@@ -2787,9 +2784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
27872784 .dst_temps = .{.{ .rc = .general_purpose }},
27882785 .clobbers = .{ .eflags = true },
27892786 .each = .{ .once = &.{
2790 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"8", .src1), ._, ._ },
2787 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
27912788 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2792 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2789 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
27932790 } },
27942791 }, .{
27952792 .dst_constraints = .{.po2_elem_size},
......@@ -2801,7 +2798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28012798 .each = .{ .once = &.{
28022799 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
28032800 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2804 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
2801 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
28052802 } },
28062803 }, .{
28072804 .patterns = &.{
......@@ -2811,7 +2808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
28112808 .clobbers = .{ .eflags = true },
28122809 .each = .{ .once = &.{
28132810 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
2814 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
2811 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
28152812 } },
28162813 } }) catch |err| switch (err) {
28172814 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -4542,7 +4539,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45424539 .dst_temps = .{.{ .rc = .sse }},
45434540 .each = .{ .once = &.{
45444541 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4545 .{ ._, ._dqa, .mov, .dst0x, .lea(.xword, .tmp0), ._, ._ },
4542 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
45464543 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
45474544 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
45484545 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
......@@ -4680,7 +4677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
46804677 .clobbers = .{ .eflags = true },
46814678 .each = .{ .once = &.{
46824679 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4683 .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
4680 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
46844681 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
46854682 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
46864683 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
......@@ -4999,7 +4996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49994996 .dst_temps = .{.{ .rc = .sse }},
50004997 .each = .{ .once = &.{
50014998 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5002 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
4999 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
50035000 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
50045001 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
50055002 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
......@@ -5030,7 +5027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50305027 .dst_temps = .{.{ .ref = .src0 }},
50315028 .each = .{ .once = &.{
50325029 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5033 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
5030 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
50345031 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
50355032 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
50365033 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
......@@ -5062,7 +5059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50625059 .dst_temps = .{.{ .rc = .sse }},
50635060 .each = .{ .once = &.{
50645061 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5065 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
5062 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
50665063 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
50675064 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
50685065 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
......@@ -5092,7 +5089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50925089 .clobbers = .{ .eflags = true },
50935090 .each = .{ .once = &.{
50945091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5095 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
5092 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
50965093 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
50975094 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
50985095 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
......@@ -5128,7 +5125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51285125 .clobbers = .{ .eflags = true },
51295126 .each = .{ .once = &.{
51305127 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5131 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
5128 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
51325129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
51335130 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
51345131 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
......@@ -5164,7 +5161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51645161 .clobbers = .{ .eflags = true },
51655162 .each = .{ .once = &.{
51665163 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5167 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
5164 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
51685165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
51695166 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
51705167 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
......@@ -5266,7 +5263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
52665263 .{ ._, ._c, .cl, ._, ._, ._, ._ },
52675264 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
52685265 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5269 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
5266 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
52705267 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
52715268 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
52725269 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
......@@ -5305,7 +5302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53055302 .{ ._, ._c, .cl, ._, ._, ._, ._ },
53065303 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
53075304 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5308 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
5305 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
53095306 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
53105307 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
53115308 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
......@@ -5344,7 +5341,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53445341 .{ ._, ._c, .cl, ._, ._, ._, ._ },
53455342 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
53465343 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5347 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
5344 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
53485345 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
53495346 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
53505347 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
......@@ -5381,7 +5378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53815378 .{ ._, ._c, .cl, ._, ._, ._, ._ },
53825379 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
53835380 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5384 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
5381 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
53855382 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
53865383 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
53875384 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
......@@ -5569,13 +5566,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55695566 .dst_temps = .{.mem},
55705567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
55715568 .each = .{ .once = &.{
5572 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5569 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
55735570 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
55745571 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
55755572 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
55765573 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
55775574 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5578 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
5575 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
55795576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
55805577 } },
55815578 }, .{
......@@ -5602,14 +5599,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56025599 .dst_temps = .{.mem},
56035600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
56045601 .each = .{ .once = &.{
5605 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
56065603 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
56075604 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
56085605 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
56095606 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
56105607 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
56115608 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5612 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
5609 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
56135610 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56145611 } },
56155612 }, .{
......@@ -5636,7 +5633,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56365633 .dst_temps = .{.mem},
56375634 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
56385635 .each = .{ .once = &.{
5639 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
56405637 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
56415638 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
56425639 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
......@@ -5644,7 +5641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56445641 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
56455642 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
56465643 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
5647 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
5644 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
56485645 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56495646 } },
56505647 }, .{
......@@ -5659,7 +5656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56595656 .call_frame = .{ .alignment = .@"16" },
56605657 .extra_temps = .{
56615658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5662 .{ .type = .f16, .kind = .{ .reg = .eax } },
5659 .{ .type = .f16, .kind = .{ .reg = .ax } },
56635660 .{ .type = .f32, .kind = .mem },
56645661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
56655662 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
......@@ -5671,7 +5668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56715668 .dst_temps = .{.mem},
56725669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
56735670 .each = .{ .once = &.{
5674 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
56755672 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
56765673 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
56775674 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
......@@ -5682,7 +5679,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56825679 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
56835680 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
56845681 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
5685 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
5682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
56865683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
56875684 } },
56885685 }, .{
......@@ -5880,14 +5877,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58805877 .dst_temps = .{.mem},
58815878 .clobbers = .{ .eflags = true },
58825879 .each = .{ .once = &.{
5883 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5880 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
58845881 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
58855882 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
58865883 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
58875884 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
58885885 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
58895886 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
5890 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },
5887 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
58915888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
58925889 } },
58935890 }, .{
......@@ -5913,7 +5910,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59135910 .dst_temps = .{.mem},
59145911 .clobbers = .{ .eflags = true },
59155912 .each = .{ .once = &.{
5916 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5913 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
59175914 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
59185915 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
59195916 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -5921,7 +5918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59215918 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
59225919 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
59235920 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5924 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
5921 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
59255922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
59265923 } },
59275924 }, .{
......@@ -5947,7 +5944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59475944 .dst_temps = .{.mem},
59485945 .clobbers = .{ .eflags = true },
59495946 .each = .{ .once = &.{
5950 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
5947 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
59515948 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
59525949 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
59535950 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -5957,7 +5954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59575954 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
59585955 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
59595956 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5960 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
5957 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
59615958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
59625959 } },
59635960 }, .{
......@@ -6181,14 +6178,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61816178 .dst_temps = .{.mem},
61826179 .clobbers = .{ .eflags = true },
61836180 .each = .{ .once = &.{
6184 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6181 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
61856182 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
61866183 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
61876184 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
61886185 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
61896186 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
61906187 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
6191 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },
6188 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
61926189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
61936190 } },
61946191 }, .{
......@@ -6214,7 +6211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62146211 .dst_temps = .{.mem},
62156212 .clobbers = .{ .eflags = true },
62166213 .each = .{ .once = &.{
6217 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6214 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
62186215 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
62196216 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
62206217 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -6222,7 +6219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62226219 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
62236220 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
62246221 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
6225 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
6222 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
62266223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
62276224 } },
62286225 }, .{
......@@ -6248,7 +6245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62486245 .dst_temps = .{.mem},
62496246 .clobbers = .{ .eflags = true },
62506247 .each = .{ .once = &.{
6251 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6248 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
62526249 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
62536250 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
62546251 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -6258,7 +6255,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62586255 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
62596256 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
62606257 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6261 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
6258 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
62626259 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
62636260 } },
62646261 }, .{
......@@ -6285,14 +6282,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62856282 .dst_temps = .{.mem},
62866283 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
62876284 .each = .{ .once = &.{
6288 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
62896286 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
62906287 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
62916288 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
62926289 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
62936290 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
62946291 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
6295 .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ },
6292 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
62966293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
62976294 } },
62986295 }, .{
......@@ -6582,12 +6579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
65826579 .dst_temps = .{.mem},
65836580 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
65846581 .each = .{ .once = &.{
6585 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
65866583 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
65876584 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
65886585 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
65896586 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6590 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
6587 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
65916588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
65926589 } },
65936590 }, .{
......@@ -6614,12 +6611,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
66146611 .dst_temps = .{.mem},
66156612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
66166613 .each = .{ .once = &.{
6617 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6614 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
66186615 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
66196616 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
66206617 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
66216618 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6622 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
6619 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
66236620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
66246621 } },
66256622 }, .{
......@@ -6646,12 +6643,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
66466643 .dst_temps = .{.mem},
66476644 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
66486645 .each = .{ .once = &.{
6649 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
6646 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
66506647 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
66516648 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
66526649 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
66536650 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6654 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
6651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
66556652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
66566653 } },
66576654 } }) catch |err| switch (err) {
......@@ -8382,7 +8379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83828379 .dst_temps = .{.{ .rc = .sse }},
83838380 .each = .{ .once = &.{
83848381 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8385 .{ ._, ._dqa, .mov, .dst0x, .lea(.xword, .tmp0), ._, ._ },
8382 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
83868383 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
83878384 .{ ._, .p_, .xor, .dst0x, .src1x, ._, ._ },
83888385 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
......@@ -8520,7 +8517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85208517 .clobbers = .{ .eflags = true },
85218518 .each = .{ .once = &.{
85228519 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8523 .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
8520 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
85248521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
85258522 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
85268523 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
......@@ -8843,7 +8840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88438840 .dst_temps = .{.{ .rc = .sse }},
88448841 .each = .{ .once = &.{
88458842 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8846 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
8843 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
88478844 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
88488845 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
88498846 .{ ._, .vp_q, .cmpgt, .dst0x, .dst0x, .tmp2x, ._ },
......@@ -8874,7 +8871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88748871 .dst_temps = .{.{ .ref = .src0 }},
88758872 .each = .{ .once = &.{
88768873 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8877 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
8874 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
88788875 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
88798876 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
88808877 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
......@@ -8906,7 +8903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89068903 .dst_temps = .{.{ .rc = .sse }},
89078904 .each = .{ .once = &.{
89088905 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8909 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
8906 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
89108907 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
89118908 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
89128909 .{ ._, .vp_q, .cmpgt, .dst0y, .dst0y, .tmp2y, ._ },
......@@ -8936,7 +8933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89368933 .clobbers = .{ .eflags = true },
89378934 .each = .{ .once = &.{
89388935 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8939 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
8936 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
89408937 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
89418938 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
89428939 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
......@@ -8972,7 +8969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89728969 .clobbers = .{ .eflags = true },
89738970 .each = .{ .once = &.{
89748971 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8975 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
8972 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
89768973 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
89778974 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
89788975 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
......@@ -9008,7 +9005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90089005 .clobbers = .{ .eflags = true },
90099006 .each = .{ .once = &.{
90109007 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
9011 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
9008 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
90129009 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
90139010 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
90149011 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
......@@ -9110,7 +9107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91109107 .{ ._, ._c, .cl, ._, ._, ._, ._ },
91119108 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
91129109 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9113 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
9110 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
91149111 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
91159112 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
91169113 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
......@@ -9149,7 +9146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91499146 .{ ._, ._c, .cl, ._, ._, ._, ._ },
91509147 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
91519148 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9152 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
9149 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
91539150 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
91549151 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
91559152 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
......@@ -9188,7 +9185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91889185 .{ ._, ._c, .cl, ._, ._, ._, ._ },
91899186 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
91909187 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9191 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
9188 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
91929189 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
91939190 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
91949191 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
......@@ -9225,7 +9222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92259222 .{ ._, ._c, .cl, ._, ._, ._, ._ },
92269223 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
92279224 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9228 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
9225 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
92299226 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
92309227 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
92319228 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
......@@ -9413,13 +9410,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94139410 .dst_temps = .{.mem},
94149411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
94159412 .each = .{ .once = &.{
9416 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9413 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
94179414 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
94189415 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
94199416 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
94209417 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
94219418 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
9422 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
9419 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94239420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94249421 } },
94259422 }, .{
......@@ -9446,14 +9443,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94469443 .dst_temps = .{.mem},
94479444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
94489445 .each = .{ .once = &.{
9449 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
94509447 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
94519448 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
94529449 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
94539450 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
94549451 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
94559452 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
9456 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
9453 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94579454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94589455 } },
94599456 }, .{
......@@ -9480,7 +9477,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94809477 .dst_temps = .{.mem},
94819478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
94829479 .each = .{ .once = &.{
9483 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
94849481 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
94859482 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
94869483 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
......@@ -9488,7 +9485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94889485 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
94899486 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
94909487 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
9491 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
9488 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94929489 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94939490 } },
94949491 }, .{
......@@ -9503,7 +9500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95039500 .call_frame = .{ .alignment = .@"16" },
95049501 .extra_temps = .{
95059502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9506 .{ .type = .f16, .kind = .{ .reg = .eax } },
9503 .{ .type = .f16, .kind = .{ .reg = .ax } },
95079504 .{ .type = .f32, .kind = .mem },
95089505 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
95099506 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
......@@ -9515,7 +9512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95159512 .dst_temps = .{.mem},
95169513 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
95179514 .each = .{ .once = &.{
9518 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9515 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
95199516 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
95209517 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
95219518 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
......@@ -9526,7 +9523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95269523 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
95279524 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
95289525 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
9529 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },
9526 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95309527 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95319528 } },
95329529 }, .{
......@@ -9724,14 +9721,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97249721 .dst_temps = .{.mem},
97259722 .clobbers = .{ .eflags = true },
97269723 .each = .{ .once = &.{
9727 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9724 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
97289725 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
97299726 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
97309727 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
97319728 .{ ._, .v_ps, .min, .tmp1y, .tmp2y, .tmp1y, ._ },
97329729 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
97339730 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
9734 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },
9731 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
97359732 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97369733 } },
97379734 }, .{
......@@ -9757,7 +9754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97579754 .dst_temps = .{.mem},
97589755 .clobbers = .{ .eflags = true },
97599756 .each = .{ .once = &.{
9760 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
97619758 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
97629759 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
97639760 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -9765,7 +9762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97659762 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
97669763 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
97679764 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
9768 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
9765 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
97699766 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97709767 } },
97719768 }, .{
......@@ -9791,7 +9788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97919788 .dst_temps = .{.mem},
97929789 .clobbers = .{ .eflags = true },
97939790 .each = .{ .once = &.{
9794 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
9791 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
97959792 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
97969793 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
97979794 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -9801,7 +9798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98019798 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
98029799 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
98039800 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
9804 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
9801 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
98059802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98069803 } },
98079804 }, .{
......@@ -10025,14 +10022,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1002510022 .dst_temps = .{.mem},
1002610023 .clobbers = .{ .eflags = true },
1002710024 .each = .{ .once = &.{
10028 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10025 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1002910026 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
1003010027 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
1003110028 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
1003210029 .{ ._, .v_pd, .min, .tmp1y, .tmp2y, .tmp1y, ._ },
1003310030 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
1003410031 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
10035 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },
10032 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1003610033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1003710034 } },
1003810035 }, .{
......@@ -10058,7 +10055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1005810055 .dst_temps = .{.mem},
1005910056 .clobbers = .{ .eflags = true },
1006010057 .each = .{ .once = &.{
10061 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10058 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1006210059 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1006310060 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1006410061 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -10066,7 +10063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1006610063 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
1006710064 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
1006810065 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
10069 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
10066 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1007010067 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1007110068 } },
1007210069 }, .{
......@@ -10092,7 +10089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1009210089 .dst_temps = .{.mem},
1009310090 .clobbers = .{ .eflags = true },
1009410091 .each = .{ .once = &.{
10095 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1009610093 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1009710094 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1009810095 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
......@@ -10102,7 +10099,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1010210099 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
1010310100 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
1010410101 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10105 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
10102 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1010610103 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1010710104 } },
1010810105 }, .{
......@@ -10129,14 +10126,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1012910126 .dst_temps = .{.mem},
1013010127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
1013110128 .each = .{ .once = &.{
10132 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1013310130 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
1013410131 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
1013510132 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
1013610133 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
1013710134 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
1013810135 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
10139 .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ },
10136 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
1014010137 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1014110138 } },
1014210139 }, .{
......@@ -10414,12 +10411,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1041410411 .dst_temps = .{.mem},
1041510412 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
1041610413 .each = .{ .once = &.{
10417 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10414 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1041810415 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1041910416 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1042010417 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
1042110418 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10422 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
10419 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1042310420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1042410421 } },
1042510422 }, .{
......@@ -10446,12 +10443,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1044610443 .dst_temps = .{.mem},
1044710444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
1044810445 .each = .{ .once = &.{
10449 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1045010447 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1045110448 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1045210449 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
1045310450 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10454 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
10451 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1045510452 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1045610453 } },
1045710454 }, .{
......@@ -10478,12 +10475,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1047810475 .dst_temps = .{.mem},
1047910476 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
1048010477 .each = .{ .once = &.{
10481 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },
10478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
1048210479 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1048310480 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1048410481 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
1048510482 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10486 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },
10483 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1048710484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1048810485 } },
1048910486 } }) catch |err| switch (err) {
......@@ -10999,7 +10996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1099910996 .dst_temps = .{.{ .ref = .src0 }},
1100010997 .each = .{ .once = &.{
1100110998 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11002 .{ ._, .p_, .xor, .dst0q, .lea(.qword, .tmp0), ._, ._ },
10999 .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ },
1100311000 } },
1100411001 }, .{
1100511002 .required_features = .{ .avx, null, null, null },
......@@ -11033,7 +11030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1103311030 .dst_temps = .{.{ .rc = .sse }},
1103411031 .each = .{ .once = &.{
1103511032 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11036 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
11033 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
1103711034 } },
1103811035 }, .{
1103911036 .required_features = .{ .sse2, null, null, null },
......@@ -11067,7 +11064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1106711064 .dst_temps = .{.{ .ref = .src0 }},
1106811065 .each = .{ .once = &.{
1106911066 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11070 .{ ._, .p_, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
11067 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
1107111068 } },
1107211069 }, .{
1107311070 .required_features = .{ .sse, null, null, null },
......@@ -11089,7 +11086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1108911086 .dst_temps = .{.{ .ref = .src0 }},
1109011087 .each = .{ .once = &.{
1109111088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11092 .{ ._, ._ps, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
11089 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
1109311090 } },
1109411091 }, .{
1109511092 .required_features = .{ .avx2, null, null, null },
......@@ -11123,7 +11120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1112311120 .dst_temps = .{.{ .rc = .sse }},
1112411121 .each = .{ .once = &.{
1112511122 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11126 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
11123 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
1112711124 } },
1112811125 }, .{
1112911126 .required_features = .{ .avx, null, null, null },
......@@ -11157,7 +11154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1115711154 .dst_temps = .{.{ .rc = .sse }},
1115811155 .each = .{ .once = &.{
1115911156 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11160 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
11157 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
1116111158 } },
1116211159 }, .{
1116311160 .required_features = .{ .avx2, null, null, null },
......@@ -11814,7 +11811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1181411811 .dst_temps = .{.{ .ref = .src0 }},
1181511812 .each = .{ .once = &.{
1181611813 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11817 .{ ._, .p_, .xor, .dst0q, .lea(.qword, .tmp0), ._, ._ },
11814 .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ },
1181811815 } },
1181911816 }, .{
1182011817 .required_features = .{ .avx, null, null, null },
......@@ -11848,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1184811845 .dst_temps = .{.{ .rc = .sse }},
1184911846 .each = .{ .once = &.{
1185011847 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11851 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
11848 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
1185211849 } },
1185311850 }, .{
1185411851 .required_features = .{ .sse2, null, null, null },
......@@ -11882,7 +11879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1188211879 .dst_temps = .{.{ .ref = .src0 }},
1188311880 .each = .{ .once = &.{
1188411881 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11885 .{ ._, .p_, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
11882 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
1188611883 } },
1188711884 }, .{
1188811885 .required_features = .{ .sse, null, null, null },
......@@ -11904,7 +11901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1190411901 .dst_temps = .{.{ .ref = .src0 }},
1190511902 .each = .{ .once = &.{
1190611903 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11907 .{ ._, ._ps, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
11904 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
1190811905 } },
1190911906 }, .{
1191011907 .required_features = .{ .avx2, null, null, null },
......@@ -11938,7 +11935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1193811935 .dst_temps = .{.{ .rc = .sse }},
1193911936 .each = .{ .once = &.{
1194011937 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11941 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
11938 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
1194211939 } },
1194311940 }, .{
1194411941 .required_features = .{ .avx, null, null, null },
......@@ -11972,7 +11969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1197211969 .dst_temps = .{.{ .rc = .sse }},
1197311970 .each = .{ .once = &.{
1197411971 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11975 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
11972 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
1197611973 } },
1197711974 }, .{
1197811975 .required_features = .{ .@"64bit", null, null, null },
......@@ -11992,13 +11989,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1199211989 },
1199311990 .dst_temps = .{.mem},
1199411991 .each = .{ .once = &.{
11995 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ },
11992 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1199611993 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
11997 .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_src0_unaligned_size), ._, ._ },
11998 .{ ._, ._, .xor, .tmp2q, .leaia(.qword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ },
11999 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_src0_unaligned_size), .tmp2q, ._, ._ },
12000 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
12001 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
11994 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ },
11995 .{ ._, ._, .xor, .tmp2q, .leai(.tmp1q, .tmp0), ._, ._ },
11996 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
11997 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
11998 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
11999 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1200212000 } },
1200312001 }, .{
1200412002 .patterns = &.{
......@@ -12017,13 +12015,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1201712015 },
1201812016 .dst_temps = .{.mem},
1201912017 .each = .{ .once = &.{
12020 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ },
12018 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1202112019 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
12022 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_src0_unaligned_size), ._, ._ },
12023 .{ ._, ._, .xor, .tmp2d, .leaia(.dword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ },
12024 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_src0_unaligned_size), .tmp2d, ._, ._ },
12025 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
12026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
12020 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ },
12021 .{ ._, ._, .xor, .tmp2d, .leai(.tmp1d, .tmp0), ._, ._ },
12022 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
12023 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 4), ._, ._ },
12024 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
12025 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1202712026 } },
1202812027 } }) catch |err| switch (err) {
1202912028 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
......@@ -13161,7 +13160,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1316113160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1316213161 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1316313162 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13164 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13163 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1316513164 } },
1316613165 }, .{
1316713166 .required_features = .{ .@"64bit", .lzcnt, null, null },
......@@ -13190,7 +13189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1319013189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1319113190 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1319213191 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13193 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13192 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1319413193 } },
1319513194 }, .{
1319613195 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
......@@ -13220,7 +13219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1322013219 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1322113220 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
1322213221 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13223 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
13222 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
1322413223 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1322513224 } },
1322613225 }, .{
......@@ -13250,7 +13249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1325013249 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
1325113250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1325213251 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13253 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
13252 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
1325413253 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1325513254 } },
1325613255 }, .{
......@@ -13281,7 +13280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1328113280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1328213281 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1328313282 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13284 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13283 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1328513284 } },
1328613285 }, .{
1328713286 .required_features = .{ .@"64bit", .lzcnt, null, null },
......@@ -13310,7 +13309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1331013309 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1331113310 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1331213311 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13313 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13312 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1331413313 } },
1331513314 }, .{
1331613315 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
......@@ -13340,7 +13339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1334013339 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1334113340 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
1334213341 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13343 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
13342 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
1334413343 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1334513344 } },
1334613345 }, .{
......@@ -13370,7 +13369,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1337013369 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
1337113370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1337213371 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13373 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
13372 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
1337413373 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1337513374 } },
1337613375 }, .{
......@@ -13404,7 +13403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1340413403 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1340513404 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1340613405 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13407 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13406 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1340813407 } },
1340913408 }, .{
1341013409 .required_features = .{ .@"64bit", .lzcnt, null, null },
......@@ -13436,7 +13435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1343613435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1343713436 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1343813437 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13439 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13438 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1344013439 } },
1344113440 }, .{
1344213441 .required_features = .{ .@"64bit", null, null, null },
......@@ -13467,7 +13466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1346713466 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
1346813467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1346913468 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13470 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
13469 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
1347113470 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1347213471 } },
1347313472 }, .{
......@@ -13501,7 +13500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1350113500 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1350213501 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1350313502 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13504 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13503 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1350513504 } },
1350613505 }, .{
1350713506 .required_features = .{ .@"64bit", .lzcnt, null, null },
......@@ -13533,7 +13532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1353313532 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1353413533 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
1353513534 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
13536 .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
13535 .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
1353713536 } },
1353813537 }, .{
1353913538 .required_features = .{ .@"64bit", null, null, null },
......@@ -13564,7 +13563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1356413563 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
1356513564 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1356613565 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13567 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
13566 .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
1356813567 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
1356913568 } },
1357013569 }, .{
......@@ -14558,8 +14557,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1455814557 } },
1455914558 }, .{
1456014559 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14561 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1456214560 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14561 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1456314562 .patterns = &.{
1456414563 .{ .src = .{ .to_mem, .none } },
1456514564 },
......@@ -14581,7 +14580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1458114580 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1458214581 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
1458314582 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14584 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14583 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1458514584 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
1458614585 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1458714586 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
......@@ -14590,16 +14589,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1459014589 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1459114590 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1459214591 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14593 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14592 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1459414593 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
14595 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14594 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1459614595 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1459714596 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1459814597 } },
1459914598 }, .{
1460014599 .required_features = .{ .@"64bit", .lzcnt, null, null },
14601 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1460214600 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14601 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1460314602 .patterns = &.{
1460414603 .{ .src = .{ .to_mem, .none } },
1460514604 },
......@@ -14621,7 +14620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1462114620 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1462214621 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
1462314622 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14624 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14623 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1462514624 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1462614625 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
1462714626 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
......@@ -14629,16 +14628,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1462914628 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1463014629 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1463114630 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14632 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14631 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1463314632 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
14634 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14633 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1463514634 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1463614635 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1463714636 } },
1463814637 }, .{
1463914638 .required_features = .{ .@"64bit", null, null, null },
14640 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1464114639 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14640 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1464214641 .patterns = &.{
1464314642 .{ .src = .{ .to_mem, .none } },
1464414643 },
......@@ -14660,24 +14659,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1466014659 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1466114660 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
1466214661 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14663 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14662 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1466414663 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
1466514664 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1466614665 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
1466714666 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
1466814667 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1466914668 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14670 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
14669 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
1467114670 .{ ._, ._, .neg, .tmp3b, ._, ._, ._ },
1467214671 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
14673 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14672 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1467414673 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1467514674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1467614675 } },
1467714676 }, .{
1467814677 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14679 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1468014678 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14679 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1468114680 .patterns = &.{
1468214681 .{ .src = .{ .to_mem, .none } },
1468314682 },
......@@ -14699,7 +14698,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1469914698 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1470014699 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
1470114700 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14702 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14701 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1470314702 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
1470414703 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1470514704 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
......@@ -14708,16 +14707,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1470814707 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1470914708 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1471014709 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14711 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14710 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1471214711 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
14713 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14712 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1471414713 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1471514714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1471614715 } },
1471714716 }, .{
1471814717 .required_features = .{ .@"64bit", .lzcnt, null, null },
14719 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1472014718 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14719 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1472114720 .patterns = &.{
1472214721 .{ .src = .{ .to_mem, .none } },
1472314722 },
......@@ -14739,7 +14738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1473914738 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1474014739 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
1474114740 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14742 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14741 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1474314742 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1474414743 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
1474514744 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
......@@ -14747,16 +14746,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1474714746 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1474814747 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1474914748 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14750 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14749 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1475114750 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
14752 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14751 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1475314752 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1475414753 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1475514754 } },
1475614755 }, .{
1475714756 .required_features = .{ .@"64bit", null, null, null },
14758 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1475914757 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14758 .dst_constraints = .{.{ .scalar_int_is = .byte }},
1476014759 .patterns = &.{
1476114760 .{ .src = .{ .to_mem, .none } },
1476214761 },
......@@ -14778,24 +14777,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1477814777 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1477914778 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
1478014779 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14781 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14780 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1478214781 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
1478314782 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1478414783 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
1478514784 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
1478614785 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1478714786 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14788 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
14787 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
1478914788 .{ ._, ._, .neg, .tmp3b, ._, ._, ._ },
1479014789 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
14791 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14790 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1479214791 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1479314792 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1479414793 } },
1479514794 }, .{
1479614795 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14797 .dst_constraints = .{.{ .scalar_int_is = .word }},
1479814796 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14797 .dst_constraints = .{.{ .scalar_int_is = .word }},
1479914798 .patterns = &.{
1480014799 .{ .src = .{ .to_mem, .none } },
1480114800 },
......@@ -14817,7 +14816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1481714816 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1481814817 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
1481914818 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14820 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14819 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1482114820 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
1482214821 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1482314822 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
......@@ -14826,16 +14825,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1482614825 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1482714826 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1482814827 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14829 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14828 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1483014829 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
14831 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14830 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1483214831 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1483314832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1483414833 } },
1483514834 }, .{
1483614835 .required_features = .{ .@"64bit", .lzcnt, null, null },
14837 .dst_constraints = .{.{ .scalar_int_is = .word }},
1483814836 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14837 .dst_constraints = .{.{ .scalar_int_is = .word }},
1483914838 .patterns = &.{
1484014839 .{ .src = .{ .to_mem, .none } },
1484114840 },
......@@ -14857,7 +14856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1485714856 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1485814857 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
1485914858 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14860 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14859 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1486114860 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1486214861 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
1486314862 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
......@@ -14865,16 +14864,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1486514864 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1486614865 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1486714866 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14868 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14867 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1486914868 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
14870 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14869 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1487114870 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1487214871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1487314872 } },
1487414873 }, .{
1487514874 .required_features = .{ .@"64bit", null, null, null },
14876 .dst_constraints = .{.{ .scalar_int_is = .word }},
1487714875 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14876 .dst_constraints = .{.{ .scalar_int_is = .word }},
1487814877 .patterns = &.{
1487914878 .{ .src = .{ .to_mem, .none } },
1488014879 },
......@@ -14896,24 +14895,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1489614895 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1489714896 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
1489814897 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14899 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14898 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1490014899 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
1490114900 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1490214901 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
1490314902 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
1490414903 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1490514904 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14906 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
14905 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
1490714906 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
1490814907 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
14909 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14908 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1491014909 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1491114910 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1491214911 } },
1491314912 }, .{
1491414913 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14915 .dst_constraints = .{.{ .scalar_int_is = .word }},
1491614914 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14915 .dst_constraints = .{.{ .scalar_int_is = .word }},
1491714916 .patterns = &.{
1491814917 .{ .src = .{ .to_mem, .none } },
1491914918 },
......@@ -14935,7 +14934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1493514934 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1493614935 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
1493714936 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14938 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14937 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1493914938 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
1494014939 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1494114940 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
......@@ -14944,16 +14943,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1494414943 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1494514944 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1494614945 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14947 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14946 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1494814947 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
14949 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14948 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1495014949 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1495114950 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1495214951 } },
1495314952 }, .{
1495414953 .required_features = .{ .@"64bit", .lzcnt, null, null },
14955 .dst_constraints = .{.{ .scalar_int_is = .word }},
1495614954 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14955 .dst_constraints = .{.{ .scalar_int_is = .word }},
1495714956 .patterns = &.{
1495814957 .{ .src = .{ .to_mem, .none } },
1495914958 },
......@@ -14975,7 +14974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1497514974 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1497614975 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
1497714976 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14978 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
14977 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1497914978 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
1498014979 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
1498114980 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
......@@ -14983,16 +14982,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1498314982 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1498414983 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
1498514984 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
14986 .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
14985 .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
1498714986 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
14988 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
14987 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1498914988 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1499014989 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1499114990 } },
1499214991 }, .{
1499314992 .required_features = .{ .@"64bit", null, null, null },
14994 .dst_constraints = .{.{ .scalar_int_is = .word }},
1499514993 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14994 .dst_constraints = .{.{ .scalar_int_is = .word }},
1499614995 .patterns = &.{
1499714996 .{ .src = .{ .to_mem, .none } },
1499814997 },
......@@ -15014,17 +15013,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1501415013 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
1501515014 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
1501615015 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
15017 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
15016 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
1501815017 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
1501915018 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1502015019 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
1502115020 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
1502215021 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
1502315022 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
15024 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
15023 .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
1502515024 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
1502615025 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
15027 .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
15026 .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
1502815027 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
1502915028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1503015029 } },
......@@ -15524,7 +15523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1552415523 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
1552515524 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
1552615525 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
15527 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
15526 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1552815527 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1552915528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1553015529 },
......@@ -15536,7 +15535,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1553615535 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
1553715536 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
1553815537 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
15539 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
15538 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1554015539 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1554115540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1554215541 },
......@@ -15570,7 +15569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1557015569 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
1557115570 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
1557215571 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15573 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15572 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1557415573 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1557515574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1557615575 },
......@@ -15583,7 +15582,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1558315582 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
1558415583 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
1558515584 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15586 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15585 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1558715586 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1558815587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1558915588 },
......@@ -15616,7 +15615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1561615615 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
1561715616 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
1561815617 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15619 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
15618 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1562015619 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1562115620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1562215621 },
......@@ -15628,7 +15627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1562815627 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
1562915628 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
1563015629 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15631 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
15630 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1563215631 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1563315632 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1563415633 },
......@@ -15663,7 +15662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1566315662 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
1566415663 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1566515664 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15666 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
15665 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1566715666 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1566815667 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1566915668 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -15687,7 +15686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1568715686 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
1568815687 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1568915688 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15690 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
15689 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1569115690 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1569215691 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1569315692 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -15730,7 +15729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1573015729 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
1573115730 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1573215731 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15733 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15732 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1573415733 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1573515734 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1573615735 },
......@@ -15742,7 +15741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1574215741 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1574315742 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
1574415743 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15745 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15744 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1574615745 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1574715746 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1574815747 },
......@@ -15776,7 +15775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1577615775 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
1577715776 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1577815777 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15779 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
15778 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1578015779 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1578115780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1578215781 },
......@@ -15789,7 +15788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1578915788 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1579015789 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
1579115790 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15792 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
15791 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1579315792 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1579415793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1579515794 },
......@@ -15824,7 +15823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1582415823 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
1582515824 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1582615825 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15827 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
15826 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1582815827 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1582915828 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1583015829 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -15848,7 +15847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1584815847 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
1584915848 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1585015849 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15851 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
15850 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1585215851 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1585315852 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1585415853 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -15893,7 +15892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1589315892 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
1589415893 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1589515894 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15896 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15895 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1589715896 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1589815897 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1589915898 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -15917,7 +15916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1591715916 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
1591815917 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1591915918 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15920 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15919 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1592115920 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1592215921 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1592315922 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -15960,7 +15959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1596015959 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
1596115960 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1596215961 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15963 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15962 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1596415963 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1596515964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1596615965 },
......@@ -15972,7 +15971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1597215971 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1597315972 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
1597415973 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15975 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
15974 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1597615975 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1597715976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1597815977 },
......@@ -16006,7 +16005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1600616005 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
1600716006 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1600816007 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16009 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
16008 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1601016009 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1601116010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1601216011 },
......@@ -16019,7 +16018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1601916018 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
1602016019 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
1602116020 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16022 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
16021 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1602316022 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1602416023 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1602516024 },
......@@ -16054,7 +16053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1605416053 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
1605516054 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1605616055 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16057 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
16056 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1605816057 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1605916058 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1606016059 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -16078,7 +16077,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1607816077 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
1607916078 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1608016079 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16081 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
16080 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1608216081 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1608316082 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1608416083 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -16123,7 +16122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1612316122 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
1612416123 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1612516124 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16126 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
16125 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1612716126 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1612816127 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1612916128 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -16147,7 +16146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1614716146 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
1614816147 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1614916148 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16150 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
16149 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1615116150 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1615216151 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1615316152 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -16190,7 +16189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1619016189 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
1619116190 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
1619216191 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16193 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
16192 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1619416193 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
1619516194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1619616195 },
......@@ -16202,7 +16201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1620216201 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
1620316202 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
1620416203 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16205 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
16204 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1620616205 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
1620716206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1620816207 },
......@@ -16239,7 +16238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1623916238 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
1624016239 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
1624116240 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16242 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
16241 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1624316242 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1624416243 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1624516244 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
......@@ -16265,7 +16264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1626516264 .{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },
1626616265 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
1626716266 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16268 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
16267 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1626916268 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1627016269 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1627116270 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
......@@ -16313,7 +16312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1631316312 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
1631416313 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
1631516314 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16316 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
16315 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1631716316 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1631816317 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1631916318 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
......@@ -16340,7 +16339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1634016339 .{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },
1634116340 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
1634216341 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16343 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
16342 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1634416343 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1634516344 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1634616345 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
......@@ -16356,8 +16355,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1635616355 },
1635716356 } },
1635816357 }, .{
16359 .dst_constraints = .{.{ .bool_vec = .byte }},
1636016358 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
16359 .dst_constraints = .{.{ .bool_vec = .byte }},
1636116360 .patterns = &.{
1636216361 .{ .src = .{ .to_mem, .to_mem } },
1636316362 },
......@@ -16388,8 +16387,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1638816387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1638916388 } },
1639016389 }, .{
16391 .dst_constraints = .{.{ .bool_vec = .byte }},
1639216390 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
16391 .dst_constraints = .{.{ .bool_vec = .byte }},
1639316392 .patterns = &.{
1639416393 .{ .src = .{ .to_mem, .to_mem } },
1639516394 },
......@@ -16420,8 +16419,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1642016419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1642116420 } },
1642216421 }, .{
16423 .dst_constraints = .{.{ .bool_vec = .byte }},
1642416422 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
16423 .dst_constraints = .{.{ .bool_vec = .byte }},
1642516424 .patterns = &.{
1642616425 .{ .src = .{ .to_mem, .to_mem } },
1642716426 },
......@@ -16453,8 +16452,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1645316452 } },
1645416453 }, .{
1645516454 .required_features = .{ .@"64bit", null, null, null },
16456 .dst_constraints = .{.{ .bool_vec = .byte }},
1645716455 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
16456 .dst_constraints = .{.{ .bool_vec = .byte }},
1645816457 .patterns = &.{
1645916458 .{ .src = .{ .to_mem, .to_mem } },
1646016459 },
......@@ -16485,8 +16484,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1648516484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1648616485 } },
1648716486 }, .{
16488 .dst_constraints = .{.{ .bool_vec = .byte }},
1648916487 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
16488 .dst_constraints = .{.{ .bool_vec = .byte }},
1649016489 .patterns = &.{
1649116490 .{ .src = .{ .to_mem, .to_mem } },
1649216491 },
......@@ -16524,8 +16523,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1652416523 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
1652516524 } },
1652616525 }, .{
16527 .dst_constraints = .{.{ .bool_vec = .dword }},
1652816526 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
16527 .dst_constraints = .{.{ .bool_vec = .dword }},
1652916528 .patterns = &.{
1653016529 .{ .src = .{ .to_mem, .to_mem } },
1653116530 },
......@@ -16557,8 +16556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1655716556 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1655816557 } },
1655916558 }, .{
16560 .dst_constraints = .{.{ .bool_vec = .dword }},
1656116559 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
16560 .dst_constraints = .{.{ .bool_vec = .dword }},
1656216561 .patterns = &.{
1656316562 .{ .src = .{ .to_mem, .to_mem } },
1656416563 },
......@@ -16590,8 +16589,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1659016589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1659116590 } },
1659216591 }, .{
16593 .dst_constraints = .{.{ .bool_vec = .dword }},
1659416592 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
16593 .dst_constraints = .{.{ .bool_vec = .dword }},
1659516594 .patterns = &.{
1659616595 .{ .src = .{ .to_mem, .to_mem } },
1659716596 },
......@@ -16624,8 +16623,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1662416623 } },
1662516624 }, .{
1662616625 .required_features = .{ .@"64bit", null, null, null },
16627 .dst_constraints = .{.{ .bool_vec = .dword }},
1662816626 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
16627 .dst_constraints = .{.{ .bool_vec = .dword }},
1662916628 .patterns = &.{
1663016629 .{ .src = .{ .to_mem, .to_mem } },
1663116630 },
......@@ -16657,8 +16656,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1665716656 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1665816657 } },
1665916658 }, .{
16660 .dst_constraints = .{.{ .bool_vec = .dword }},
1666116659 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
16660 .dst_constraints = .{.{ .bool_vec = .dword }},
1666216661 .patterns = &.{
1666316662 .{ .src = .{ .to_mem, .to_mem } },
1666416663 },
......@@ -16698,8 +16697,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1669816697 } },
1669916698 }, .{
1670016699 .required_features = .{ .@"64bit", null, null, null },
16701 .dst_constraints = .{.{ .bool_vec = .qword }},
1670216700 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
16701 .dst_constraints = .{.{ .bool_vec = .qword }},
1670316702 .patterns = &.{
1670416703 .{ .src = .{ .to_mem, .to_mem } },
1670516704 },
......@@ -16732,8 +16731,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1673216731 } },
1673316732 }, .{
1673416733 .required_features = .{ .@"64bit", null, null, null },
16735 .dst_constraints = .{.{ .bool_vec = .qword }},
1673616734 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
16735 .dst_constraints = .{.{ .bool_vec = .qword }},
1673716736 .patterns = &.{
1673816737 .{ .src = .{ .to_mem, .to_mem } },
1673916738 },
......@@ -16765,8 +16764,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1676516764 } },
1676616765 }, .{
1676716766 .required_features = .{ .@"64bit", null, null, null },
16768 .dst_constraints = .{.{ .bool_vec = .qword }},
1676916767 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
16768 .dst_constraints = .{.{ .bool_vec = .qword }},
1677016769 .patterns = &.{
1677116770 .{ .src = .{ .to_mem, .to_mem } },
1677216771 },
......@@ -16799,8 +16798,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1679916798 } },
1680016799 }, .{
1680116800 .required_features = .{ .@"64bit", null, null, null },
16802 .dst_constraints = .{.{ .bool_vec = .qword }},
1680316801 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
16802 .dst_constraints = .{.{ .bool_vec = .qword }},
1680416803 .patterns = &.{
1680516804 .{ .src = .{ .to_mem, .to_mem } },
1680616805 },
......@@ -16833,8 +16832,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1683316832 } },
1683416833 }, .{
1683516834 .required_features = .{ .@"64bit", null, null, null },
16836 .dst_constraints = .{.{ .bool_vec = .qword }},
1683716835 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
16836 .dst_constraints = .{.{ .bool_vec = .qword }},
1683816837 .patterns = &.{
1683916838 .{ .src = .{ .to_mem, .to_mem } },
1684016839 },
......@@ -17281,8 +17280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1728117280 .ne => .neq,
1728217281 }) },
1728317282 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
17284 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
17285 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
17283 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
17284 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1728617285 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1728717286 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1728817287 } },
......@@ -17319,18 +17318,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1731917318 .ne => .neq,
1732017319 }) },
1732117320 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
17322 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
17321 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
1732317322 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
1732417323 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1732517324 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1732617325 } },
1732717326 }, .{
1732817327 .required_features = .{ .avx, .slow_incdec, null, null },
17329 .dst_constraints = .{.{ .bool_vec = .dword }},
1733017328 .src_constraints = .{
1733117329 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1733217330 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1733317331 },
17332 .dst_constraints = .{.{ .bool_vec = .dword }},
1733417333 .patterns = &.{
1733517334 .{ .src = .{ .to_mem, .to_mem } },
1733617335 },
......@@ -17371,11 +17370,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1737117370 } },
1737217371 }, .{
1737317372 .required_features = .{ .avx, null, null, null },
17374 .dst_constraints = .{.{ .bool_vec = .dword }},
1737517373 .src_constraints = .{
1737617374 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1737717375 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1737817376 },
17377 .dst_constraints = .{.{ .bool_vec = .dword }},
1737917378 .patterns = &.{
1738017379 .{ .src = .{ .to_mem, .to_mem } },
1738117380 },
......@@ -17416,11 +17415,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1741617415 } },
1741717416 }, .{
1741817417 .required_features = .{ .sse2, .slow_incdec, null, null },
17419 .dst_constraints = .{.{ .bool_vec = .dword }},
1742017418 .src_constraints = .{
1742117419 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1742217420 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1742317421 },
17422 .dst_constraints = .{.{ .bool_vec = .dword }},
1742417423 .patterns = &.{
1742517424 .{ .src = .{ .to_mem, .to_mem } },
1742617425 },
......@@ -17462,11 +17461,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1746217461 } },
1746317462 }, .{
1746417463 .required_features = .{ .sse2, null, null, null },
17465 .dst_constraints = .{.{ .bool_vec = .dword }},
1746617464 .src_constraints = .{
1746717465 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1746817466 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1746917467 },
17468 .dst_constraints = .{.{ .bool_vec = .dword }},
1747017469 .patterns = &.{
1747117470 .{ .src = .{ .to_mem, .to_mem } },
1747217471 },
......@@ -17508,11 +17507,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1750817507 } },
1750917508 }, .{
1751017509 .required_features = .{ .sse, .slow_incdec, null, null },
17511 .dst_constraints = .{.{ .bool_vec = .dword }},
1751217510 .src_constraints = .{
1751317511 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1751417512 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1751517513 },
17514 .dst_constraints = .{.{ .bool_vec = .dword }},
1751617515 .patterns = &.{
1751717516 .{ .src = .{ .to_mem, .to_mem } },
1751817517 },
......@@ -17556,11 +17555,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1755617555 } },
1755717556 }, .{
1755817557 .required_features = .{ .sse, null, null, null },
17559 .dst_constraints = .{.{ .bool_vec = .dword }},
1756017558 .src_constraints = .{
1756117559 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1756217560 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
1756317561 },
17562 .dst_constraints = .{.{ .bool_vec = .dword }},
1756417563 .patterns = &.{
1756517564 .{ .src = .{ .to_mem, .to_mem } },
1756617565 },
......@@ -17642,7 +17641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1764217641 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
1764317642 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
1764417643 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
17645 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },
17644 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
1764617645 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
1764717646 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1764817647 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
......@@ -17751,7 +17750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1775117750 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
1775217751 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
1775317752 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
17754 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },
17753 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
1775517754 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
1775617755 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1775717756 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
......@@ -17863,7 +17862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1786317862 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
1786417863 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
1786517864 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
17866 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },
17865 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
1786717866 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
1786817867 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1786917868 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
......@@ -17966,8 +17965,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1796617965 .ne => .neq,
1796717966 }) },
1796817967 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
17969 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
17970 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
17968 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
17969 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1797117970 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1797217971 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1797317972 } },
......@@ -18003,7 +18002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1800318002 .ne => .neq,
1800418003 }) },
1800518004 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
18006 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
18005 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
1800718006 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
1800818007 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1800918008 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
......@@ -18048,8 +18047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1804818047 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
1804918048 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
1805018049 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
18051 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
18052 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
18050 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
18051 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1805318052 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1805418053 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1805518054 } },
......@@ -18094,8 +18093,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1809418093 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
1809518094 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
1809618095 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
18097 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
18098 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
18096 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18097 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1809918098 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1810018099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1810118100 } },
......@@ -18134,8 +18133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1813418133 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
1813518134 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
1813618135 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
18137 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
18138 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
18136 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18137 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1813918138 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
1814018139 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
1814118140 else => unreachable,
......@@ -18145,7 +18144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1814518144 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
1814618145 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
1814718146 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18148 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
18147 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
1814918148 } },
1815018149 }, .{
1815118150 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -18188,8 +18187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1818818187 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
1818918188 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
1819018189 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
18191 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
18192 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
18190 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
18191 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
1819318192 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
1819418193 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1819518194 } },
......@@ -18234,7 +18233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1823418233 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
1823518234 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
1823618235 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
18237 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
18236 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
1823818237 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
1823918238 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
1824018239 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
......@@ -18274,7 +18273,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1827418273 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
1827518274 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
1827618275 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
18277 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
18276 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
1827818277 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1827918278 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1828018279 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
......@@ -18323,7 +18322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1832318322 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
1832418323 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
1832518324 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
18326 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
18325 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
1832718326 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1832818327 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1832918328 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
......@@ -18382,7 +18381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1838218381 }, .tmp3b, .tmp4b, ._, ._ },
1838318382 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1838418383 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
18385 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
18384 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1838618385 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1838718386 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1838818387 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -18550,7 +18549,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1855018549 }, .tmp3b, .tmp4b, ._, ._ },
1855118550 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
1855218551 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
18553 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
18552 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1855418553 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
1855518554 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1855618555 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
......@@ -18675,11 +18674,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1867518674 } },
1867618675 }, .{
1867718676 .required_features = .{ .avx, .slow_incdec, null, null },
18678 .dst_constraints = .{.{ .bool_vec = .dword }},
1867918677 .src_constraints = .{
1868018678 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1868118679 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1868218680 },
18681 .dst_constraints = .{.{ .bool_vec = .dword }},
1868318682 .patterns = &.{
1868418683 .{ .src = .{ .to_mem, .to_mem } },
1868518684 },
......@@ -18714,17 +18713,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1871418713 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
1871518714 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
1871618715 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
18717 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
18716 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1871818717 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1871918718 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1872018719 } },
1872118720 }, .{
1872218721 .required_features = .{ .avx, .slow_incdec, null, null },
18723 .dst_constraints = .{.{ .bool_vec = .dword }},
1872418722 .src_constraints = .{
1872518723 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1872618724 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1872718725 },
18726 .dst_constraints = .{.{ .bool_vec = .dword }},
1872818727 .patterns = &.{
1872918728 .{ .src = .{ .to_mem, .to_mem } },
1873018729 },
......@@ -18765,11 +18764,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1876518764 } },
1876618765 }, .{
1876718766 .required_features = .{ .sse2, .slow_incdec, null, null },
18768 .dst_constraints = .{.{ .bool_vec = .dword }},
1876918767 .src_constraints = .{
1877018768 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1877118769 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1877218770 },
18771 .dst_constraints = .{.{ .bool_vec = .dword }},
1877318772 .patterns = &.{
1877418773 .{ .src = .{ .to_mem, .to_mem } },
1877518774 },
......@@ -18804,17 +18803,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1880418803 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
1880518804 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
1880618805 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
18807 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
18806 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1880818807 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1880918808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1881018809 } },
1881118810 }, .{
1881218811 .required_features = .{ .sse2, .slow_incdec, null, null },
18813 .dst_constraints = .{.{ .bool_vec = .dword }},
1881418812 .src_constraints = .{
1881518813 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1881618814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1881718815 },
18816 .dst_constraints = .{.{ .bool_vec = .dword }},
1881818817 .patterns = &.{
1881918818 .{ .src = .{ .to_mem, .to_mem } },
1882018819 },
......@@ -18855,11 +18854,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1885518854 } },
1885618855 }, .{
1885718856 .required_features = .{ .sse, .slow_incdec, null, null },
18858 .dst_constraints = .{.{ .bool_vec = .dword }},
1885918857 .src_constraints = .{
1886018858 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1886118859 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1886218860 },
18861 .dst_constraints = .{.{ .bool_vec = .dword }},
1886318862 .patterns = &.{
1886418863 .{ .src = .{ .to_mem, .to_mem } },
1886518864 },
......@@ -18894,17 +18893,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1889418893 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
1889518894 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
1889618895 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
18897 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
18896 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1889818897 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1889918898 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1890018899 } },
1890118900 }, .{
1890218901 .required_features = .{ .sse2, .slow_incdec, null, null },
18903 .dst_constraints = .{.{ .bool_vec = .dword }},
1890418902 .src_constraints = .{
1890518903 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1890618904 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
1890718905 },
18906 .dst_constraints = .{.{ .bool_vec = .dword }},
1890818907 .patterns = &.{
1890918908 .{ .src = .{ .to_mem, .to_mem } },
1891018909 },
......@@ -18983,7 +18982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1898318982 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
1898418983 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
1898518984 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
18986 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
18985 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1898718986 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
1898818987 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1898918988 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
......@@ -19091,7 +19090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1909119090 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
1909219091 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
1909319092 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
19094 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
19093 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1909519094 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
1909619095 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1909719096 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
......@@ -19199,7 +19198,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1919919198 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
1920019199 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
1920119200 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
19202 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
19201 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
1920319202 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
1920419203 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
1920519204 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
......@@ -20245,10 +20244,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2024520244 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
2024620245 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
2024720246 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
20248 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ },
20247 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
2024920248 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
2025020249 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
20251 .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ },
20250 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
2025220251 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
2025320252 } },
2025420253 }, .{
......@@ -20271,7 +20270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2027120270 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2027220271 .each = .{ .once = &.{
2027320272 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20274 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
20273 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2027520274 } },
2027620275 }, .{
2027720276 .required_features = .{ .sse, null, null, null },
......@@ -20293,7 +20292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2029320292 .dst_temps = .{.{ .ref = .src0 }},
2029420293 .each = .{ .once = &.{
2029520294 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20296 .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
20295 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2029720296 } },
2029820297 }, .{
2029920298 .required_features = .{ .avx, null, null, null },
......@@ -20315,7 +20314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2031520314 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2031620315 .each = .{ .once = &.{
2031720316 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20318 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
20317 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2031920318 } },
2032020319 }, .{
2032120320 .required_features = .{ .avx, null, null, null },
......@@ -20337,7 +20336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2033720336 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2033820337 .each = .{ .once = &.{
2033920338 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20340 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
20339 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2034120340 } },
2034220341 }, .{
2034320342 .required_features = .{ .sse2, null, null, null },
......@@ -20359,7 +20358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2035920358 .dst_temps = .{.{ .ref = .src0 }},
2036020359 .each = .{ .once = &.{
2036120360 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20362 .{ ._, ._pd, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
20361 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2036320362 } },
2036420363 }, .{
2036520364 .required_features = .{ .avx, null, null, null },
......@@ -20381,7 +20380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2038120380 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2038220381 .each = .{ .once = &.{
2038320382 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20384 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
20383 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2038520384 } },
2038620385 }, .{
2038720386 .required_features = .{ .x87, null, null, null },
......@@ -20427,7 +20426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2042720426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2042820427 .each = .{ .once = &.{
2042920428 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20430 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
20429 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
2043120430 } },
2043220431 }, .{
2043320432 .required_features = .{ .sse2, null, null, null },
......@@ -20449,7 +20448,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2044920448 .dst_temps = .{.{ .ref = .src0 }},
2045020449 .each = .{ .once = &.{
2045120450 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20452 .{ ._, .p_, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
20451 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2045320452 } },
2045420453 }, .{
2045520454 .required_features = .{ .sse, null, null, null },
......@@ -20471,7 +20470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2047120470 .dst_temps = .{.{ .ref = .src0 }},
2047220471 .each = .{ .once = &.{
2047320472 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20474 .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
20473 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
2047520474 } },
2047620475 }, .{
2047720476 .required_features = .{ .avx2, null, null, null },
......@@ -20493,7 +20492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2049320492 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2049420493 .each = .{ .once = &.{
2049520494 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20496 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
20495 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2049720496 } },
2049820497 }, .{
2049920498 .required_features = .{ .avx, null, null, null },
......@@ -20515,7 +20514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2051520514 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
2051620515 .each = .{ .once = &.{
2051720516 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20518 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
20517 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
2051920518 } },
2052020519 }, .{
2052120520 .required_features = .{ .avx, null, null, null },
......@@ -20537,7 +20536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2053720536 .dst_temps = .{.mem},
2053820537 .each = .{ .once = &.{
2053920538 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20540 .{ ._, .v_ps, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
20539 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2054120540 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2054220541 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2054320542 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
......@@ -20564,7 +20563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2056420563 .dst_temps = .{.mem},
2056520564 .each = .{ .once = &.{
2056620565 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20567 .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
20566 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2056820567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2056920568 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
2057020569 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
......@@ -20592,7 +20591,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2059220591 .dst_temps = .{.mem},
2059320592 .each = .{ .once = &.{
2059420593 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20595 .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
20594 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2059620595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2059720596 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2059820597 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
......@@ -20619,7 +20618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2061920618 .dst_temps = .{.mem},
2062020619 .each = .{ .once = &.{
2062120620 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20622 .{ ._, ._pd, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
20621 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2062320622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2062420623 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
2062520624 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
......@@ -20647,7 +20646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2064720646 .dst_temps = .{.mem},
2064820647 .each = .{ .once = &.{
2064920648 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20650 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
20649 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
2065120650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2065220651 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2065320652 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
......@@ -20674,7 +20673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2067420673 .dst_temps = .{.mem},
2067520674 .each = .{ .once = &.{
2067620675 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20677 .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
20676 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
2067820677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2067920678 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
2068020679 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
......@@ -20701,7 +20700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2070120700 .dst_temps = .{.mem},
2070220701 .each = .{ .once = &.{
2070320702 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20704 .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
20703 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
2070520704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2070620705 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
2070720706 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
......@@ -20729,7 +20728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2072920728 .dst_temps = .{.mem},
2073020729 .each = .{ .once = &.{
2073120730 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20732 .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
20731 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
2073320732 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
2073420733 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
2073520734 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
......@@ -21665,242 +21664,7197 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2166521664 },
2166621665 }
2166721666 },
21668 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21669 }) catch |err| switch (err) {
21667 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21668 }) catch |err| switch (err) {
21669 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
21670 @tagName(air_tag),
21671 cg.typeOf(bin_op.lhs).fmt(pt),
21672 ops[0].tracking(cg),
21673 ops[1].tracking(cg),
21674 }),
21675 else => |e| return e,
21676 };
21677 if (opt_info) |*oi| {
21678 for (ops) |op| for (res) |r| {
21679 if (op.index == r.index) break;
21680 } else try op.die(cg);
21681 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
21682 try res[0].die(cg);
21683 res[0] = oi.res[0];
21684 try cg.restoreState(oi.state, &oi.deaths, .{
21685 .emit_instructions = true,
21686 .update_tracking = true,
21687 .resurrect = true,
21688 .close_scope = true,
21689 });
21690 cg.performReloc(oi.reloc);
21691 @memset(&ops, res[0]);
21692 }
21693 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21694 },
21695
21696 .cond_br => try cg.airCondBr(inst),
21697 .switch_br => try cg.airSwitchBr(inst),
21698 .loop_switch_br => try cg.airLoopSwitchBr(inst),
21699 .switch_dispatch => try cg.airSwitchDispatch(inst),
21700 .@"try", .try_cold => try cg.airTry(inst),
21701 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
21702 .dbg_stmt => if (cg.debug_output != .none) {
21703 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
21704 _ = try cg.addInst(.{
21705 .tag = .pseudo,
21706 .ops = .pseudo_dbg_line_stmt_line_column,
21707 .data = .{ .line_column = .{
21708 .line = dbg_stmt.line,
21709 .column = dbg_stmt.column,
21710 } },
21711 });
21712 },
21713 .dbg_empty_stmt => if (cg.debug_output != .none) {
21714 if (cg.mir_instructions.len > 0) {
21715 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];
21716 if (prev_mir_op.* == .pseudo_dbg_line_line_column)
21717 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;
21718 }
21719 try cg.asmOpOnly(.{ ._, .nop });
21720 },
21721 .dbg_inline_block => {
21722 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
21723 const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload);
21724 const old_inline_func = cg.inline_func;
21725 defer cg.inline_func = old_inline_func;
21726 cg.inline_func = extra.data.func;
21727 if (cg.debug_output != .none) _ = try cg.addInst(.{
21728 .tag = .pseudo,
21729 .ops = .pseudo_dbg_enter_inline_func,
21730 .data = .{ .func = extra.data.func },
21731 });
21732 try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len]));
21733 if (cg.debug_output != .none) _ = try cg.addInst(.{
21734 .tag = .pseudo,
21735 .ops = .pseudo_dbg_leave_inline_func,
21736 .data = .{ .func = old_inline_func },
21737 });
21738 },
21739 .dbg_var_ptr,
21740 .dbg_var_val,
21741 .dbg_arg_inline,
21742 => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) {
21743 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
21744 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
21745 var mcv = ops[0].tracking(cg).short;
21746 switch (mcv) {
21747 else => {},
21748 .eflags => |cc| switch (cc) {
21749 else => {},
21750 // These values would self destruct. Maybe we make them use their
21751 // turing complete dwarf expression interpreters for once?
21752 .z_and_np, .nz_or_p => {
21753 try cg.spillEflagsIfOccupied();
21754 mcv = ops[0].tracking(cg).short;
21755 },
21756 },
21757 }
21758 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);
21759 try ops[0].die(cg);
21760 },
21761 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
21762 const un_op = air_datas[@intFromEnum(inst)].un_op;
21763 const opt_ty = cg.typeOf(un_op).childType(zcu);
21764 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21765 const opt_child_ty = opt_ty.optionalChild(zcu);
21766 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21767 var ops = try cg.tempsFromOperands(inst, .{un_op});
21768 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21769 while (try ops[0].toLea(cg)) {}
21770 try cg.asmMemoryImmediate(
21771 .{ ._, .cmp },
21772 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21773 .byte
21774 else if (opt_child_ty.isSlice(zcu))
21775 .qword
21776 else
21777 .fromSize(opt_child_abi_size) }),
21778 .u(0),
21779 );
21780 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
21781 try is_null.finish(inst, &.{un_op}, &ops, cg);
21782 },
21783 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
21784 const un_op = air_datas[@intFromEnum(inst)].un_op;
21785 const opt_ty = cg.typeOf(un_op).childType(zcu);
21786 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21787 const opt_child_ty = opt_ty.optionalChild(zcu);
21788 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21789 var ops = try cg.tempsFromOperands(inst, .{un_op});
21790 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21791 while (try ops[0].toLea(cg)) {}
21792 try cg.asmMemoryImmediate(
21793 .{ ._, .cmp },
21794 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21795 .byte
21796 else if (opt_child_ty.isSlice(zcu))
21797 .qword
21798 else
21799 .fromSize(opt_child_abi_size) }),
21800 .u(0),
21801 );
21802 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
21803 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
21804 },
21805 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
21806 const un_op = air_datas[@intFromEnum(inst)].un_op;
21807 const eu_ty = cg.typeOf(un_op).childType(zcu);
21808 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21809 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21810 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21811 var ops = try cg.tempsFromOperands(inst, .{un_op});
21812 try ops[0].toOffset(eu_err_off, cg);
21813 while (try ops[0].toLea(cg)) {}
21814 try cg.asmMemoryImmediate(
21815 .{ ._, .cmp },
21816 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21817 .u(0),
21818 );
21819 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
21820 try is_err.finish(inst, &.{un_op}, &ops, cg);
21821 },
21822 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
21823 const un_op = air_datas[@intFromEnum(inst)].un_op;
21824 const eu_ty = cg.typeOf(un_op).childType(zcu);
21825 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21826 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21827 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21828 var ops = try cg.tempsFromOperands(inst, .{un_op});
21829 try ops[0].toOffset(eu_err_off, cg);
21830 while (try ops[0].toLea(cg)) {}
21831 try cg.asmMemoryImmediate(
21832 .{ ._, .cmp },
21833 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21834 .u(0),
21835 );
21836 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
21837 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
21838 },
21839 .load => if (use_old) try cg.airLoad(inst) else fallback: {
21840 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21841 const val_ty = ty_op.ty.toType();
21842 const ptr_ty = cg.typeOf(ty_op.operand);
21843 const ptr_info = ptr_ty.ptrInfo(zcu);
21844 if (ptr_info.packed_offset.host_size > 0 and
21845 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21846 break :fallback try cg.airLoad(inst);
21847 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21848 const res = try ops[0].load(val_ty, .{
21849 .disp = switch (ptr_info.flags.vector_index) {
21850 .none => 0,
21851 .runtime => unreachable,
21852 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
21853 },
21854 }, cg);
21855 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
21856 },
21857 .ret => try cg.airRet(inst, false),
21858 .ret_safe => try cg.airRet(inst, true),
21859 .ret_load => try cg.airRetLoad(inst),
21860 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {
21861 else => unreachable,
21862 .store => false,
21863 .store_safe => true,
21864 }) else fallback: {
21865 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
21866 const ptr_ty = cg.typeOf(bin_op.lhs);
21867 const ptr_info = ptr_ty.ptrInfo(zcu);
21868 const val_ty = cg.typeOf(bin_op.rhs);
21869 if (ptr_info.packed_offset.host_size > 0 and
21870 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21871 break :fallback try cg.airStore(inst, switch (air_tag) {
21872 else => unreachable,
21873 .store => false,
21874 .store_safe => true,
21875 });
21876 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
21877 try ops[0].store(&ops[1], .{
21878 .disp = switch (ptr_info.flags.vector_index) {
21879 .none => 0,
21880 .runtime => unreachable,
21881 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
21882 },
21883 .safe = switch (air_tag) {
21884 else => unreachable,
21885 .store => false,
21886 .store_safe => true,
21887 },
21888 }, cg);
21889 for (ops) |op| try op.die(cg);
21890 },
21891 .unreach => {},
21892 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
21893 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21894 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21895 var res: [1]Temp = undefined;
21896 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
21897 .required_features = .{ .f16c, null, null, null },
21898 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21899 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
21900 .patterns = &.{
21901 .{ .src = .{ .to_sse, .none } },
21902 },
21903 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21904 .each = .{ .once = &.{
21905 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
21906 } },
21907 }, .{
21908 .required_features = .{ .f16c, null, null, null },
21909 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
21910 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},
21911 .patterns = &.{
21912 .{ .src = .{ .to_sse, .none } },
21913 },
21914 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21915 .each = .{ .once = &.{
21916 .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
21917 } },
21918 }, .{
21919 .required_features = .{ .f16c, null, null, null },
21920 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
21921 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},
21922 .patterns = &.{
21923 .{ .src = .{ .to_sse, .none } },
21924 },
21925 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
21926 .each = .{ .once = &.{
21927 .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },
21928 } },
21929 }, .{
21930 .required_features = .{ .sse, null, null, null },
21931 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21932 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
21933 .patterns = &.{
21934 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
21935 },
21936 .call_frame = .{ .alignment = .@"16" },
21937 .extra_temps = .{
21938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
21939 .unused,
21940 .unused,
21941 .unused,
21942 .unused,
21943 .unused,
21944 .unused,
21945 .unused,
21946 .unused,
21947 },
21948 .dst_temps = .{.{ .ref = .src0 }},
21949 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
21950 .each = .{ .once = &.{
21951 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
21952 } },
21953 }, .{
21954 .required_features = .{ .f16c, null, null, null },
21955 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
21956 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }},
21957 .patterns = &.{
21958 .{ .src = .{ .to_mem, .none } },
21959 },
21960 .extra_temps = .{
21961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21962 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
21963 .unused,
21964 .unused,
21965 .unused,
21966 .unused,
21967 .unused,
21968 .unused,
21969 .unused,
21970 },
21971 .dst_temps = .{.mem},
21972 .clobbers = .{ .eflags = true },
21973 .each = .{ .once = &.{
21974 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },
21975 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ },
21976 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_size), .tmp1y, .rm(.{}), ._ },
21977 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
21978 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
21979 } },
21980 }, .{
21981 .required_features = .{ .avx, null, null, null },
21982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
21983 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
21984 .patterns = &.{
21985 .{ .src = .{ .to_mem, .none } },
21986 },
21987 .call_frame = .{ .alignment = .@"16" },
21988 .extra_temps = .{
21989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
21990 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
21991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
21992 .unused,
21993 .unused,
21994 .unused,
21995 .unused,
21996 .unused,
21997 .unused,
21998 },
21999 .dst_temps = .{.mem},
22000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22001 .each = .{ .once = &.{
22002 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22004 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22005 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22006 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22008 } },
22009 }, .{
22010 .required_features = .{ .sse4_1, null, null, null },
22011 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
22012 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22013 .patterns = &.{
22014 .{ .src = .{ .to_mem, .none } },
22015 },
22016 .call_frame = .{ .alignment = .@"16" },
22017 .extra_temps = .{
22018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22020 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
22021 .unused,
22022 .unused,
22023 .unused,
22024 .unused,
22025 .unused,
22026 .unused,
22027 },
22028 .dst_temps = .{.mem},
22029 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22030 .each = .{ .once = &.{
22031 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22032 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22033 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22034 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22035 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22037 } },
22038 }, .{
22039 .required_features = .{ .sse2, null, null, null },
22040 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
22041 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22042 .patterns = &.{
22043 .{ .src = .{ .to_mem, .none } },
22044 },
22045 .call_frame = .{ .alignment = .@"16" },
22046 .extra_temps = .{
22047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22048 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
22049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
22050 .{ .type = .f16, .kind = .{ .reg = .ax } },
22051 .unused,
22052 .unused,
22053 .unused,
22054 .unused,
22055 .unused,
22056 },
22057 .dst_temps = .{.mem},
22058 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22059 .each = .{ .once = &.{
22060 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22061 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22062 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22063 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22064 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22065 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22066 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22067 } },
22068 }, .{
22069 .required_features = .{ .sse, null, null, null },
22070 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
22071 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22072 .patterns = &.{
22073 .{ .src = .{ .to_mem, .none } },
22074 },
22075 .call_frame = .{ .alignment = .@"16" },
22076 .extra_temps = .{
22077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
22079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
22080 .{ .type = .f32, .kind = .mem },
22081 .{ .type = .f16, .kind = .{ .reg = .ax } },
22082 .unused,
22083 .unused,
22084 .unused,
22085 .unused,
22086 },
22087 .dst_temps = .{.mem},
22088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22089 .each = .{ .once = &.{
22090 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22091 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
22092 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22093 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22094 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22095 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22097 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22098 } },
22099 }, .{
22100 .required_features = .{ .sse, null, null, null },
22101 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22102 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
22103 .patterns = &.{
22104 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
22105 },
22106 .call_frame = .{ .alignment = .@"16" },
22107 .extra_temps = .{
22108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22109 .unused,
22110 .unused,
22111 .unused,
22112 .unused,
22113 .unused,
22114 .unused,
22115 .unused,
22116 .unused,
22117 },
22118 .dst_temps = .{.{ .ref = .src0 }},
22119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22120 .each = .{ .once = &.{
22121 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
22122 } },
22123 }, .{
22124 .required_features = .{ .avx, null, null, null },
22125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22126 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22127 .patterns = &.{
22128 .{ .src = .{ .to_mem, .none } },
22129 },
22130 .call_frame = .{ .alignment = .@"16" },
22131 .extra_temps = .{
22132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22135 .unused,
22136 .unused,
22137 .unused,
22138 .unused,
22139 .unused,
22140 .unused,
22141 },
22142 .dst_temps = .{.mem},
22143 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22144 .each = .{ .once = &.{
22145 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22146 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22148 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22149 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22151 } },
22152 }, .{
22153 .required_features = .{ .sse4_1, null, null, null },
22154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22155 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22156 .patterns = &.{
22157 .{ .src = .{ .to_mem, .none } },
22158 },
22159 .call_frame = .{ .alignment = .@"16" },
22160 .extra_temps = .{
22161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22162 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22163 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22164 .unused,
22165 .unused,
22166 .unused,
22167 .unused,
22168 .unused,
22169 .unused,
22170 },
22171 .dst_temps = .{.mem},
22172 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22173 .each = .{ .once = &.{
22174 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22175 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22176 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22177 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22178 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22180 } },
22181 }, .{
22182 .required_features = .{ .sse2, null, null, null },
22183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22184 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22185 .patterns = &.{
22186 .{ .src = .{ .to_mem, .none } },
22187 },
22188 .call_frame = .{ .alignment = .@"16" },
22189 .extra_temps = .{
22190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22191 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22193 .{ .type = .f16, .kind = .{ .reg = .ax } },
22194 .unused,
22195 .unused,
22196 .unused,
22197 .unused,
22198 .unused,
22199 },
22200 .dst_temps = .{.mem},
22201 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22202 .each = .{ .once = &.{
22203 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22204 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22205 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22206 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22207 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22208 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22210 } },
22211 }, .{
22212 .required_features = .{ .sse, null, null, null },
22213 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22214 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22215 .patterns = &.{
22216 .{ .src = .{ .to_mem, .none } },
22217 },
22218 .call_frame = .{ .alignment = .@"16" },
22219 .extra_temps = .{
22220 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22221 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22222 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
22223 .{ .type = .f32, .kind = .mem },
22224 .{ .type = .f16, .kind = .{ .reg = .ax } },
22225 .unused,
22226 .unused,
22227 .unused,
22228 .unused,
22229 },
22230 .dst_temps = .{.mem},
22231 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22232 .each = .{ .once = &.{
22233 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22234 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
22235 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22236 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22237 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22238 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22239 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22240 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22242 } },
22243 }, .{
22244 .required_features = .{ .avx, null, null, null },
22245 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22246 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22247 .patterns = &.{
22248 .{ .src = .{ .mem, .none } },
22249 },
22250 .dst_temps = .{.{ .rc = .sse }},
22251 .each = .{ .once = &.{
22252 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
22253 .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
22254 } },
22255 }, .{
22256 .required_features = .{ .avx, null, null, null },
22257 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22258 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22259 .patterns = &.{
22260 .{ .src = .{ .to_sse, .none } },
22261 },
22262 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22263 .each = .{ .once = &.{
22264 .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },
22265 } },
22266 }, .{
22267 .required_features = .{ .sse2, null, null, null },
22268 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22269 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22270 .patterns = &.{
22271 .{ .src = .{ .mem, .none } },
22272 .{ .src = .{ .to_sse, .none } },
22273 },
22274 .dst_temps = .{.{ .rc = .sse }},
22275 .each = .{ .once = &.{
22276 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
22277 .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
22278 } },
22279 }, .{
22280 .required_features = .{ .x87, null, null, null },
22281 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22282 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22283 .patterns = &.{
22284 .{ .src = .{ .to_mem, .none } },
22285 },
22286 .extra_temps = .{
22287 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22288 .unused,
22289 .unused,
22290 .unused,
22291 .unused,
22292 .unused,
22293 .unused,
22294 .unused,
22295 .unused,
22296 },
22297 .dst_temps = .{.mem},
22298 .each = .{ .once = &.{
22299 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
22300 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
22301 } },
22302 }, .{
22303 .required_features = .{ .avx, null, null, null },
22304 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
22305 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
22306 .patterns = &.{
22307 .{ .src = .{ .mem, .none } },
22308 .{ .src = .{ .to_sse, .none } },
22309 },
22310 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22311 .each = .{ .once = &.{
22312 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
22313 } },
22314 }, .{
22315 .required_features = .{ .sse2, null, null, null },
22316 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
22317 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
22318 .patterns = &.{
22319 .{ .src = .{ .mem, .none } },
22320 .{ .src = .{ .to_sse, .none } },
22321 },
22322 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22323 .each = .{ .once = &.{
22324 .{ ._, ._ps, .cvtpd2, .dst0x, .src0x, ._, ._ },
22325 } },
22326 }, .{
22327 .required_features = .{ .avx, null, null, null },
22328 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22329 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
22330 .patterns = &.{
22331 .{ .src = .{ .mem, .none } },
22332 .{ .src = .{ .to_sse, .none } },
22333 },
22334 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
22335 .each = .{ .once = &.{
22336 .{ ._, .v_ps, .cvtpd2, .dst0x, .src0y, ._, ._ },
22337 } },
22338 }, .{
22339 .required_features = .{ .avx, null, null, null },
22340 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22341 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
22342 .patterns = &.{
22343 .{ .src = .{ .to_mem, .none } },
22344 },
22345 .extra_temps = .{
22346 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22347 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
22348 .unused,
22349 .unused,
22350 .unused,
22351 .unused,
22352 .unused,
22353 .unused,
22354 .unused,
22355 },
22356 .dst_temps = .{.mem},
22357 .clobbers = .{ .eflags = true },
22358 .each = .{ .once = &.{
22359 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },
22360 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_size), ._, ._ },
22361 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
22362 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
22363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22364 } },
22365 }, .{
22366 .required_features = .{ .sse2, null, null, null },
22367 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
22368 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }},
22369 .patterns = &.{
22370 .{ .src = .{ .to_mem, .none } },
22371 },
22372 .extra_temps = .{
22373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22374 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
22375 .unused,
22376 .unused,
22377 .unused,
22378 .unused,
22379 .unused,
22380 .unused,
22381 .unused,
22382 },
22383 .dst_temps = .{.mem},
22384 .clobbers = .{ .eflags = true },
22385 .each = .{ .once = &.{
22386 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_size), ._, ._ },
22387 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_size), ._, ._ },
22388 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1x, ._, ._ },
22389 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22391 } },
22392 }, .{
22393 .required_features = .{ .x87, null, null, null },
22394 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
22395 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22396 .patterns = &.{
22397 .{ .src = .{ .to_mem, .none } },
22398 },
22399 .extra_temps = .{
22400 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22401 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22402 .unused,
22403 .unused,
22404 .unused,
22405 .unused,
22406 .unused,
22407 .unused,
22408 .unused,
22409 },
22410 .dst_temps = .{.mem},
22411 .clobbers = .{ .eflags = true },
22412 .each = .{ .once = &.{
22413 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22414 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22415 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22416 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22418 } },
22419 }, .{
22420 .required_features = .{ .avx, null, null, null },
22421 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22422 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
22423 .patterns = &.{
22424 .{ .src = .{ .to_mem, .none } },
22425 },
22426 .call_frame = .{ .size = 16, .alignment = .@"16" },
22427 .extra_temps = .{
22428 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22429 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22430 .unused,
22431 .unused,
22432 .unused,
22433 .unused,
22434 .unused,
22435 .unused,
22436 .unused,
22437 },
22438 .dst_temps = .{.{ .reg = .xmm0 }},
22439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22440 .each = .{ .once = &.{
22441 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
22442 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
22443 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
22444 } },
22445 }, .{
22446 .required_features = .{ .sse2, null, null, null },
22447 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22448 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
22449 .patterns = &.{
22450 .{ .src = .{ .to_mem, .none } },
22451 },
22452 .call_frame = .{ .size = 16, .alignment = .@"16" },
22453 .extra_temps = .{
22454 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22455 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22456 .unused,
22457 .unused,
22458 .unused,
22459 .unused,
22460 .unused,
22461 .unused,
22462 .unused,
22463 },
22464 .dst_temps = .{.{ .reg = .xmm0 }},
22465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22466 .each = .{ .once = &.{
22467 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
22468 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
22469 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
22470 } },
22471 }, .{
22472 .required_features = .{ .sse, null, null, null },
22473 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22474 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
22475 .patterns = &.{
22476 .{ .src = .{ .to_mem, .none } },
22477 },
22478 .call_frame = .{ .size = 16, .alignment = .@"16" },
22479 .extra_temps = .{
22480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22482 .unused,
22483 .unused,
22484 .unused,
22485 .unused,
22486 .unused,
22487 .unused,
22488 .unused,
22489 },
22490 .dst_temps = .{.{ .reg = .xmm0 }},
22491 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22492 .each = .{ .once = &.{
22493 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
22494 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
22495 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
22496 } },
22497 }, .{
22498 .required_features = .{ .avx, null, null, null },
22499 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22500 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22501 .patterns = &.{
22502 .{ .src = .{ .to_mem, .none } },
22503 },
22504 .call_frame = .{ .size = 16, .alignment = .@"16" },
22505 .extra_temps = .{
22506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22507 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22508 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22510 .unused,
22511 .unused,
22512 .unused,
22513 .unused,
22514 .unused,
22515 },
22516 .dst_temps = .{.mem},
22517 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22518 .each = .{ .once = &.{
22519 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22520 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22521 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22522 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22523 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22524 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22526 } },
22527 }, .{
22528 .required_features = .{ .sse4_1, null, null, null },
22529 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22530 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22531 .patterns = &.{
22532 .{ .src = .{ .to_mem, .none } },
22533 },
22534 .call_frame = .{ .size = 16, .alignment = .@"16" },
22535 .extra_temps = .{
22536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22537 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22538 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22540 .unused,
22541 .unused,
22542 .unused,
22543 .unused,
22544 .unused,
22545 },
22546 .dst_temps = .{.mem},
22547 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22548 .each = .{ .once = &.{
22549 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22550 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22551 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22552 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22553 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22554 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22555 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22556 } },
22557 }, .{
22558 .required_features = .{ .sse2, null, null, null },
22559 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22560 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22561 .patterns = &.{
22562 .{ .src = .{ .to_mem, .none } },
22563 },
22564 .call_frame = .{ .size = 16, .alignment = .@"16" },
22565 .extra_temps = .{
22566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22567 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22568 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22569 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22570 .{ .type = .f16, .kind = .{ .reg = .ax } },
22571 .unused,
22572 .unused,
22573 .unused,
22574 .unused,
22575 },
22576 .dst_temps = .{.mem},
22577 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22578 .each = .{ .once = &.{
22579 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22580 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22581 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
22582 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22583 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
22584 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22587 } },
22588 }, .{
22589 .required_features = .{ .sse, null, null, null },
22590 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22591 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22592 .patterns = &.{
22593 .{ .src = .{ .to_mem, .none } },
22594 },
22595 .call_frame = .{ .size = 16, .alignment = .@"16" },
22596 .extra_temps = .{
22597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22598 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
22599 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
22600 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
22601 .{ .type = .f16, .kind = .{ .reg = .ax } },
22602 .unused,
22603 .unused,
22604 .unused,
22605 .unused,
22606 },
22607 .dst_temps = .{.mem},
22608 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22609 .each = .{ .once = &.{
22610 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22611 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22612 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
22613 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
22614 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
22615 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
22616 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22617 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22618 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22619 } },
22620 }, .{
22621 .required_features = .{ .x87, null, null, null },
22622 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22623 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22624 .patterns = &.{
22625 .{ .src = .{ .mem, .none } },
22626 .{ .src = .{ .to_x87, .none } },
22627 },
22628 .extra_temps = .{
22629 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22630 .unused,
22631 .unused,
22632 .unused,
22633 .unused,
22634 .unused,
22635 .unused,
22636 .unused,
22637 .unused,
22638 },
22639 .dst_temps = .{.mem},
22640 .each = .{ .once = &.{
22641 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
22642 .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
22643 } },
22644 }, .{
22645 .required_features = .{ .x87, null, null, null },
22646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22647 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22648 .patterns = &.{
22649 .{ .src = .{ .to_mem, .none } },
22650 },
22651 .extra_temps = .{
22652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22653 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22654 .unused,
22655 .unused,
22656 .unused,
22657 .unused,
22658 .unused,
22659 .unused,
22660 .unused,
22661 },
22662 .dst_temps = .{.mem},
22663 .clobbers = .{ .eflags = true },
22664 .each = .{ .once = &.{
22665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22666 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
22667 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
22668 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22670 } },
22671 }, .{
22672 .required_features = .{ .x87, null, null, null },
22673 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22674 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
22675 .patterns = &.{
22676 .{ .src = .{ .mem, .none } },
22677 .{ .src = .{ .to_x87, .none } },
22678 },
22679 .extra_temps = .{
22680 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22681 .unused,
22682 .unused,
22683 .unused,
22684 .unused,
22685 .unused,
22686 .unused,
22687 .unused,
22688 .unused,
22689 },
22690 .dst_temps = .{.mem},
22691 .each = .{ .once = &.{
22692 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
22693 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
22694 } },
22695 }, .{
22696 .required_features = .{ .x87, null, null, null },
22697 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
22698 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
22699 .patterns = &.{
22700 .{ .src = .{ .to_mem, .none } },
22701 },
22702 .extra_temps = .{
22703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22704 .{ .type = .f80, .kind = .{ .reg = .st7 } },
22705 .unused,
22706 .unused,
22707 .unused,
22708 .unused,
22709 .unused,
22710 .unused,
22711 .unused,
22712 },
22713 .dst_temps = .{.mem},
22714 .clobbers = .{ .eflags = true },
22715 .each = .{ .once = &.{
22716 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22717 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
22718 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
22719 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
22720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22721 } },
22722 }, .{
22723 .required_features = .{ .sse, null, null, null },
22724 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22725 .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
22726 .patterns = &.{
22727 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
22728 },
22729 .call_frame = .{ .alignment = .@"16" },
22730 .extra_temps = .{
22731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22732 .unused,
22733 .unused,
22734 .unused,
22735 .unused,
22736 .unused,
22737 .unused,
22738 .unused,
22739 .unused,
22740 },
22741 .dst_temps = .{.{ .ref = .src0 }},
22742 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22743 .each = .{ .once = &.{
22744 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
22745 } },
22746 }, .{
22747 .required_features = .{ .avx, null, null, null },
22748 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22749 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22750 .patterns = &.{
22751 .{ .src = .{ .to_mem, .none } },
22752 },
22753 .call_frame = .{ .alignment = .@"16" },
22754 .extra_temps = .{
22755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22757 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22758 .unused,
22759 .unused,
22760 .unused,
22761 .unused,
22762 .unused,
22763 .unused,
22764 },
22765 .dst_temps = .{.mem},
22766 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22767 .each = .{ .once = &.{
22768 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22769 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22770 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22771 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22772 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22774 } },
22775 }, .{
22776 .required_features = .{ .sse4_1, null, null, null },
22777 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22778 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22779 .patterns = &.{
22780 .{ .src = .{ .to_mem, .none } },
22781 },
22782 .call_frame = .{ .alignment = .@"16" },
22783 .extra_temps = .{
22784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22785 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22786 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22787 .unused,
22788 .unused,
22789 .unused,
22790 .unused,
22791 .unused,
22792 .unused,
22793 },
22794 .dst_temps = .{.mem},
22795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22796 .each = .{ .once = &.{
22797 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22798 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22799 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22800 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
22801 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22803 } },
22804 }, .{
22805 .required_features = .{ .sse2, null, null, null },
22806 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22807 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22808 .patterns = &.{
22809 .{ .src = .{ .to_mem, .none } },
22810 },
22811 .call_frame = .{ .alignment = .@"16" },
22812 .extra_temps = .{
22813 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22814 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22816 .{ .type = .f16, .kind = .{ .reg = .ax } },
22817 .unused,
22818 .unused,
22819 .unused,
22820 .unused,
22821 .unused,
22822 },
22823 .dst_temps = .{.mem},
22824 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22825 .each = .{ .once = &.{
22826 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22827 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22828 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22829 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
22830 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
22831 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22833 } },
22834 }, .{
22835 .required_features = .{ .sse, null, null, null },
22836 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22837 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }},
22838 .patterns = &.{
22839 .{ .src = .{ .to_mem, .none } },
22840 },
22841 .call_frame = .{ .alignment = .@"16" },
22842 .extra_temps = .{
22843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22844 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
22845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
22846 .{ .type = .f32, .kind = .mem },
22847 .{ .type = .f16, .kind = .{ .reg = .ax } },
22848 .unused,
22849 .unused,
22850 .unused,
22851 .unused,
22852 },
22853 .dst_temps = .{.mem},
22854 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22855 .each = .{ .once = &.{
22856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22857 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
22858 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22859 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
22860 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
22861 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
22862 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
22863 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22864 } },
22865 }, .{
22866 .required_features = .{ .sse, null, null, null },
22867 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22868 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
22869 .patterns = &.{
22870 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
22871 },
22872 .call_frame = .{ .alignment = .@"16" },
22873 .extra_temps = .{
22874 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22875 .unused,
22876 .unused,
22877 .unused,
22878 .unused,
22879 .unused,
22880 .unused,
22881 .unused,
22882 .unused,
22883 },
22884 .dst_temps = .{.{ .ref = .src0 }},
22885 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22886 .each = .{ .once = &.{
22887 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
22888 } },
22889 }, .{
22890 .required_features = .{ .avx, null, null, null },
22891 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22892 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22893 .patterns = &.{
22894 .{ .src = .{ .to_mem, .none } },
22895 },
22896 .call_frame = .{ .alignment = .@"16" },
22897 .extra_temps = .{
22898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22899 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22901 .unused,
22902 .unused,
22903 .unused,
22904 .unused,
22905 .unused,
22906 .unused,
22907 },
22908 .dst_temps = .{.mem},
22909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22910 .each = .{ .once = &.{
22911 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22912 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22914 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22915 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22917 } },
22918 }, .{
22919 .required_features = .{ .sse2, null, null, null },
22920 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22921 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22922 .patterns = &.{
22923 .{ .src = .{ .to_mem, .none } },
22924 },
22925 .call_frame = .{ .alignment = .@"16" },
22926 .extra_temps = .{
22927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22928 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22930 .unused,
22931 .unused,
22932 .unused,
22933 .unused,
22934 .unused,
22935 .unused,
22936 },
22937 .dst_temps = .{.mem},
22938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22939 .each = .{ .once = &.{
22940 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22941 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22942 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22943 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22944 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22945 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22946 } },
22947 }, .{
22948 .required_features = .{ .sse, null, null, null },
22949 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22950 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
22951 .patterns = &.{
22952 .{ .src = .{ .to_mem, .none } },
22953 },
22954 .call_frame = .{ .alignment = .@"16" },
22955 .extra_temps = .{
22956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
22957 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
22958 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
22959 .unused,
22960 .unused,
22961 .unused,
22962 .unused,
22963 .unused,
22964 .unused,
22965 },
22966 .dst_temps = .{.mem},
22967 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22968 .each = .{ .once = &.{
22969 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
22970 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
22971 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
22972 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
22973 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
22974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
22975 } },
22976 }, .{
22977 .required_features = .{ .sse, null, null, null },
22978 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
22979 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
22980 .patterns = &.{
22981 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
22982 },
22983 .call_frame = .{ .alignment = .@"16" },
22984 .extra_temps = .{
22985 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
22986 .unused,
22987 .unused,
22988 .unused,
22989 .unused,
22990 .unused,
22991 .unused,
22992 .unused,
22993 .unused,
22994 },
22995 .dst_temps = .{.{ .ref = .src0 }},
22996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
22997 .each = .{ .once = &.{
22998 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
22999 } },
23000 }, .{
23001 .required_features = .{ .avx, null, null, null },
23002 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23003 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23004 .patterns = &.{
23005 .{ .src = .{ .to_mem, .none } },
23006 },
23007 .call_frame = .{ .alignment = .@"16" },
23008 .extra_temps = .{
23009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23010 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
23012 .unused,
23013 .unused,
23014 .unused,
23015 .unused,
23016 .unused,
23017 .unused,
23018 },
23019 .dst_temps = .{.mem},
23020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23021 .each = .{ .once = &.{
23022 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23023 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23024 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23025 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23026 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23027 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23028 } },
23029 }, .{
23030 .required_features = .{ .sse2, null, null, null },
23031 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23032 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23033 .patterns = &.{
23034 .{ .src = .{ .to_mem, .none } },
23035 },
23036 .call_frame = .{ .alignment = .@"16" },
23037 .extra_temps = .{
23038 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23039 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23040 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
23041 .unused,
23042 .unused,
23043 .unused,
23044 .unused,
23045 .unused,
23046 .unused,
23047 },
23048 .dst_temps = .{.mem},
23049 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23050 .each = .{ .once = &.{
23051 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23052 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23054 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23055 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23057 } },
23058 }, .{
23059 .required_features = .{ .sse, null, null, null },
23060 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23061 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23062 .patterns = &.{
23063 .{ .src = .{ .to_mem, .none } },
23064 },
23065 .call_frame = .{ .alignment = .@"16" },
23066 .extra_temps = .{
23067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23068 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
23070 .unused,
23071 .unused,
23072 .unused,
23073 .unused,
23074 .unused,
23075 .unused,
23076 },
23077 .dst_temps = .{.mem},
23078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23079 .each = .{ .once = &.{
23080 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23081 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
23082 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23083 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23084 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
23085 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23086 } },
23087 }, .{
23088 .required_features = .{ .sse, null, null, null },
23089 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23090 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
23091 .patterns = &.{
23092 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23093 },
23094 .call_frame = .{ .alignment = .@"16" },
23095 .extra_temps = .{
23096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23097 .unused,
23098 .unused,
23099 .unused,
23100 .unused,
23101 .unused,
23102 .unused,
23103 .unused,
23104 .unused,
23105 },
23106 .dst_temps = .{.{ .reg = .st0 }},
23107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23108 .each = .{ .once = &.{
23109 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
23110 } },
23111 }, .{
23112 .required_features = .{ .avx, null, null, null },
23113 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23114 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23115 .patterns = &.{
23116 .{ .src = .{ .to_mem, .none } },
23117 },
23118 .call_frame = .{ .alignment = .@"16" },
23119 .extra_temps = .{
23120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23121 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23123 .unused,
23124 .unused,
23125 .unused,
23126 .unused,
23127 .unused,
23128 .unused,
23129 },
23130 .dst_temps = .{.mem},
23131 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23132 .each = .{ .once = &.{
23133 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23134 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23135 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23136 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23137 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
23138 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23140 } },
23141 }, .{
23142 .required_features = .{ .sse2, null, null, null },
23143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23145 .patterns = &.{
23146 .{ .src = .{ .to_mem, .none } },
23147 },
23148 .call_frame = .{ .alignment = .@"16" },
23149 .extra_temps = .{
23150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23151 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23153 .unused,
23154 .unused,
23155 .unused,
23156 .unused,
23157 .unused,
23158 .unused,
23159 },
23160 .dst_temps = .{.mem},
23161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23162 .each = .{ .once = &.{
23163 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23164 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23166 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23167 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
23168 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23170 } },
23171 }, .{
23172 .required_features = .{ .sse, null, null, null },
23173 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
23174 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23175 .patterns = &.{
23176 .{ .src = .{ .to_mem, .none } },
23177 },
23178 .call_frame = .{ .alignment = .@"16" },
23179 .extra_temps = .{
23180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23181 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
23182 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
23183 .unused,
23184 .unused,
23185 .unused,
23186 .unused,
23187 .unused,
23188 .unused,
23189 },
23190 .dst_temps = .{.mem},
23191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23192 .each = .{ .once = &.{
23193 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
23194 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
23195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23196 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23197 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
23198 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23200 } },
23201 } }) catch |err| switch (err) {
23202 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
23203 @tagName(air_tag),
23204 ty_op.ty.toType().fmt(pt),
23205 cg.typeOf(ty_op.operand).fmt(pt),
23206 ops[0].tracking(cg),
23207 }),
23208 else => |e| return e,
23209 };
23210 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
23211 },
23212 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
23213 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
23214 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
23215 var res: [1]Temp = undefined;
23216 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
23217 .required_features = .{ .f16c, null, null, null },
23218 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23219 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
23220 .patterns = &.{
23221 .{ .src = .{ .to_sse, .none } },
23222 },
23223 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23224 .each = .{ .once = &.{
23225 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23226 } },
23227 }, .{
23228 .required_features = .{ .f16c, null, null, null },
23229 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
23230 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
23231 .patterns = &.{
23232 .{ .src = .{ .mem, .none } },
23233 .{ .src = .{ .to_sse, .none } },
23234 },
23235 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23236 .each = .{ .once = &.{
23237 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23238 } },
23239 }, .{
23240 .required_features = .{ .f16c, null, null, null },
23241 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23242 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
23243 .patterns = &.{
23244 .{ .src = .{ .mem, .none } },
23245 .{ .src = .{ .to_sse, .none } },
23246 },
23247 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23248 .each = .{ .once = &.{
23249 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
23250 } },
23251 }, .{
23252 .required_features = .{ .sse, null, null, null },
23253 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23254 .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
23255 .patterns = &.{
23256 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23257 },
23258 .call_frame = .{ .alignment = .@"16" },
23259 .extra_temps = .{
23260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23261 .unused,
23262 .unused,
23263 .unused,
23264 .unused,
23265 .unused,
23266 .unused,
23267 .unused,
23268 .unused,
23269 },
23270 .dst_temps = .{.{ .ref = .src0 }},
23271 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23272 .each = .{ .once = &.{
23273 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
23274 } },
23275 }, .{
23276 .required_features = .{ .f16c, null, null, null },
23277 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23278 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }},
23279 .patterns = &.{
23280 .{ .src = .{ .to_mem, .none } },
23281 },
23282 .extra_temps = .{
23283 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23284 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23285 .unused,
23286 .unused,
23287 .unused,
23288 .unused,
23289 .unused,
23290 .unused,
23291 .unused,
23292 },
23293 .dst_temps = .{.mem},
23294 .clobbers = .{ .eflags = true },
23295 .each = .{ .once = &.{
23296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23297 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23298 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
23299 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23300 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23301 } },
23302 }, .{
23303 .required_features = .{ .avx, null, null, null },
23304 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23305 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23306 .patterns = &.{
23307 .{ .src = .{ .to_mem, .none } },
23308 },
23309 .call_frame = .{ .alignment = .@"16" },
23310 .extra_temps = .{
23311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23314 .unused,
23315 .unused,
23316 .unused,
23317 .unused,
23318 .unused,
23319 .unused,
23320 },
23321 .dst_temps = .{.mem},
23322 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23323 .each = .{ .once = &.{
23324 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23325 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23326 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23327 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23328 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23329 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23331 } },
23332 }, .{
23333 .required_features = .{ .sse2, null, null, null },
23334 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23335 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23336 .patterns = &.{
23337 .{ .src = .{ .to_mem, .none } },
23338 },
23339 .call_frame = .{ .alignment = .@"16" },
23340 .extra_temps = .{
23341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23342 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23344 .unused,
23345 .unused,
23346 .unused,
23347 .unused,
23348 .unused,
23349 .unused,
23350 },
23351 .dst_temps = .{.mem},
23352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23353 .each = .{ .once = &.{
23354 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23355 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23356 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23357 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23358 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23359 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23360 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23361 } },
23362 }, .{
23363 .required_features = .{ .sse, null, null, null },
23364 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23365 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }},
23366 .patterns = &.{
23367 .{ .src = .{ .to_mem, .none } },
23368 },
23369 .call_frame = .{ .alignment = .@"16" },
23370 .extra_temps = .{
23371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23372 .{ .type = .f16, .kind = .{ .reg = .ax } },
23373 .{ .type = .f32, .kind = .mem },
23374 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23375 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
23376 .unused,
23377 .unused,
23378 .unused,
23379 .unused,
23380 },
23381 .dst_temps = .{.mem},
23382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23383 .each = .{ .once = &.{
23384 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23385 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23386 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23387 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23388 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23389 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23390 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23391 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23392 } },
23393 }, .{
23394 .required_features = .{ .f16c, null, null, null },
23395 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23396 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23397 .patterns = &.{
23398 .{ .src = .{ .to_sse, .none } },
23399 },
23400 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23401 .each = .{ .once = &.{
23402 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23403 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
23404 } },
23405 }, .{
23406 .required_features = .{ .f16c, null, null, null },
23407 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any },
23408 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
23409 .patterns = &.{
23410 .{ .src = .{ .mem, .none } },
23411 .{ .src = .{ .to_sse, .none } },
23412 },
23413 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23414 .each = .{ .once = &.{
23415 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23416 .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
23417 } },
23418 }, .{
23419 .required_features = .{ .f16c, null, null, null },
23420 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
23421 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
23422 .patterns = &.{
23423 .{ .src = .{ .mem, .none } },
23424 .{ .src = .{ .to_sse, .none } },
23425 },
23426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23427 .each = .{ .once = &.{
23428 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
23429 .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
23430 } },
23431 }, .{
23432 .required_features = .{ .f16c, null, null, null },
23433 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
23434 .dst_constraints = .{.{ .scalar_float = .{ .of = .zword, .is = .qword } }},
23435 .patterns = &.{
23436 .{ .src = .{ .mem, .none } },
23437 .{ .src = .{ .to_sse, .none } },
23438 },
23439 .extra_temps = .{
23440 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23441 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23442 .unused,
23443 .unused,
23444 .unused,
23445 .unused,
23446 .unused,
23447 .unused,
23448 .unused,
23449 },
23450 .dst_temps = .{.mem},
23451 .each = .{ .once = &.{
23452 .{ ._, .v_ps, .cvtph2, .tmp0y, .src0x, ._, ._ },
23453 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
23454 .{ ._, .v_f128, .extract, .tmp0x, .tmp0y, .ui(1), ._ },
23455 .{ ._, .v_pd, .mova, .mem(.dst0y), .tmp1y, ._, ._ },
23456 .{ ._, .v_pd, .cvtps2, .tmp1y, .tmp0x, ._, ._ },
23457 .{ ._, .v_pd, .mova, .memd(.dst0y, 32), .tmp1y, ._, ._ },
23458 } },
23459 }, .{
23460 .required_features = .{ .sse, null, null, null },
23461 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23462 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23463 .patterns = &.{
23464 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23465 },
23466 .call_frame = .{ .alignment = .@"16" },
23467 .extra_temps = .{
23468 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23469 .unused,
23470 .unused,
23471 .unused,
23472 .unused,
23473 .unused,
23474 .unused,
23475 .unused,
23476 .unused,
23477 },
23478 .dst_temps = .{.{ .ref = .src0 }},
23479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23480 .each = .{ .once = &.{
23481 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
23482 } },
23483 }, .{
23484 .required_features = .{ .f16c, null, null, null },
23485 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
23486 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }},
23487 .patterns = &.{
23488 .{ .src = .{ .to_mem, .none } },
23489 },
23490 .extra_temps = .{
23491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23492 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
23493 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23494 .unused,
23495 .unused,
23496 .unused,
23497 .unused,
23498 .unused,
23499 .unused,
23500 },
23501 .dst_temps = .{.mem},
23502 .clobbers = .{ .eflags = true },
23503 .each = .{ .once = &.{
23504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23505 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23506 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23507 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },
23508 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp2y, ._, ._ },
23509 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
23510 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_size, 32), .tmp2y, ._, ._ },
23511 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23512 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23513 } },
23514 }, .{
23515 .required_features = .{ .avx, null, null, null },
23516 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23517 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23518 .patterns = &.{
23519 .{ .src = .{ .to_mem, .none } },
23520 },
23521 .call_frame = .{ .alignment = .@"16" },
23522 .extra_temps = .{
23523 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23524 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23525 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23526 .unused,
23527 .unused,
23528 .unused,
23529 .unused,
23530 .unused,
23531 .unused,
23532 },
23533 .dst_temps = .{.mem},
23534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23535 .each = .{ .once = &.{
23536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23537 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23538 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23540 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23541 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23543 } },
23544 }, .{
23545 .required_features = .{ .sse2, null, null, null },
23546 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23547 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23548 .patterns = &.{
23549 .{ .src = .{ .to_mem, .none } },
23550 },
23551 .call_frame = .{ .alignment = .@"16" },
23552 .extra_temps = .{
23553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23554 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23556 .unused,
23557 .unused,
23558 .unused,
23559 .unused,
23560 .unused,
23561 .unused,
23562 },
23563 .dst_temps = .{.mem},
23564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23565 .each = .{ .once = &.{
23566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23567 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23568 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23569 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23570 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23571 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23573 } },
23574 }, .{
23575 .required_features = .{ .sse, null, null, null },
23576 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23577 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
23578 .patterns = &.{
23579 .{ .src = .{ .to_mem, .none } },
23580 },
23581 .call_frame = .{ .alignment = .@"16" },
23582 .extra_temps = .{
23583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23584 .{ .type = .f16, .kind = .{ .reg = .ax } },
23585 .{ .type = .f32, .kind = .mem },
23586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23587 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
23588 .unused,
23589 .unused,
23590 .unused,
23591 .unused,
23592 },
23593 .dst_temps = .{.mem},
23594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23595 .each = .{ .once = &.{
23596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23597 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23598 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23599 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23600 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23601 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23602 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23604 } },
23605 }, .{
23606 .required_features = .{ .f16c, .x87, null, null },
23607 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23608 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
23609 .patterns = &.{
23610 .{ .src = .{ .to_sse, .none } },
23611 },
23612 .extra_temps = .{
23613 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
23614 .{ .type = .f32, .kind = .mem },
23615 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23616 .unused,
23617 .unused,
23618 .unused,
23619 .unused,
23620 .unused,
23621 .unused,
23622 },
23623 .dst_temps = .{.{ .rc = .x87 }},
23624 .each = .{ .once = &.{
23625 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
23626 .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
23627 .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
23628 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
23629 } },
23630 }, .{
23631 .required_features = .{ .sse, null, null, null },
23632 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23633 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
23634 .patterns = &.{
23635 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23636 },
23637 .call_frame = .{ .alignment = .@"16" },
23638 .extra_temps = .{
23639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
23640 .unused,
23641 .unused,
23642 .unused,
23643 .unused,
23644 .unused,
23645 .unused,
23646 .unused,
23647 .unused,
23648 },
23649 .dst_temps = .{.{ .reg = .st0 }},
23650 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23651 .each = .{ .once = &.{
23652 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
23653 } },
23654 }, .{
23655 .required_features = .{ .avx, null, null, null },
23656 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23657 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23658 .patterns = &.{
23659 .{ .src = .{ .to_mem, .none } },
23660 },
23661 .call_frame = .{ .alignment = .@"16" },
23662 .extra_temps = .{
23663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23664 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
23666 .unused,
23667 .unused,
23668 .unused,
23669 .unused,
23670 .unused,
23671 .unused,
23672 },
23673 .dst_temps = .{.mem},
23674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23675 .each = .{ .once = &.{
23676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23677 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23678 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23679 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23680 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23681 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23684 } },
23685 }, .{
23686 .required_features = .{ .sse2, null, null, null },
23687 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23688 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23689 .patterns = &.{
23690 .{ .src = .{ .to_mem, .none } },
23691 },
23692 .call_frame = .{ .alignment = .@"16" },
23693 .extra_temps = .{
23694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
23697 .unused,
23698 .unused,
23699 .unused,
23700 .unused,
23701 .unused,
23702 .unused,
23703 },
23704 .dst_temps = .{.mem},
23705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23706 .each = .{ .once = &.{
23707 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23708 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23709 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23710 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23711 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23712 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23713 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23715 } },
23716 }, .{
23717 .required_features = .{ .sse, null, null, null },
23718 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23719 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
23720 .patterns = &.{
23721 .{ .src = .{ .to_mem, .none } },
23722 },
23723 .call_frame = .{ .alignment = .@"16" },
23724 .extra_temps = .{
23725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23726 .{ .type = .f16, .kind = .{ .reg = .ax } },
23727 .{ .type = .f32, .kind = .mem },
23728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
23730 .unused,
23731 .unused,
23732 .unused,
23733 .unused,
23734 },
23735 .dst_temps = .{.mem},
23736 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23737 .each = .{ .once = &.{
23738 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23739 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23740 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23741 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23742 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23743 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
23744 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
23745 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23746 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23747 } },
23748 }, .{
23749 .required_features = .{ .sse, null, null, null },
23750 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
23751 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
23752 .patterns = &.{
23753 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
23754 },
23755 .call_frame = .{ .alignment = .@"16" },
23756 .extra_temps = .{
23757 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23758 .unused,
23759 .unused,
23760 .unused,
23761 .unused,
23762 .unused,
23763 .unused,
23764 .unused,
23765 .unused,
23766 },
23767 .dst_temps = .{.{ .ref = .src0 }},
23768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23769 .each = .{ .once = &.{
23770 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
23771 } },
23772 }, .{
23773 .required_features = .{ .avx, null, null, null },
23774 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23775 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23776 .patterns = &.{
23777 .{ .src = .{ .to_mem, .none } },
23778 },
23779 .call_frame = .{ .alignment = .@"16" },
23780 .extra_temps = .{
23781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23782 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23784 .unused,
23785 .unused,
23786 .unused,
23787 .unused,
23788 .unused,
23789 .unused,
23790 },
23791 .dst_temps = .{.mem},
23792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23793 .each = .{ .once = &.{
23794 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23795 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
23796 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
23797 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23798 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23799 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23801 } },
23802 }, .{
23803 .required_features = .{ .sse2, null, null, null },
23804 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23805 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23806 .patterns = &.{
23807 .{ .src = .{ .to_mem, .none } },
23808 },
23809 .call_frame = .{ .alignment = .@"16" },
23810 .extra_temps = .{
23811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23813 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23814 .unused,
23815 .unused,
23816 .unused,
23817 .unused,
23818 .unused,
23819 .unused,
23820 },
23821 .dst_temps = .{.mem},
23822 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23823 .each = .{ .once = &.{
23824 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23825 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
23826 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
23827 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
23828 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
23829 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23830 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23831 } },
23832 }, .{
23833 .required_features = .{ .sse, null, null, null },
23834 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
23835 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
23836 .patterns = &.{
23837 .{ .src = .{ .to_mem, .none } },
23838 },
23839 .call_frame = .{ .alignment = .@"16" },
23840 .extra_temps = .{
23841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23842 .{ .type = .f16, .kind = .{ .reg = .ax } },
23843 .{ .type = .f32, .kind = .mem },
23844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
23846 .unused,
23847 .unused,
23848 .unused,
23849 .unused,
23850 },
23851 .dst_temps = .{.mem},
23852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
23853 .each = .{ .once = &.{
23854 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
23855 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
23856 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
23857 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
23858 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
23859 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
23860 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
23861 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23862 } },
23863 }, .{
23864 .required_features = .{ .avx, null, null, null },
23865 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23866 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23867 .patterns = &.{
23868 .{ .src = .{ .mem, .none } },
23869 },
23870 .dst_temps = .{.{ .rc = .sse }},
23871 .each = .{ .once = &.{
23872 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
23873 .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
23874 } },
23875 }, .{
23876 .required_features = .{ .avx, null, null, null },
23877 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23878 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23879 .patterns = &.{
23880 .{ .src = .{ .to_sse, .none } },
23881 },
23882 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23883 .each = .{ .once = &.{
23884 .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },
23885 } },
23886 }, .{
23887 .required_features = .{ .sse2, null, null, null },
23888 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23889 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23890 .patterns = &.{
23891 .{ .src = .{ .mem, .none } },
23892 .{ .src = .{ .to_sse, .none } },
23893 },
23894 .dst_temps = .{.{ .rc = .sse }},
23895 .each = .{ .once = &.{
23896 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
23897 .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
23898 } },
23899 }, .{
23900 .required_features = .{ .x87, null, null, null },
23901 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
23902 .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
23903 .patterns = &.{
23904 .{ .src = .{ .to_mem, .none } },
23905 },
23906 .extra_temps = .{
23907 .{ .type = .f80, .kind = .{ .reg = .st7 } },
23908 .unused,
23909 .unused,
23910 .unused,
23911 .unused,
23912 .unused,
23913 .unused,
23914 .unused,
23915 .unused,
23916 },
23917 .dst_temps = .{.mem},
23918 .each = .{ .once = &.{
23919 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
23920 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
23921 } },
23922 }, .{
23923 .required_features = .{ .avx, null, null, null },
23924 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23925 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
23926 .patterns = &.{
23927 .{ .src = .{ .mem, .none } },
23928 .{ .src = .{ .to_sse, .none } },
23929 },
23930 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23931 .each = .{ .once = &.{
23932 .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },
23933 } },
23934 }, .{
23935 .required_features = .{ .sse2, null, null, null },
23936 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23937 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
23938 .patterns = &.{
23939 .{ .src = .{ .mem, .none } },
23940 .{ .src = .{ .to_sse, .none } },
23941 },
23942 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23943 .each = .{ .once = &.{
23944 .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },
23945 } },
23946 }, .{
23947 .required_features = .{ .avx, null, null, null },
23948 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
23949 .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
23950 .patterns = &.{
23951 .{ .src = .{ .mem, .none } },
23952 .{ .src = .{ .to_sse, .none } },
23953 },
23954 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
23955 .each = .{ .once = &.{
23956 .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },
23957 } },
23958 }, .{
23959 .required_features = .{ .avx, null, null, null },
23960 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
23961 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }},
23962 .patterns = &.{
23963 .{ .src = .{ .to_mem, .none } },
23964 },
23965 .extra_temps = .{
23966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23967 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
23968 .unused,
23969 .unused,
23970 .unused,
23971 .unused,
23972 .unused,
23973 .unused,
23974 .unused,
23975 },
23976 .dst_temps = .{.mem},
23977 .clobbers = .{ .eflags = true },
23978 .each = .{ .once = &.{
23979 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
23980 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
23981 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
23982 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
23983 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
23984 } },
23985 }, .{
23986 .required_features = .{ .sse2, null, null, null },
23987 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .dword } }, .any },
23988 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }},
23989 .patterns = &.{
23990 .{ .src = .{ .to_mem, .none } },
23991 },
23992 .extra_temps = .{
23993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23994 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
23995 .unused,
23996 .unused,
23997 .unused,
23998 .unused,
23999 .unused,
24000 .unused,
24001 .unused,
24002 },
24003 .dst_temps = .{.mem},
24004 .clobbers = .{ .eflags = true },
24005 .each = .{ .once = &.{
24006 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
24007 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
24008 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
24009 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24011 } },
24012 }, .{
24013 .required_features = .{ .x87, null, null, null },
24014 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24015 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }},
24016 .patterns = &.{
24017 .{ .src = .{ .to_mem, .none } },
24018 },
24019 .extra_temps = .{
24020 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24021 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24022 .unused,
24023 .unused,
24024 .unused,
24025 .unused,
24026 .unused,
24027 .unused,
24028 .unused,
24029 },
24030 .dst_temps = .{.mem},
24031 .clobbers = .{ .eflags = true },
24032 .each = .{ .once = &.{
24033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24034 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
24035 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
24036 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24037 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24038 } },
24039 }, .{
24040 .required_features = .{ .x87, null, null, null },
24041 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24042 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
24043 .patterns = &.{
24044 .{ .src = .{ .to_mem, .none } },
24045 },
24046 .extra_temps = .{
24047 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24048 .unused,
24049 .unused,
24050 .unused,
24051 .unused,
24052 .unused,
24053 .unused,
24054 .unused,
24055 .unused,
24056 },
24057 .dst_temps = .{.mem},
24058 .each = .{ .once = &.{
24059 .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
24060 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24061 } },
24062 }, .{
24063 .required_features = .{ .x87, null, null, null },
24064 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24065 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
24066 .patterns = &.{
24067 .{ .src = .{ .to_mem, .none } },
24068 },
24069 .extra_temps = .{
24070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24071 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24072 .unused,
24073 .unused,
24074 .unused,
24075 .unused,
24076 .unused,
24077 .unused,
24078 .unused,
24079 },
24080 .dst_temps = .{.mem},
24081 .each = .{ .once = &.{
24082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24083 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
24084 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
24085 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24086 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24087 } },
24088 }, .{
24089 .required_features = .{ .sse, null, null, null },
24090 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24091 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24092 .patterns = &.{
24093 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
24094 },
24095 .call_frame = .{ .alignment = .@"16" },
24096 .extra_temps = .{
24097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24098 .unused,
24099 .unused,
24100 .unused,
24101 .unused,
24102 .unused,
24103 .unused,
24104 .unused,
24105 .unused,
24106 },
24107 .dst_temps = .{.{ .ref = .src0 }},
24108 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24109 .each = .{ .once = &.{
24110 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
24111 } },
24112 }, .{
24113 .required_features = .{ .avx, null, null, null },
24114 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24115 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24116 .patterns = &.{
24117 .{ .src = .{ .to_mem, .none } },
24118 },
24119 .call_frame = .{ .alignment = .@"16" },
24120 .extra_temps = .{
24121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24123 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24124 .unused,
24125 .unused,
24126 .unused,
24127 .unused,
24128 .unused,
24129 .unused,
24130 },
24131 .dst_temps = .{.mem},
24132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24133 .each = .{ .once = &.{
24134 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24135 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24136 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24137 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24138 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24140 } },
24141 }, .{
24142 .required_features = .{ .sse2, null, null, null },
24143 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24144 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24145 .patterns = &.{
24146 .{ .src = .{ .to_mem, .none } },
24147 },
24148 .call_frame = .{ .alignment = .@"16" },
24149 .extra_temps = .{
24150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24151 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24153 .unused,
24154 .unused,
24155 .unused,
24156 .unused,
24157 .unused,
24158 .unused,
24159 },
24160 .dst_temps = .{.mem},
24161 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24162 .each = .{ .once = &.{
24163 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24164 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24165 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24166 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24167 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24169 } },
24170 }, .{
24171 .required_features = .{ .sse, null, null, null },
24172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
24173 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24174 .patterns = &.{
24175 .{ .src = .{ .to_mem, .none } },
24176 },
24177 .call_frame = .{ .alignment = .@"16" },
24178 .extra_temps = .{
24179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24180 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
24181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
24182 .unused,
24183 .unused,
24184 .unused,
24185 .unused,
24186 .unused,
24187 .unused,
24188 },
24189 .dst_temps = .{.mem},
24190 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24191 .each = .{ .once = &.{
24192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24193 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
24194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24195 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
24197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24198 } },
24199 }, .{
24200 .required_features = .{ .x87, null, null, null },
24201 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24202 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
24203 .patterns = &.{
24204 .{ .src = .{ .to_mem, .none } },
24205 },
24206 .extra_temps = .{
24207 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24208 .unused,
24209 .unused,
24210 .unused,
24211 .unused,
24212 .unused,
24213 .unused,
24214 .unused,
24215 .unused,
24216 },
24217 .dst_temps = .{.mem},
24218 .each = .{ .once = &.{
24219 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
24220 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24221 } },
24222 }, .{
24223 .required_features = .{ .x87, null, null, null },
24224 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24225 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }},
24226 .patterns = &.{
24227 .{ .src = .{ .to_mem, .none } },
24228 },
24229 .extra_temps = .{
24230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24231 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24232 .unused,
24233 .unused,
24234 .unused,
24235 .unused,
24236 .unused,
24237 .unused,
24238 .unused,
24239 },
24240 .dst_temps = .{.mem},
24241 .each = .{ .once = &.{
24242 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24243 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
24244 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
24245 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24246 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24247 } },
24248 }, .{
24249 .required_features = .{ .sse, null, null, null },
24250 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24251 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24252 .patterns = &.{
24253 .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
24254 },
24255 .call_frame = .{ .alignment = .@"16" },
24256 .extra_temps = .{
24257 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24258 .unused,
24259 .unused,
24260 .unused,
24261 .unused,
24262 .unused,
24263 .unused,
24264 .unused,
24265 .unused,
24266 },
24267 .dst_temps = .{.{ .ref = .src0 }},
24268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24269 .each = .{ .once = &.{
24270 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
24271 } },
24272 }, .{
24273 .required_features = .{ .avx, null, null, null },
24274 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24275 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24276 .patterns = &.{
24277 .{ .src = .{ .to_mem, .none } },
24278 },
24279 .call_frame = .{ .alignment = .@"16" },
24280 .extra_temps = .{
24281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24282 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24283 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24284 .unused,
24285 .unused,
24286 .unused,
24287 .unused,
24288 .unused,
24289 .unused,
24290 },
24291 .dst_temps = .{.mem},
24292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24293 .each = .{ .once = &.{
24294 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24295 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24296 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24297 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24298 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24300 } },
24301 }, .{
24302 .required_features = .{ .sse2, null, null, null },
24303 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24304 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24305 .patterns = &.{
24306 .{ .src = .{ .to_mem, .none } },
24307 },
24308 .call_frame = .{ .alignment = .@"16" },
24309 .extra_temps = .{
24310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24311 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24313 .unused,
24314 .unused,
24315 .unused,
24316 .unused,
24317 .unused,
24318 .unused,
24319 },
24320 .dst_temps = .{.mem},
24321 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24322 .each = .{ .once = &.{
24323 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24324 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24325 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24326 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24327 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24329 } },
24330 }, .{
24331 .required_features = .{ .sse, null, null, null },
24332 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
24333 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24334 .patterns = &.{
24335 .{ .src = .{ .to_mem, .none } },
24336 },
24337 .call_frame = .{ .alignment = .@"16" },
24338 .extra_temps = .{
24339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24340 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
24341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
24342 .unused,
24343 .unused,
24344 .unused,
24345 .unused,
24346 .unused,
24347 .unused,
24348 },
24349 .dst_temps = .{.mem},
24350 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24351 .each = .{ .once = &.{
24352 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24353 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
24354 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
24355 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
24356 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24357 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
24358 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24359 } },
24360 }, .{
24361 .required_features = .{ .avx, null, null, null },
24362 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24363 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24364 .patterns = &.{
24365 .{ .src = .{ .to_mem, .none } },
24366 },
24367 .call_frame = .{ .size = 16, .alignment = .@"16" },
24368 .extra_temps = .{
24369 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24370 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24371 .unused,
24372 .unused,
24373 .unused,
24374 .unused,
24375 .unused,
24376 .unused,
24377 .unused,
24378 },
24379 .dst_temps = .{.{ .reg = .xmm0 }},
24380 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24381 .each = .{ .once = &.{
24382 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
24383 .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24384 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
24385 } },
24386 }, .{
24387 .required_features = .{ .sse2, null, null, null },
24388 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24389 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24390 .patterns = &.{
24391 .{ .src = .{ .to_mem, .none } },
24392 },
24393 .call_frame = .{ .size = 16, .alignment = .@"16" },
24394 .extra_temps = .{
24395 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24396 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24397 .unused,
24398 .unused,
24399 .unused,
24400 .unused,
24401 .unused,
24402 .unused,
24403 .unused,
24404 },
24405 .dst_temps = .{.{ .reg = .xmm0 }},
24406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24407 .each = .{ .once = &.{
24408 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
24409 .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
24410 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
24411 } },
24412 }, .{
24413 .required_features = .{ .sse, null, null, null },
24414 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24415 .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
24416 .patterns = &.{
24417 .{ .src = .{ .to_mem, .none } },
24418 },
24419 .call_frame = .{ .size = 16, .alignment = .@"16" },
24420 .extra_temps = .{
24421 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24423 .unused,
24424 .unused,
24425 .unused,
24426 .unused,
24427 .unused,
24428 .unused,
24429 .unused,
24430 },
24431 .dst_temps = .{.{ .reg = .xmm0 }},
24432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24433 .each = .{ .once = &.{
24434 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
24435 .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
24436 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
24437 } },
24438 }, .{
24439 .required_features = .{ .avx, null, null, null },
24440 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24441 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24442 .patterns = &.{
24443 .{ .src = .{ .to_mem, .none } },
24444 },
24445 .call_frame = .{ .size = 16, .alignment = .@"16" },
24446 .extra_temps = .{
24447 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24448 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24449 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24451 .unused,
24452 .unused,
24453 .unused,
24454 .unused,
24455 .unused,
24456 },
24457 .dst_temps = .{.mem},
24458 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24459 .each = .{ .once = &.{
24460 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24461 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24462 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
24463 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24464 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24465 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24467 } },
24468 }, .{
24469 .required_features = .{ .sse2, null, null, null },
24470 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24471 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24472 .patterns = &.{
24473 .{ .src = .{ .to_mem, .none } },
24474 },
24475 .call_frame = .{ .size = 16, .alignment = .@"16" },
24476 .extra_temps = .{
24477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24478 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24479 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24481 .unused,
24482 .unused,
24483 .unused,
24484 .unused,
24485 .unused,
24486 },
24487 .dst_temps = .{.mem},
24488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24489 .each = .{ .once = &.{
24490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24491 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24492 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
24493 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24494 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24495 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24496 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24497 } },
24498 }, .{
24499 .required_features = .{ .sse, null, null, null },
24500 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
24501 .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }},
24502 .patterns = &.{
24503 .{ .src = .{ .to_mem, .none } },
24504 },
24505 .call_frame = .{ .size = 16, .alignment = .@"16" },
24506 .extra_temps = .{
24507 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24508 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
24509 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
24510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
24511 .unused,
24512 .unused,
24513 .unused,
24514 .unused,
24515 .unused,
24516 },
24517 .dst_temps = .{.mem},
24518 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
24519 .each = .{ .once = &.{
24520 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24521 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
24522 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
24523 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
24524 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
24525 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
24526 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24527 } },
24528 } }) catch |err| switch (err) {
24529 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
24530 @tagName(air_tag),
24531 ty_op.ty.toType().fmt(pt),
24532 cg.typeOf(ty_op.operand).fmt(pt),
24533 ops[0].tracking(cg),
24534 }),
24535 else => |e| return e,
24536 };
24537 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
24538 },
24539 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
24540 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
24541 const dst_ty = ty_op.ty.toType();
24542 const src_ty = cg.typeOf(ty_op.operand);
24543 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
24544 var res: [1]Temp = undefined;
24545 cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
24546 .dst_constraints = .{.{ .int = .dword }},
24547 .patterns = &.{
24548 .{ .src = .{ .mut_mem, .none } },
24549 .{ .src = .{ .to_mut_gpr, .none } },
24550 },
24551 .dst_temps = .{.{ .ref = .src0 }},
24552 .each = .{ .once = &.{} },
24553 }, .{
24554 .required_features = .{ .@"64bit", null, null, null },
24555 .dst_constraints = .{.{ .int = .qword }},
24556 .patterns = &.{
24557 .{ .src = .{ .mut_mem, .none } },
24558 .{ .src = .{ .to_mut_gpr, .none } },
24559 },
24560 .dst_temps = .{.{ .ref = .src0 }},
24561 .each = .{ .once = &.{} },
24562 }, .{
24563 .dst_constraints = .{.{ .int = .byte }},
24564 .patterns = &.{
24565 .{ .src = .{ .to_mem, .none } },
24566 },
24567 .dst_temps = .{.{ .rc = .general_purpose }},
24568 .each = .{ .once = &.{
24569 .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
24570 } },
24571 }, .{
24572 .dst_constraints = .{.{ .int = .word }},
24573 .patterns = &.{
24574 .{ .src = .{ .to_mem, .none } },
24575 },
24576 .dst_temps = .{.{ .rc = .general_purpose }},
24577 .each = .{ .once = &.{
24578 .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
24579 } },
24580 }, .{
24581 .dst_constraints = .{.{ .int = .dword }},
24582 .patterns = &.{
24583 .{ .src = .{ .to_mem, .none } },
24584 },
24585 .dst_temps = .{.{ .rc = .general_purpose }},
24586 .each = .{ .once = &.{
24587 .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
24588 } },
24589 }, .{
24590 .required_features = .{ .@"64bit", null, null, null },
24591 .dst_constraints = .{.{ .int = .qword }},
24592 .patterns = &.{
24593 .{ .src = .{ .to_mem, .none } },
24594 },
24595 .dst_temps = .{.{ .rc = .general_purpose }},
24596 .each = .{ .once = &.{
24597 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
24598 } },
24599 }, .{
24600 .required_features = .{ .@"64bit", null, null, null },
24601 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
24602 .patterns = &.{
24603 .{ .src = .{ .to_mem, .none } },
24604 },
24605 .extra_temps = .{
24606 .{ .type = .usize, .kind = .{ .reg = .rsi } },
24607 .{ .type = .usize, .kind = .{ .reg = .rdi } },
24608 .{ .type = .u32, .kind = .{ .reg = .ecx } },
24609 .unused,
24610 .unused,
24611 .unused,
24612 .unused,
24613 .unused,
24614 .unused,
24615 },
24616 .dst_temps = .{.mem},
24617 .each = .{ .once = &.{
24618 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
24619 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
24620 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
24621 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
24622 } },
24623 }, .{
24624 .required_features = .{ .sse, null, null, null },
24625 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
24626 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
24627 .patterns = &.{
24628 .{ .src = .{ .mut_mem, .none } },
24629 .{ .src = .{ .to_mut_sse, .none } },
24630 },
24631 .dst_temps = .{.{ .ref = .src0 }},
24632 .each = .{ .once = &.{} },
24633 }, .{
24634 .required_features = .{ .avx, null, null, null },
24635 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .byte } }, .any },
24636 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .byte } }},
24637 .patterns = &.{
24638 .{ .src = .{ .mut_mem, .none } },
24639 .{ .src = .{ .to_mut_sse, .none } },
24640 },
24641 .dst_temps = .{.{ .ref = .src0 }},
24642 .each = .{ .once = &.{} },
24643 }, .{
24644 .required_features = .{ .avx, null, null, null },
24645 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24646 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24647 .patterns = &.{
24648 .{ .src = .{ .to_sse, .none } },
24649 },
24650 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24651 .each = .{ .once = &.{
24652 .{ ._, .vp_b, .ackssw, .dst0x, .src0x, .dst0x, ._ },
24653 } },
24654 }, .{
24655 .required_features = .{ .avx, null, null, null },
24656 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24657 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24658 .patterns = &.{
24659 .{ .src = .{ .to_sse, .none } },
24660 },
24661 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24662 .each = .{ .once = &.{
24663 .{ ._, .vp_b, .ackusw, .dst0x, .src0x, .dst0x, ._ },
24664 } },
24665 }, .{
24666 .required_features = .{ .sse2, null, null, null },
24667 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24668 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24669 .patterns = &.{
24670 .{ .src = .{ .to_mut_sse, .none } },
24671 },
24672 .dst_temps = .{.{ .ref = .src0 }},
24673 .each = .{ .once = &.{
24674 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
24675 } },
24676 }, .{
24677 .required_features = .{ .sse2, null, null, null },
24678 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24679 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24680 .patterns = &.{
24681 .{ .src = .{ .to_mut_sse, .none } },
24682 },
24683 .dst_temps = .{.{ .ref = .src0 }},
24684 .each = .{ .once = &.{
24685 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
24686 } },
24687 }, .{
24688 .required_features = .{ .avx2, null, null, null },
24689 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
24690 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }},
24691 .patterns = &.{
24692 .{ .src = .{ .to_sse, .none } },
24693 },
24694 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24695 .each = .{ .once = &.{
24696 .{ ._, .vp_b, .ackssw, .dst0y, .src0y, .dst0y, ._ },
24697 } },
24698 }, .{
24699 .required_features = .{ .avx2, null, null, null },
24700 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
24701 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .byte } }},
24702 .patterns = &.{
24703 .{ .src = .{ .to_sse, .none } },
24704 },
24705 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24706 .each = .{ .once = &.{
24707 .{ ._, .vp_b, .ackusw, .dst0y, .src0y, .dst0y, ._ },
24708 } },
24709 }, .{
24710 .required_features = .{ .slow_incdec, null, null, null },
24711 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
24712 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24713 .patterns = &.{
24714 .{ .src = .{ .to_mem, .none } },
24715 },
24716 .extra_temps = .{
24717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24718 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24719 .unused,
24720 .unused,
24721 .unused,
24722 .unused,
24723 .unused,
24724 .unused,
24725 .unused,
24726 },
24727 .dst_temps = .{.mem},
24728 .each = .{ .once = &.{
24729 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24730 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24731 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24732 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24734 } },
24735 }, .{
24736 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
24737 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24738 .patterns = &.{
24739 .{ .src = .{ .to_mem, .none } },
24740 },
24741 .extra_temps = .{
24742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24743 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24744 .unused,
24745 .unused,
24746 .unused,
24747 .unused,
24748 .unused,
24749 .unused,
24750 .unused,
24751 },
24752 .dst_temps = .{.mem},
24753 .each = .{ .once = &.{
24754 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24755 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
24756 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24757 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24758 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24759 } },
24760 }, .{
24761 .required_features = .{ .avx, null, null, null },
24762 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24763 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
24764 .patterns = &.{
24765 .{ .src = .{ .to_sse, .none } },
24766 },
24767 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24768 .each = .{ .once = &.{
24769 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
24770 .{ ._, .vp_b, .ackssw, .dst0x, .dst0x, .dst0x, ._ },
24771 } },
24772 }, .{
24773 .required_features = .{ .avx, null, null, null },
24774 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24775 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
24776 .patterns = &.{
24777 .{ .src = .{ .to_sse, .none } },
24778 },
24779 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24780 .each = .{ .once = &.{
24781 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
24782 .{ ._, .vp_b, .ackusw, .dst0x, .dst0x, .dst0x, ._ },
24783 } },
24784 }, .{
24785 .required_features = .{ .sse2, null, null, null },
24786 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24787 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }},
24788 .patterns = &.{
24789 .{ .src = .{ .to_mut_sse, .none } },
24790 },
24791 .dst_temps = .{.{ .ref = .src0 }},
24792 .each = .{ .once = &.{
24793 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
24794 .{ ._, .p_b, .ackssw, .dst0x, .dst0x, ._, ._ },
24795 } },
24796 }, .{
24797 .required_features = .{ .sse4_1, null, null, null },
24798 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
24799 .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }},
24800 .patterns = &.{
24801 .{ .src = .{ .to_mut_sse, .none } },
24802 },
24803 .dst_temps = .{.{ .ref = .src0 }},
24804 .each = .{ .once = &.{
24805 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
24806 .{ ._, .p_b, .ackusw, .dst0x, .dst0x, ._, ._ },
24807 } },
24808 }, .{
24809 .required_features = .{ .avx2, null, null, null },
24810 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
24811 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }},
24812 .patterns = &.{
24813 .{ .src = .{ .to_sse, .none } },
24814 },
24815 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24816 .each = .{ .once = &.{
24817 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
24818 .{ ._, .vp_b, .ackssw, .dst0y, .dst0y, .dst0y, ._ },
24819 } },
24820 }, .{
24821 .required_features = .{ .avx2, null, null, null },
24822 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
24823 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .byte } }},
24824 .patterns = &.{
24825 .{ .src = .{ .to_sse, .none } },
24826 },
24827 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
24828 .each = .{ .once = &.{
24829 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
24830 .{ ._, .vp_b, .ackusw, .dst0y, .dst0y, .dst0y, ._ },
24831 } },
24832 }, .{
24833 .required_features = .{ .slow_incdec, null, null, null },
24834 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
24835 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24836 .patterns = &.{
24837 .{ .src = .{ .to_mem, .none } },
24838 },
24839 .extra_temps = .{
24840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24841 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24842 .unused,
24843 .unused,
24844 .unused,
24845 .unused,
24846 .unused,
24847 .unused,
24848 .unused,
24849 },
24850 .dst_temps = .{.mem},
24851 .each = .{ .once = &.{
24852 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24853 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24854 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24855 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24856 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24857 } },
24858 }, .{
24859 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
24860 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24861 .patterns = &.{
24862 .{ .src = .{ .to_mem, .none } },
24863 },
24864 .extra_temps = .{
24865 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24866 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24867 .unused,
24868 .unused,
24869 .unused,
24870 .unused,
24871 .unused,
24872 .unused,
24873 .unused,
24874 },
24875 .dst_temps = .{.mem},
24876 .each = .{ .once = &.{
24877 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24878 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
24879 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24880 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24881 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24882 } },
24883 }, .{
24884 .required_features = .{ .slow_incdec, null, null, null },
24885 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
24886 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24887 .patterns = &.{
24888 .{ .src = .{ .to_mem, .none } },
24889 },
24890 .extra_temps = .{
24891 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24892 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24893 .unused,
24894 .unused,
24895 .unused,
24896 .unused,
24897 .unused,
24898 .unused,
24899 .unused,
24900 },
24901 .dst_temps = .{.mem},
24902 .each = .{ .once = &.{
24903 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24904 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24905 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24906 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24908 } },
24909 }, .{
24910 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
24911 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24912 .patterns = &.{
24913 .{ .src = .{ .to_mem, .none } },
24914 },
24915 .extra_temps = .{
24916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24917 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24918 .unused,
24919 .unused,
24920 .unused,
24921 .unused,
24922 .unused,
24923 .unused,
24924 .unused,
24925 },
24926 .dst_temps = .{.mem},
24927 .each = .{ .once = &.{
24928 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24929 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
24930 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
24931 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24932 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24933 } },
24934 }, .{
24935 .required_features = .{ .slow_incdec, null, null, null },
24936 .src_constraints = .{ .any_scalar_int, .any },
24937 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24938 .patterns = &.{
24939 .{ .src = .{ .to_mem, .none } },
24940 },
24941 .extra_temps = .{
24942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24944 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24945 .unused,
24946 .unused,
24947 .unused,
24948 .unused,
24949 .unused,
24950 .unused,
24951 },
24952 .dst_temps = .{.mem},
24953 .each = .{ .once = &.{
24954 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24955 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24956 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24957 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24958 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24959 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
24960 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24961 } },
24962 }, .{
24963 .src_constraints = .{ .any_scalar_int, .any },
24964 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }},
24965 .patterns = &.{
24966 .{ .src = .{ .to_mem, .none } },
24967 },
24968 .extra_temps = .{
24969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24970 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
24971 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
24972 .unused,
24973 .unused,
24974 .unused,
24975 .unused,
24976 .unused,
24977 .unused,
24978 },
24979 .dst_temps = .{.mem},
24980 .each = .{ .once = &.{
24981 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
24982 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
24983 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
24984 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
24985 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
24986 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
24987 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
24988 } },
24989 }, .{
24990 .required_features = .{ .sse, null, null, null },
24991 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
24992 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
24993 .patterns = &.{
24994 .{ .src = .{ .mut_mem, .none } },
24995 .{ .src = .{ .to_mut_sse, .none } },
24996 },
24997 .dst_temps = .{.{ .ref = .src0 }},
24998 .each = .{ .once = &.{} },
24999 }, .{
25000 .required_features = .{ .avx, null, null, null },
25001 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any },
25002 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
25003 .patterns = &.{
25004 .{ .src = .{ .mut_mem, .none } },
25005 .{ .src = .{ .to_mut_sse, .none } },
25006 },
25007 .dst_temps = .{.{ .ref = .src0 }},
25008 .each = .{ .once = &.{} },
25009 }, .{
25010 .required_features = .{ .avx, null, null, null },
25011 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25012 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
25013 .patterns = &.{
25014 .{ .src = .{ .to_sse, .none } },
25015 },
25016 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25017 .each = .{ .once = &.{
25018 .{ ._, .vp_w, .ackssd, .dst0x, .src0x, .dst0x, ._ },
25019 } },
25020 }, .{
25021 .required_features = .{ .avx, null, null, null },
25022 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25023 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
25024 .patterns = &.{
25025 .{ .src = .{ .to_sse, .none } },
25026 },
25027 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25028 .each = .{ .once = &.{
25029 .{ ._, .vp_w, .ackusd, .dst0x, .src0x, .dst0x, ._ },
25030 } },
25031 }, .{
25032 .required_features = .{ .sse2, null, null, null },
25033 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25034 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }},
25035 .patterns = &.{
25036 .{ .src = .{ .to_mut_sse, .none } },
25037 },
25038 .dst_temps = .{.{ .ref = .src0 }},
25039 .each = .{ .once = &.{
25040 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
25041 } },
25042 }, .{
25043 .required_features = .{ .sse4_1, null, null, null },
25044 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25045 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .word } }},
25046 .patterns = &.{
25047 .{ .src = .{ .to_mut_sse, .none } },
25048 },
25049 .dst_temps = .{.{ .ref = .src0 }},
25050 .each = .{ .once = &.{
25051 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
25052 } },
25053 }, .{
25054 .required_features = .{ .avx2, null, null, null },
25055 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25056 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
25057 .patterns = &.{
25058 .{ .src = .{ .to_sse, .none } },
25059 },
25060 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25061 .each = .{ .once = &.{
25062 .{ ._, .vp_w, .ackssd, .dst0y, .src0y, .dst0y, ._ },
25063 } },
25064 }, .{
25065 .required_features = .{ .avx2, null, null, null },
25066 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25067 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
25068 .patterns = &.{
25069 .{ .src = .{ .to_sse, .none } },
25070 },
25071 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25072 .each = .{ .once = &.{
25073 .{ ._, .vp_w, .ackusd, .dst0y, .src0y, .dst0y, ._ },
25074 } },
25075 }, .{
25076 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
25077 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25078 .patterns = &.{
25079 .{ .src = .{ .to_mem, .none } },
25080 },
25081 .extra_temps = .{
25082 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25083 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25084 .unused,
25085 .unused,
25086 .unused,
25087 .unused,
25088 .unused,
25089 .unused,
25090 .unused,
25091 },
25092 .dst_temps = .{.mem},
25093 .each = .{ .once = &.{
25094 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25095 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25096 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25097 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25099 } },
25100 }, .{
25101 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
25102 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25103 .patterns = &.{
25104 .{ .src = .{ .to_mem, .none } },
25105 },
25106 .extra_temps = .{
25107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25108 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25109 .unused,
25110 .unused,
25111 .unused,
25112 .unused,
25113 .unused,
25114 .unused,
25115 .unused,
25116 },
25117 .dst_temps = .{.mem},
25118 .each = .{ .once = &.{
25119 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25120 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
25121 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25122 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25123 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25124 } },
25125 }, .{
25126 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25127 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25128 .patterns = &.{
25129 .{ .src = .{ .to_mem, .none } },
25130 },
25131 .extra_temps = .{
25132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25133 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25134 .unused,
25135 .unused,
25136 .unused,
25137 .unused,
25138 .unused,
25139 .unused,
25140 .unused,
25141 },
25142 .dst_temps = .{.mem},
25143 .each = .{ .once = &.{
25144 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25145 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25146 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
25147 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25148 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25149 } },
25150 }, .{
25151 .src_constraints = .{ .any_scalar_int, .any },
25152 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
25153 .patterns = &.{
25154 .{ .src = .{ .to_mem, .none } },
25155 },
25156 .extra_temps = .{
25157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25159 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
25160 .unused,
25161 .unused,
25162 .unused,
25163 .unused,
25164 .unused,
25165 .unused,
25166 },
25167 .dst_temps = .{.mem},
25168 .each = .{ .once = &.{
25169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25170 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25171 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25172 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
25173 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25174 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
25175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25176 } },
25177 }, .{
25178 .required_features = .{ .sse, null, null, null },
25179 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
25180 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
25181 .patterns = &.{
25182 .{ .src = .{ .mut_mem, .none } },
25183 .{ .src = .{ .to_mut_sse, .none } },
25184 },
25185 .dst_temps = .{.{ .ref = .src0 }},
25186 .each = .{ .once = &.{} },
25187 }, .{
25188 .required_features = .{ .avx, null, null, null },
25189 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },
25190 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
25191 .patterns = &.{
25192 .{ .src = .{ .mut_mem, .none } },
25193 .{ .src = .{ .to_mut_sse, .none } },
25194 },
25195 .dst_temps = .{.{ .ref = .src0 }},
25196 .each = .{ .once = &.{} },
25197 }, .{
25198 .required_features = .{ .avx, null, null, null },
25199 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25200 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
25201 .patterns = &.{
25202 .{ .src = .{ .mem, .none } },
25203 .{ .src = .{ .to_sse, .none } },
25204 },
25205 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25206 .each = .{ .once = &.{
25207 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
25208 } },
25209 }, .{
25210 .required_features = .{ .sse2, null, null, null },
25211 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25212 .dst_constraints = .{.{ .scalar_int = .{ .of = .qword, .is = .dword } }},
25213 .patterns = &.{
25214 .{ .src = .{ .mem, .none } },
25215 .{ .src = .{ .to_sse, .none } },
25216 },
25217 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
25218 .each = .{ .once = &.{
25219 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b10_00_10_00), ._ },
25220 } },
25221 }, .{
25222 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
25223 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
25224 .patterns = &.{
25225 .{ .src = .{ .to_mem, .none } },
25226 },
25227 .extra_temps = .{
25228 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25229 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25230 .unused,
25231 .unused,
25232 .unused,
25233 .unused,
25234 .unused,
25235 .unused,
25236 .unused,
25237 },
25238 .dst_temps = .{.mem},
25239 .each = .{ .once = &.{
25240 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25241 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
25242 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25243 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25245 } },
25246 }, .{
25247 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25248 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
25249 .patterns = &.{
25250 .{ .src = .{ .to_mem, .none } },
25251 },
25252 .extra_temps = .{
25253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25255 .unused,
25256 .unused,
25257 .unused,
25258 .unused,
25259 .unused,
25260 .unused,
25261 .unused,
25262 },
25263 .dst_temps = .{.mem},
25264 .each = .{ .once = &.{
25265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25266 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
25267 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25268 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25269 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25270 } },
25271 }, .{
25272 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any },
25273 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
25274 .patterns = &.{
25275 .{ .src = .{ .to_mem, .none } },
25276 },
25277 .extra_temps = .{
25278 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25279 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25280 .unused,
25281 .unused,
25282 .unused,
25283 .unused,
25284 .unused,
25285 .unused,
25286 .unused,
25287 },
25288 .dst_temps = .{.mem},
25289 .each = .{ .once = &.{
25290 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25291 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
25292 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
25293 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25295 } },
25296 }, .{
25297 .src_constraints = .{ .any_scalar_int, .any },
25298 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
25299 .patterns = &.{
25300 .{ .src = .{ .to_mem, .none } },
25301 },
25302 .extra_temps = .{
25303 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25304 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25306 .unused,
25307 .unused,
25308 .unused,
25309 .unused,
25310 .unused,
25311 .unused,
25312 },
25313 .dst_temps = .{.mem},
25314 .each = .{ .once = &.{
25315 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25316 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25317 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
25318 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
25319 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25320 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
25321 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25322 } },
25323 }, .{
25324 .required_features = .{ .sse, null, null, null },
25325 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
25326 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
25327 .patterns = &.{
25328 .{ .src = .{ .mut_mem, .none } },
25329 .{ .src = .{ .to_mut_sse, .none } },
25330 },
25331 .dst_temps = .{.{ .ref = .src0 }},
25332 .each = .{ .once = &.{} },
25333 }, .{
25334 .required_features = .{ .avx, null, null, null },
25335 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
25336 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
25337 .patterns = &.{
25338 .{ .src = .{ .mut_mem, .none } },
25339 .{ .src = .{ .to_mut_sse, .none } },
25340 },
25341 .dst_temps = .{.{ .ref = .src0 }},
25342 .each = .{ .once = &.{} },
25343 }, .{
25344 .required_features = .{ .@"64bit", null, null, null },
25345 .src_constraints = .{ .any_scalar_int, .any },
25346 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
25347 .patterns = &.{
25348 .{ .src = .{ .to_mem, .none } },
25349 },
25350 .extra_temps = .{
25351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
25352 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25353 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
25354 .unused,
25355 .unused,
25356 .unused,
25357 .unused,
25358 .unused,
25359 .unused,
25360 },
25361 .dst_temps = .{.mem},
25362 .each = .{ .once = &.{
25363 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
25364 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
25365 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
25366 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
25367 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
25368 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
25369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
25370 } },
25371 }, .{
25372 .required_features = .{ .sse, null, null, null },
25373 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
25374 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
25375 .patterns = &.{
25376 .{ .src = .{ .mut_mem, .none } },
25377 .{ .src = .{ .to_mut_sse, .none } },
25378 },
25379 .dst_temps = .{.{ .ref = .src0 }},
25380 .each = .{ .once = &.{} },
25381 }, .{
25382 .required_features = .{ .avx, null, null, null },
25383 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .xword } }, .any },
25384 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .xword } }},
25385 .patterns = &.{
25386 .{ .src = .{ .mut_mem, .none } },
25387 .{ .src = .{ .to_mut_sse, .none } },
25388 },
25389 .dst_temps = .{.{ .ref = .src0 }},
25390 .each = .{ .once = &.{} },
25391 }, .{
25392 .required_features = .{ .avx, null, null, null },
25393 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .yword } }, .any },
25394 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .yword } }},
25395 .patterns = &.{
25396 .{ .src = .{ .mut_mem, .none } },
25397 .{ .src = .{ .to_mut_sse, .none } },
25398 },
25399 .dst_temps = .{.{ .ref = .src0 }},
25400 .each = .{ .once = &.{} },
25401 }, .{
25402 .required_features = .{ .@"64bit", .slow_incdec, null, null },
25403 .src_constraints = .{ .any_scalar_int, .any },
25404 .dst_constraints = .{.any_scalar_int},
25405 .patterns = &.{
25406 .{ .src = .{ .to_mem, .none } },
25407 },
25408 .extra_temps = .{
25409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25410 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25411 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25412 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25413 .unused,
25414 .unused,
25415 .unused,
25416 .unused,
25417 .unused,
25418 },
25419 .dst_temps = .{.mem},
25420 .clobbers = .{ .eflags = true },
25421 .each = .{ .once = &.{
25422 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
25423 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
25424 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
25425 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
25426 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
25427 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25428 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
25429 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
25430 } },
25431 }, .{
25432 .required_features = .{ .@"64bit", null, null, null },
25433 .src_constraints = .{ .any_scalar_int, .any },
25434 .dst_constraints = .{.any_scalar_int},
25435 .patterns = &.{
25436 .{ .src = .{ .to_mem, .none } },
25437 },
25438 .extra_temps = .{
25439 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
25440 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25441 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25442 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25443 .unused,
25444 .unused,
25445 .unused,
25446 .unused,
25447 .unused,
25448 },
25449 .dst_temps = .{.mem},
25450 .clobbers = .{ .eflags = true },
25451 .each = .{ .once = &.{
25452 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
25453 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
25454 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
25455 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
25456 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
25457 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
25458 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
25459 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
25460 } },
25461 } } else comptime &.{ .{
25462 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25463 .dst_constraints = .{.{ .signed_int = .dword }},
25464 .patterns = &.{
25465 .{ .src = .{ .mem, .none } },
25466 .{ .src = .{ .to_gpr, .none } },
25467 },
25468 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25469 .each = .{ .once = &.{
25470 .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
25471 } },
25472 }, .{
25473 .src_constraints = .{ .{ .int = .byte }, .any },
25474 .dst_constraints = .{.{ .int = .dword }},
25475 .patterns = &.{
25476 .{ .src = .{ .mem, .none } },
25477 .{ .src = .{ .to_gpr, .none } },
25478 },
25479 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25480 .each = .{ .once = &.{
25481 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
25482 } },
25483 }, .{
25484 .required_features = .{ .@"64bit", null, null, null },
25485 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25486 .dst_constraints = .{.{ .signed_int = .qword }},
25487 .patterns = &.{
25488 .{ .src = .{ .mem, .none } },
25489 .{ .src = .{ .to_gpr, .none } },
25490 },
25491 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25492 .each = .{ .once = &.{
25493 .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
25494 } },
25495 }, .{
25496 .required_features = .{ .@"64bit", null, null, null },
25497 .src_constraints = .{ .{ .int = .byte }, .any },
25498 .dst_constraints = .{.{ .int = .qword }},
25499 .patterns = &.{
25500 .{ .src = .{ .mem, .none } },
25501 .{ .src = .{ .to_gpr, .none } },
25502 },
25503 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25504 .each = .{ .once = &.{
25505 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
25506 } },
25507 }, .{
25508 .required_features = .{ .@"64bit", null, null, null },
25509 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25510 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25511 .patterns = &.{
25512 .{ .src = .{ .mem, .none } },
25513 .{ .src = .{ .to_gpr, .none } },
25514 },
25515 .extra_temps = .{
25516 .{ .type = .i64, .kind = .{ .reg = .rax } },
25517 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25518 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25519 .unused,
25520 .unused,
25521 .unused,
25522 .unused,
25523 .unused,
25524 .unused,
25525 },
25526 .dst_temps = .{.mem},
25527 .clobbers = .{ .eflags = true },
25528 .each = .{ .once = &.{
25529 .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
25530 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25531 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25532 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25533 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25534 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25535 } },
25536 }, .{
25537 .required_features = .{ .@"64bit", null, null, null },
25538 .src_constraints = .{ .{ .int = .byte }, .any },
25539 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25540 .patterns = &.{
25541 .{ .src = .{ .mem, .none } },
25542 .{ .src = .{ .to_gpr, .none } },
25543 },
25544 .extra_temps = .{
25545 .{ .type = .u64, .kind = .{ .reg = .rax } },
25546 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25547 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25548 .unused,
25549 .unused,
25550 .unused,
25551 .unused,
25552 .unused,
25553 .unused,
25554 },
25555 .dst_temps = .{.mem},
25556 .clobbers = .{ .eflags = true },
25557 .each = .{ .once = &.{
25558 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
25559 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25560 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25561 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25562 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25563 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25564 } },
25565 }, .{
25566 .src_constraints = .{ .{ .signed_int = .byte }, .any },
25567 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
25568 .patterns = &.{
25569 .{ .src = .{ .mem, .none } },
25570 .{ .src = .{ .to_gpr, .none } },
25571 },
25572 .extra_temps = .{
25573 .{ .type = .i32, .kind = .{ .reg = .eax } },
25574 .{ .type = .usize, .kind = .{ .reg = .edi } },
25575 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25576 .unused,
25577 .unused,
25578 .unused,
25579 .unused,
25580 .unused,
25581 .unused,
25582 },
25583 .dst_temps = .{.mem},
25584 .clobbers = .{ .eflags = true },
25585 .each = .{ .once = &.{
25586 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
25587 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25588 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25589 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25590 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25591 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25592 } },
25593 }, .{
25594 .src_constraints = .{ .{ .int = .byte }, .any },
25595 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
25596 .patterns = &.{
25597 .{ .src = .{ .mem, .none } },
25598 .{ .src = .{ .to_gpr, .none } },
25599 },
25600 .extra_temps = .{
25601 .{ .type = .u32, .kind = .{ .reg = .eax } },
25602 .{ .type = .usize, .kind = .{ .reg = .edi } },
25603 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25604 .unused,
25605 .unused,
25606 .unused,
25607 .unused,
25608 .unused,
25609 .unused,
25610 },
25611 .dst_temps = .{.mem},
25612 .clobbers = .{ .eflags = true },
25613 .each = .{ .once = &.{
25614 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
25615 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25616 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25617 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25618 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25619 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25620 } },
25621 }, .{
25622 .src_constraints = .{ .{ .signed_int = .word }, .any },
25623 .dst_constraints = .{.{ .signed_int = .dword }},
25624 .patterns = &.{
25625 .{ .src = .{ .mem, .none } },
25626 .{ .src = .{ .to_gpr, .none } },
25627 },
25628 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25629 .each = .{ .once = &.{
25630 .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
25631 } },
25632 }, .{
25633 .src_constraints = .{ .{ .int = .word }, .any },
25634 .dst_constraints = .{.{ .int = .dword }},
25635 .patterns = &.{
25636 .{ .src = .{ .mem, .none } },
25637 .{ .src = .{ .to_gpr, .none } },
25638 },
25639 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25640 .each = .{ .once = &.{
25641 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
25642 } },
25643 }, .{
25644 .required_features = .{ .@"64bit", null, null, null },
25645 .src_constraints = .{ .{ .signed_int = .word }, .any },
25646 .dst_constraints = .{.{ .signed_int = .qword }},
25647 .patterns = &.{
25648 .{ .src = .{ .mem, .none } },
25649 .{ .src = .{ .to_gpr, .none } },
25650 },
25651 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25652 .each = .{ .once = &.{
25653 .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
25654 } },
25655 }, .{
25656 .required_features = .{ .@"64bit", null, null, null },
25657 .src_constraints = .{ .{ .int = .word }, .any },
25658 .dst_constraints = .{.{ .int = .qword }},
25659 .patterns = &.{
25660 .{ .src = .{ .mem, .none } },
25661 .{ .src = .{ .to_gpr, .none } },
25662 },
25663 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25664 .each = .{ .once = &.{
25665 .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
25666 } },
25667 }, .{
25668 .required_features = .{ .@"64bit", null, null, null },
25669 .src_constraints = .{ .{ .signed_int = .word }, .any },
25670 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25671 .patterns = &.{
25672 .{ .src = .{ .mem, .none } },
25673 .{ .src = .{ .to_gpr, .none } },
25674 },
25675 .extra_temps = .{
25676 .{ .type = .i64, .kind = .{ .reg = .rax } },
25677 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25678 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25679 .unused,
25680 .unused,
25681 .unused,
25682 .unused,
25683 .unused,
25684 .unused,
25685 },
25686 .dst_temps = .{.mem},
25687 .clobbers = .{ .eflags = true },
25688 .each = .{ .once = &.{
25689 .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
25690 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25691 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25692 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25693 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25694 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25695 } },
25696 }, .{
25697 .required_features = .{ .@"64bit", null, null, null },
25698 .src_constraints = .{ .{ .int = .word }, .any },
25699 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25700 .patterns = &.{
25701 .{ .src = .{ .mem, .none } },
25702 .{ .src = .{ .to_gpr, .none } },
25703 },
25704 .extra_temps = .{
25705 .{ .type = .u64, .kind = .{ .reg = .rax } },
25706 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25707 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25708 .unused,
25709 .unused,
25710 .unused,
25711 .unused,
25712 .unused,
25713 .unused,
25714 },
25715 .dst_temps = .{.mem},
25716 .clobbers = .{ .eflags = true },
25717 .each = .{ .once = &.{
25718 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
25719 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25720 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25721 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25722 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25723 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25724 } },
25725 }, .{
25726 .src_constraints = .{ .{ .signed_int = .word }, .any },
25727 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
25728 .patterns = &.{
25729 .{ .src = .{ .mem, .none } },
25730 .{ .src = .{ .to_gpr, .none } },
25731 },
25732 .extra_temps = .{
25733 .{ .type = .i32, .kind = .{ .reg = .eax } },
25734 .{ .type = .usize, .kind = .{ .reg = .edi } },
25735 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25736 .unused,
25737 .unused,
25738 .unused,
25739 .unused,
25740 .unused,
25741 .unused,
25742 },
25743 .dst_temps = .{.mem},
25744 .clobbers = .{ .eflags = true },
25745 .each = .{ .once = &.{
25746 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
25747 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25748 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25749 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25750 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25751 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25752 } },
25753 }, .{
25754 .src_constraints = .{ .{ .int = .word }, .any },
25755 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
25756 .patterns = &.{
25757 .{ .src = .{ .mem, .none } },
25758 .{ .src = .{ .to_gpr, .none } },
25759 },
25760 .extra_temps = .{
25761 .{ .type = .u32, .kind = .{ .reg = .eax } },
25762 .{ .type = .usize, .kind = .{ .reg = .edi } },
25763 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25764 .unused,
25765 .unused,
25766 .unused,
25767 .unused,
25768 .unused,
25769 .unused,
25770 },
25771 .dst_temps = .{.mem},
25772 .clobbers = .{ .eflags = true },
25773 .each = .{ .once = &.{
25774 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
25775 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25776 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25777 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25778 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25779 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25780 } },
25781 }, .{
25782 .required_features = .{ .@"64bit", null, null, null },
25783 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25784 .dst_constraints = .{.{ .signed_int = .qword }},
25785 .patterns = &.{
25786 .{ .src = .{ .mem, .none } },
25787 .{ .src = .{ .to_gpr, .none } },
25788 },
25789 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25790 .each = .{ .once = &.{
25791 .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
25792 } },
25793 }, .{
25794 .required_features = .{ .@"64bit", null, null, null },
25795 .src_constraints = .{ .{ .int = .dword }, .any },
25796 .dst_constraints = .{.{ .int = .qword }},
25797 .patterns = &.{
25798 .{ .src = .{ .mem, .none } },
25799 .{ .src = .{ .to_gpr, .none } },
25800 },
25801 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }},
25802 .each = .{ .once = &.{
25803 .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
25804 } },
25805 }, .{
25806 .required_features = .{ .@"64bit", null, null, null },
25807 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25808 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25809 .patterns = &.{
25810 .{ .src = .{ .mem, .none } },
25811 .{ .src = .{ .to_gpr, .none } },
25812 },
25813 .extra_temps = .{
25814 .{ .type = .i64, .kind = .{ .reg = .rax } },
25815 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25816 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25817 .unused,
25818 .unused,
25819 .unused,
25820 .unused,
25821 .unused,
25822 .unused,
25823 },
25824 .dst_temps = .{.mem},
25825 .clobbers = .{ .eflags = true },
25826 .each = .{ .once = &.{
25827 .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
25828 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25829 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25830 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25831 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25832 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25833 } },
25834 }, .{
25835 .required_features = .{ .@"64bit", null, null, null },
25836 .src_constraints = .{ .{ .int = .dword }, .any },
25837 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25838 .patterns = &.{
25839 .{ .src = .{ .mem, .none } },
25840 .{ .src = .{ .to_gpr, .none } },
25841 },
25842 .extra_temps = .{
25843 .{ .type = .u64, .kind = .{ .reg = .rax } },
25844 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25845 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25846 .unused,
25847 .unused,
25848 .unused,
25849 .unused,
25850 .unused,
25851 .unused,
25852 },
25853 .dst_temps = .{.mem},
25854 .clobbers = .{ .eflags = true },
25855 .each = .{ .once = &.{
25856 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25857 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25858 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25859 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25860 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25861 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25862 } },
25863 }, .{
25864 .src_constraints = .{ .{ .signed_int = .dword }, .any },
25865 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
25866 .patterns = &.{
25867 .{ .src = .{ .mem, .none } },
25868 .{ .src = .{ .to_gpr, .none } },
25869 },
25870 .extra_temps = .{
25871 .{ .type = .i32, .kind = .{ .reg = .eax } },
25872 .{ .type = .usize, .kind = .{ .reg = .edi } },
25873 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25874 .unused,
25875 .unused,
25876 .unused,
25877 .unused,
25878 .unused,
25879 .unused,
25880 },
25881 .dst_temps = .{.mem},
25882 .clobbers = .{ .eflags = true },
25883 .each = .{ .once = &.{
25884 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25885 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25886 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25887 .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
25888 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25889 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25890 } },
25891 }, .{
25892 .src_constraints = .{ .{ .int = .dword }, .any },
25893 .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
25894 .patterns = &.{
25895 .{ .src = .{ .mem, .none } },
25896 .{ .src = .{ .to_gpr, .none } },
25897 },
25898 .extra_temps = .{
25899 .{ .type = .u32, .kind = .{ .reg = .eax } },
25900 .{ .type = .usize, .kind = .{ .reg = .edi } },
25901 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25902 .unused,
25903 .unused,
25904 .unused,
25905 .unused,
25906 .unused,
25907 .unused,
25908 },
25909 .dst_temps = .{.mem},
25910 .clobbers = .{ .eflags = true },
25911 .each = .{ .once = &.{
25912 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
25913 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25914 .{ ._, ._sd, .sto, ._, ._, ._, ._ },
25915 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25916 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
25917 .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
25918 } },
25919 }, .{
25920 .required_features = .{ .@"64bit", null, null, null },
25921 .src_constraints = .{ .{ .signed_int = .qword }, .any },
25922 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25923 .patterns = &.{
25924 .{ .src = .{ .mem, .none } },
25925 .{ .src = .{ .to_gpr, .none } },
25926 },
25927 .extra_temps = .{
25928 .{ .type = .i64, .kind = .{ .reg = .rax } },
25929 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25930 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25931 .unused,
25932 .unused,
25933 .unused,
25934 .unused,
25935 .unused,
25936 .unused,
25937 },
25938 .dst_temps = .{.mem},
25939 .clobbers = .{ .eflags = true },
25940 .each = .{ .once = &.{
25941 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
25942 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25943 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25944 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
25945 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25946 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25947 } },
25948 }, .{
25949 .required_features = .{ .@"64bit", null, null, null },
25950 .src_constraints = .{ .{ .int = .qword }, .any },
25951 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
25952 .patterns = &.{
25953 .{ .src = .{ .mem, .none } },
25954 .{ .src = .{ .to_gpr, .none } },
25955 },
25956 .extra_temps = .{
25957 .{ .type = .u64, .kind = .{ .reg = .rax } },
25958 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25959 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25960 .unused,
25961 .unused,
25962 .unused,
25963 .unused,
25964 .unused,
25965 .unused,
25966 },
25967 .dst_temps = .{.mem},
25968 .clobbers = .{ .eflags = true },
25969 .each = .{ .once = &.{
25970 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
25971 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
25972 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
25973 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
25974 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
25975 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
25976 } },
25977 }, .{
25978 .required_features = .{ .@"64bit", null, null, null },
25979 .src_constraints = .{ .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
25980 .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
25981 .patterns = &.{
25982 .{ .src = .{ .to_mem, .none } },
25983 },
25984 .extra_temps = .{
25985 .{ .type = .usize, .kind = .{ .reg = .rsi } },
25986 .{ .type = .usize, .kind = .{ .reg = .rdi } },
25987 .{ .type = .u32, .kind = .{ .reg = .ecx } },
25988 .{ .type = .i64, .kind = .{ .reg = .rax } },
25989 .unused,
25990 .unused,
25991 .unused,
25992 .unused,
25993 .unused,
25994 },
25995 .dst_temps = .{.mem},
25996 .clobbers = .{ .eflags = true },
25997 .each = .{ .once = &.{
25998 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
25999 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
26000 .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
26001 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
26002 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
26003 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
26004 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
26005 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26006 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
26007 } },
26008 }, .{
26009 .required_features = .{ .@"64bit", null, null, null },
26010 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
26011 .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
26012 .patterns = &.{
26013 .{ .src = .{ .to_mem, .none } },
26014 },
26015 .extra_temps = .{
26016 .{ .type = .usize, .kind = .{ .reg = .rsi } },
26017 .{ .type = .usize, .kind = .{ .reg = .rdi } },
26018 .{ .type = .u32, .kind = .{ .reg = .ecx } },
26019 .{ .type = .u64, .kind = .{ .reg = .rax } },
26020 .unused,
26021 .unused,
26022 .unused,
26023 .unused,
26024 .unused,
26025 },
26026 .dst_temps = .{.mem},
26027 .clobbers = .{ .eflags = true },
26028 .each = .{ .once = &.{
26029 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
26030 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
26031 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
26032 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
26033 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
26034 .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
26035 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
26036 } },
26037 }, .{
26038 .required_features = .{ .avx, null, null, null },
26039 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26040 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
26041 .patterns = &.{
26042 .{ .src = .{ .mem, .none } },
26043 .{ .src = .{ .to_sse, .none } },
26044 },
26045 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26046 .each = .{ .once = &.{
26047 .{ ._, .vp_w, .movsxb, .dst0x, .src0q, ._, ._ },
26048 } },
26049 }, .{
26050 .required_features = .{ .avx, null, null, null },
26051 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26052 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
26053 .patterns = &.{
26054 .{ .src = .{ .mem, .none } },
26055 .{ .src = .{ .to_sse, .none } },
26056 },
26057 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26058 .each = .{ .once = &.{
26059 .{ ._, .vp_w, .movzxb, .dst0x, .src0q, ._, ._ },
26060 } },
26061 }, .{
26062 .required_features = .{ .sse4_1, null, null, null },
26063 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26064 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
26065 .patterns = &.{
26066 .{ .src = .{ .mem, .none } },
26067 .{ .src = .{ .to_sse, .none } },
26068 },
26069 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26070 .each = .{ .once = &.{
26071 .{ ._, .p_w, .movsxb, .dst0x, .src0q, ._, ._ },
26072 } },
26073 }, .{
26074 .required_features = .{ .sse4_1, null, null, null },
26075 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26076 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
26077 .patterns = &.{
26078 .{ .src = .{ .mem, .none } },
26079 .{ .src = .{ .to_sse, .none } },
26080 },
26081 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26082 .each = .{ .once = &.{
26083 .{ ._, .p_w, .movzxb, .dst0x, .src0q, ._, ._ },
26084 } },
26085 }, .{
26086 .required_features = .{ .sse2, null, null, null },
26087 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26088 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .word } }},
26089 .patterns = &.{
26090 .{ .src = .{ .to_mut_sse, .none } },
26091 },
26092 .extra_temps = .{
26093 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
26094 .unused,
26095 .unused,
26096 .unused,
26097 .unused,
26098 .unused,
26099 .unused,
26100 .unused,
26101 .unused,
26102 },
26103 .dst_temps = .{.{ .ref = .src0 }},
26104 .each = .{ .once = &.{
26105 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26106 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26107 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26108 } },
26109 }, .{
26110 .required_features = .{ .sse2, null, null, null },
26111 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26112 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .word } }},
26113 .patterns = &.{
26114 .{ .src = .{ .to_mut_sse, .none } },
26115 },
26116 .extra_temps = .{
26117 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
26118 .unused,
26119 .unused,
26120 .unused,
26121 .unused,
26122 .unused,
26123 .unused,
26124 .unused,
26125 .unused,
26126 },
26127 .dst_temps = .{.{ .ref = .src0 }},
26128 .each = .{ .once = &.{
26129 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26130 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26131 } },
26132 }, .{
26133 .required_features = .{ .avx2, null, null, null },
26134 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
26135 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .word } }},
26136 .patterns = &.{
26137 .{ .src = .{ .mem, .none } },
26138 .{ .src = .{ .to_sse, .none } },
26139 },
26140 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26141 .each = .{ .once = &.{
26142 .{ ._, .vp_w, .movsxb, .dst0y, .src0x, ._, ._ },
26143 } },
26144 }, .{
26145 .required_features = .{ .avx2, null, null, null },
26146 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
26147 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .word } }},
26148 .patterns = &.{
26149 .{ .src = .{ .mem, .none } },
26150 .{ .src = .{ .to_sse, .none } },
26151 },
26152 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26153 .each = .{ .once = &.{
26154 .{ ._, .vp_w, .movzxb, .dst0y, .src0x, ._, ._ },
26155 } },
26156 }, .{
26157 .required_features = .{ .avx2, null, null, null },
26158 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
26159 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }},
26160 .patterns = &.{
26161 .{ .src = .{ .mem, .none } },
26162 },
26163 .extra_temps = .{
26164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26165 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
26166 .unused,
26167 .unused,
26168 .unused,
26169 .unused,
26170 .unused,
26171 .unused,
26172 .unused,
26173 },
26174 .dst_temps = .{.mem},
26175 .each = .{ .once = &.{
26176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26177 .{ .@"0:", .vp_w, .movsxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26178 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
26179 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26181 } },
26182 }, .{
26183 .required_features = .{ .avx2, null, null, null },
26184 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
26185 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }},
26186 .patterns = &.{
26187 .{ .src = .{ .mem, .none } },
26188 },
26189 .extra_temps = .{
26190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26191 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
26192 .unused,
26193 .unused,
26194 .unused,
26195 .unused,
26196 .unused,
26197 .unused,
26198 .unused,
26199 },
26200 .dst_temps = .{.mem},
26201 .each = .{ .once = &.{
26202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26203 .{ .@"0:", .vp_w, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26204 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
26205 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
26206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26207 } },
26208 }, .{
26209 .required_features = .{ .avx, null, null, null },
26210 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26211 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
26212 .patterns = &.{
26213 .{ .src = .{ .mem, .none } },
26214 },
26215 .extra_temps = .{
26216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26217 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
26218 .unused,
26219 .unused,
26220 .unused,
26221 .unused,
26222 .unused,
26223 .unused,
26224 .unused,
26225 },
26226 .dst_temps = .{.mem},
26227 .each = .{ .once = &.{
26228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26229 .{ .@"0:", .vp_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26230 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26231 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26232 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26233 } },
26234 }, .{
26235 .required_features = .{ .avx, null, null, null },
26236 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26237 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
26238 .patterns = &.{
26239 .{ .src = .{ .mem, .none } },
26240 },
26241 .extra_temps = .{
26242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26243 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
26244 .unused,
26245 .unused,
26246 .unused,
26247 .unused,
26248 .unused,
26249 .unused,
26250 .unused,
26251 },
26252 .dst_temps = .{.mem},
26253 .each = .{ .once = &.{
26254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26255 .{ .@"0:", .vp_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26256 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26257 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26259 } },
26260 }, .{
26261 .required_features = .{ .sse4_1, null, null, null },
26262 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26263 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }},
26264 .patterns = &.{
26265 .{ .src = .{ .mem, .none } },
26266 },
26267 .extra_temps = .{
26268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26269 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
26270 .unused,
26271 .unused,
26272 .unused,
26273 .unused,
26274 .unused,
26275 .unused,
26276 .unused,
26277 },
26278 .dst_temps = .{.mem},
26279 .each = .{ .once = &.{
26280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26281 .{ .@"0:", .p_w, .movsxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26282 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26283 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26284 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26285 } },
26286 }, .{
26287 .required_features = .{ .sse4_1, null, null, null },
26288 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26289 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }},
26290 .patterns = &.{
26291 .{ .src = .{ .mem, .none } },
26292 },
26293 .extra_temps = .{
26294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26295 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
26296 .unused,
26297 .unused,
26298 .unused,
26299 .unused,
26300 .unused,
26301 .unused,
26302 .unused,
26303 },
26304 .dst_temps = .{.mem},
26305 .each = .{ .once = &.{
26306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26307 .{ .@"0:", .p_w, .movzxb, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26308 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
26309 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26311 } },
26312 }, .{
26313 .required_features = .{ .slow_incdec, null, null, null },
26314 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26315 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
26316 .patterns = &.{
26317 .{ .src = .{ .to_mem, .none } },
26318 },
26319 .extra_temps = .{
26320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26321 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
26322 .unused,
26323 .unused,
26324 .unused,
26325 .unused,
26326 .unused,
26327 .unused,
26328 .unused,
26329 },
26330 .dst_temps = .{.mem},
26331 .each = .{ .once = &.{
26332 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26333 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26334 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26335 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26336 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26337 } },
26338 }, .{
26339 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26340 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }},
26341 .patterns = &.{
26342 .{ .src = .{ .to_mem, .none } },
26343 },
26344 .extra_temps = .{
26345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26346 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
26347 .unused,
26348 .unused,
26349 .unused,
26350 .unused,
26351 .unused,
26352 .unused,
26353 .unused,
26354 },
26355 .dst_temps = .{.mem},
26356 .each = .{ .once = &.{
26357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26359 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26360 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26361 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26362 } },
26363 }, .{
26364 .required_features = .{ .slow_incdec, null, null, null },
26365 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26366 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
26367 .patterns = &.{
26368 .{ .src = .{ .to_mem, .none } },
26369 },
26370 .extra_temps = .{
26371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26372 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
26373 .unused,
26374 .unused,
26375 .unused,
26376 .unused,
26377 .unused,
26378 .unused,
26379 .unused,
26380 },
26381 .dst_temps = .{.mem},
26382 .each = .{ .once = &.{
26383 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26384 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26385 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26386 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26388 } },
26389 }, .{
26390 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26391 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }},
26392 .patterns = &.{
26393 .{ .src = .{ .to_mem, .none } },
26394 },
26395 .extra_temps = .{
26396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26397 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
26398 .unused,
26399 .unused,
26400 .unused,
26401 .unused,
26402 .unused,
26403 .unused,
26404 .unused,
26405 },
26406 .dst_temps = .{.mem},
26407 .each = .{ .once = &.{
26408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26409 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26410 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
26411 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26412 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26413 } },
26414 }, .{
26415 .required_features = .{ .avx, null, null, null },
26416 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26417 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26418 .patterns = &.{
26419 .{ .src = .{ .mem, .none } },
26420 .{ .src = .{ .to_sse, .none } },
26421 },
26422 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26423 .each = .{ .once = &.{
26424 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
26425 } },
26426 }, .{
26427 .required_features = .{ .avx, null, null, null },
26428 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26429 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
26430 .patterns = &.{
26431 .{ .src = .{ .mem, .none } },
26432 .{ .src = .{ .to_sse, .none } },
26433 },
26434 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26435 .each = .{ .once = &.{
26436 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
26437 } },
26438 }, .{
26439 .required_features = .{ .sse4_1, null, null, null },
26440 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26441 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26442 .patterns = &.{
26443 .{ .src = .{ .mem, .none } },
26444 .{ .src = .{ .to_sse, .none } },
26445 },
26446 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26447 .each = .{ .once = &.{
26448 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
26449 } },
26450 }, .{
26451 .required_features = .{ .sse4_1, null, null, null },
26452 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26453 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
26454 .patterns = &.{
26455 .{ .src = .{ .mem, .none } },
26456 .{ .src = .{ .to_sse, .none } },
26457 },
26458 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26459 .each = .{ .once = &.{
26460 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
26461 } },
26462 }, .{
26463 .required_features = .{ .sse2, null, null, null },
26464 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26465 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26466 .patterns = &.{
26467 .{ .src = .{ .to_mut_sse, .none } },
26468 },
26469 .extra_temps = .{
26470 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
26471 .unused,
26472 .unused,
26473 .unused,
26474 .unused,
26475 .unused,
26476 .unused,
26477 .unused,
26478 .unused,
26479 },
26480 .dst_temps = .{.{ .ref = .src0 }},
26481 .each = .{ .once = &.{
26482 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26483 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26484 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26485 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26486 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26487 } },
26488 }, .{
26489 .required_features = .{ .sse2, null, null, null },
26490 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26491 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
26492 .patterns = &.{
26493 .{ .src = .{ .to_mut_sse, .none } },
26494 },
26495 .extra_temps = .{
26496 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
26497 .unused,
26498 .unused,
26499 .unused,
26500 .unused,
26501 .unused,
26502 .unused,
26503 .unused,
26504 .unused,
26505 },
26506 .dst_temps = .{.{ .ref = .src0 }},
26507 .each = .{ .once = &.{
26508 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26509 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26510 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26511 } },
26512 }, .{
26513 .required_features = .{ .avx2, null, null, null },
26514 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26515 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
26516 .patterns = &.{
26517 .{ .src = .{ .mem, .none } },
26518 .{ .src = .{ .to_sse, .none } },
26519 },
26520 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26521 .each = .{ .once = &.{
26522 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
26523 } },
26524 }, .{
26525 .required_features = .{ .avx2, null, null, null },
26526 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26527 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
26528 .patterns = &.{
26529 .{ .src = .{ .mem, .none } },
26530 .{ .src = .{ .to_sse, .none } },
26531 },
26532 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26533 .each = .{ .once = &.{
26534 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
26535 } },
26536 }, .{
26537 .required_features = .{ .avx2, null, null, null },
26538 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any },
26539 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
26540 .patterns = &.{
26541 .{ .src = .{ .mem, .none } },
26542 },
26543 .extra_temps = .{
26544 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26545 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
26546 .unused,
26547 .unused,
26548 .unused,
26549 .unused,
26550 .unused,
26551 .unused,
26552 .unused,
26553 },
26554 .dst_temps = .{.mem},
26555 .each = .{ .once = &.{
26556 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26557 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },
26558 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
26559 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26560 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26561 } },
26562 }, .{
26563 .required_features = .{ .avx2, null, null, null },
26564 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .byte } }, .any },
26565 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
26566 .patterns = &.{
26567 .{ .src = .{ .mem, .none } },
26568 },
26569 .extra_temps = .{
26570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26571 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
26572 .unused,
26573 .unused,
26574 .unused,
26575 .unused,
26576 .unused,
26577 .unused,
26578 .unused,
26579 },
26580 .dst_temps = .{.mem},
26581 .each = .{ .once = &.{
26582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26583 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
26584 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
26585 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
26586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26587 } },
26588 }, .{
26589 .required_features = .{ .avx, null, null, null },
26590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26591 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26592 .patterns = &.{
26593 .{ .src = .{ .mem, .none } },
26594 },
26595 .extra_temps = .{
26596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26597 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
26598 .unused,
26599 .unused,
26600 .unused,
26601 .unused,
26602 .unused,
26603 .unused,
26604 .unused,
26605 },
26606 .dst_temps = .{.mem},
26607 .each = .{ .once = &.{
26608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26609 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26610 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26611 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26613 } },
26614 }, .{
26615 .required_features = .{ .avx, null, null, null },
26616 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26617 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
26618 .patterns = &.{
26619 .{ .src = .{ .mem, .none } },
26620 },
26621 .extra_temps = .{
26622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26623 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
26624 .unused,
26625 .unused,
26626 .unused,
26627 .unused,
26628 .unused,
26629 .unused,
26630 .unused,
26631 },
26632 .dst_temps = .{.mem},
26633 .each = .{ .once = &.{
26634 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26635 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26636 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26637 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26639 } },
26640 }, .{
26641 .required_features = .{ .sse4_1, null, null, null },
26642 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26643 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
26644 .patterns = &.{
26645 .{ .src = .{ .mem, .none } },
26646 },
26647 .extra_temps = .{
26648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26649 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
26650 .unused,
26651 .unused,
26652 .unused,
26653 .unused,
26654 .unused,
26655 .unused,
26656 .unused,
26657 },
26658 .dst_temps = .{.mem},
26659 .each = .{ .once = &.{
26660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26661 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26662 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26663 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26665 } },
26666 }, .{
26667 .required_features = .{ .sse4_1, null, null, null },
26668 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26669 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
26670 .patterns = &.{
26671 .{ .src = .{ .mem, .none } },
26672 },
26673 .extra_temps = .{
26674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26675 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
26676 .unused,
26677 .unused,
26678 .unused,
26679 .unused,
26680 .unused,
26681 .unused,
26682 .unused,
26683 },
26684 .dst_temps = .{.mem},
26685 .each = .{ .once = &.{
26686 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26687 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26688 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
26689 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26690 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26691 } },
26692 }, .{
26693 .required_features = .{ .slow_incdec, null, null, null },
26694 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26695 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
26696 .patterns = &.{
26697 .{ .src = .{ .to_mem, .none } },
26698 },
26699 .extra_temps = .{
26700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26701 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26702 .unused,
26703 .unused,
26704 .unused,
26705 .unused,
26706 .unused,
26707 .unused,
26708 .unused,
26709 },
26710 .dst_temps = .{.mem},
26711 .each = .{ .once = &.{
26712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26713 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26714 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26715 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26716 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26717 } },
26718 }, .{
26719 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
26720 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
26721 .patterns = &.{
26722 .{ .src = .{ .to_mem, .none } },
26723 },
26724 .extra_temps = .{
26725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26726 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
26727 .unused,
26728 .unused,
26729 .unused,
26730 .unused,
26731 .unused,
26732 .unused,
26733 .unused,
26734 },
26735 .dst_temps = .{.mem},
26736 .each = .{ .once = &.{
26737 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26738 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26739 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26740 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26741 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26742 } },
26743 }, .{
26744 .required_features = .{ .slow_incdec, null, null, null },
26745 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26746 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
26747 .patterns = &.{
26748 .{ .src = .{ .to_mem, .none } },
26749 },
26750 .extra_temps = .{
26751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26752 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26753 .unused,
26754 .unused,
26755 .unused,
26756 .unused,
26757 .unused,
26758 .unused,
26759 .unused,
26760 },
26761 .dst_temps = .{.mem},
26762 .each = .{ .once = &.{
26763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26764 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26765 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26766 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
26767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26768 } },
26769 }, .{
26770 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
26771 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
26772 .patterns = &.{
26773 .{ .src = .{ .to_mem, .none } },
26774 },
26775 .extra_temps = .{
26776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
26778 .unused,
26779 .unused,
26780 .unused,
26781 .unused,
26782 .unused,
26783 .unused,
26784 .unused,
26785 },
26786 .dst_temps = .{.mem},
26787 .each = .{ .once = &.{
26788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
26789 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
26790 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
26791 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
26792 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
26793 } },
26794 }, .{
26795 .required_features = .{ .avx, null, null, null },
26796 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26797 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26798 .patterns = &.{
26799 .{ .src = .{ .mem, .none } },
26800 .{ .src = .{ .to_sse, .none } },
26801 },
26802 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26803 .each = .{ .once = &.{
26804 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
26805 } },
26806 }, .{
26807 .required_features = .{ .avx, null, null, null },
26808 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
26809 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26810 .patterns = &.{
26811 .{ .src = .{ .mem, .none } },
26812 .{ .src = .{ .to_sse, .none } },
26813 },
26814 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26815 .each = .{ .once = &.{
26816 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
26817 } },
26818 }, .{
26819 .required_features = .{ .sse4_1, null, null, null },
26820 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26821 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26822 .patterns = &.{
26823 .{ .src = .{ .mem, .none } },
26824 .{ .src = .{ .to_sse, .none } },
26825 },
26826 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26827 .each = .{ .once = &.{
26828 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
26829 } },
26830 }, .{
26831 .required_features = .{ .sse4_1, null, null, null },
26832 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
26833 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26834 .patterns = &.{
26835 .{ .src = .{ .mem, .none } },
26836 .{ .src = .{ .to_sse, .none } },
26837 },
26838 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26839 .each = .{ .once = &.{
26840 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
26841 } },
26842 }, .{
26843 .required_features = .{ .sse2, null, null, null },
26844 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26845 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26846 .patterns = &.{
26847 .{ .src = .{ .to_mut_sse, .none } },
26848 },
26849 .extra_temps = .{
26850 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
26851 .unused,
26852 .unused,
26853 .unused,
26854 .unused,
26855 .unused,
26856 .unused,
26857 .unused,
26858 .unused,
26859 },
26860 .dst_temps = .{.{ .ref = .src0 }},
26861 .each = .{ .once = &.{
26862 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26863 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
26864 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26865 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
26866 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26867 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
26868 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26869 } },
26870 }, .{
26871 .required_features = .{ .sse2, null, null, null },
26872 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
26873 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
26874 .patterns = &.{
26875 .{ .src = .{ .to_mut_sse, .none } },
26876 },
26877 .extra_temps = .{
26878 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
26879 .unused,
26880 .unused,
26881 .unused,
26882 .unused,
26883 .unused,
26884 .unused,
26885 .unused,
26886 .unused,
26887 },
26888 .dst_temps = .{.{ .ref = .src0 }},
26889 .each = .{ .once = &.{
26890 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
26891 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
26892 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
26893 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
26894 } },
26895 }, .{
26896 .required_features = .{ .avx2, null, null, null },
26897 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26898 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26899 .patterns = &.{
26900 .{ .src = .{ .mem, .none } },
26901 .{ .src = .{ .to_sse, .none } },
26902 },
26903 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26904 .each = .{ .once = &.{
26905 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },
26906 } },
26907 }, .{
26908 .required_features = .{ .avx2, null, null, null },
26909 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26910 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
26911 .patterns = &.{
26912 .{ .src = .{ .mem, .none } },
26913 .{ .src = .{ .to_sse, .none } },
26914 },
26915 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
26916 .each = .{ .once = &.{
26917 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },
26918 } },
26919 }, .{
26920 .required_features = .{ .avx2, null, null, null },
26921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any },
26922 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
26923 .patterns = &.{
26924 .{ .src = .{ .mem, .none } },
26925 },
26926 .extra_temps = .{
26927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26928 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
26929 .unused,
26930 .unused,
26931 .unused,
26932 .unused,
26933 .unused,
26934 .unused,
26935 .unused,
26936 },
26937 .dst_temps = .{.mem},
26938 .each = .{ .once = &.{
26939 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26940 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26941 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ },
26942 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26943 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26944 } },
26945 }, .{
26946 .required_features = .{ .avx2, null, null, null },
26947 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
26948 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
26949 .patterns = &.{
26950 .{ .src = .{ .mem, .none } },
26951 },
26952 .extra_temps = .{
26953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26954 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
26955 .unused,
26956 .unused,
26957 .unused,
26958 .unused,
26959 .unused,
26960 .unused,
26961 .unused,
26962 },
26963 .dst_temps = .{.mem},
26964 .each = .{ .once = &.{
26965 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26966 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_size), ._, ._ },
26967 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_size), .tmp1y, ._, ._ },
26968 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
26969 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26970 } },
26971 }, .{
26972 .required_features = .{ .avx, null, null, null },
26973 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
26974 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
26975 .patterns = &.{
26976 .{ .src = .{ .mem, .none } },
26977 },
26978 .extra_temps = .{
26979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26980 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
26981 .unused,
26982 .unused,
26983 .unused,
26984 .unused,
26985 .unused,
26986 .unused,
26987 .unused,
26988 },
26989 .dst_temps = .{.mem},
26990 .each = .{ .once = &.{
26991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
26992 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
26993 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
26994 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
26995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
26996 } },
26997 }, .{
26998 .required_features = .{ .avx, null, null, null },
26999 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
27000 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27001 .patterns = &.{
27002 .{ .src = .{ .mem, .none } },
27003 },
27004 .extra_temps = .{
27005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27006 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27007 .unused,
27008 .unused,
27009 .unused,
27010 .unused,
27011 .unused,
27012 .unused,
27013 .unused,
27014 },
27015 .dst_temps = .{.mem},
27016 .each = .{ .once = &.{
27017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27018 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
27019 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
27020 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27022 } },
27023 }, .{
27024 .required_features = .{ .sse4_1, null, null, null },
27025 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any },
27026 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27027 .patterns = &.{
27028 .{ .src = .{ .mem, .none } },
27029 },
27030 .extra_temps = .{
27031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27032 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
27033 .unused,
27034 .unused,
27035 .unused,
27036 .unused,
27037 .unused,
27038 .unused,
27039 .unused,
27040 },
27041 .dst_temps = .{.mem},
27042 .each = .{ .once = &.{
27043 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27044 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
27045 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
27046 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27047 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27048 } },
27049 }, .{
27050 .required_features = .{ .sse4_1, null, null, null },
27051 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
27052 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27053 .patterns = &.{
27054 .{ .src = .{ .mem, .none } },
27055 },
27056 .extra_temps = .{
27057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27058 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27059 .unused,
27060 .unused,
27061 .unused,
27062 .unused,
27063 .unused,
27064 .unused,
27065 .unused,
27066 },
27067 .dst_temps = .{.mem},
27068 .each = .{ .once = &.{
27069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27070 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_size), ._, ._ },
27071 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_size), .tmp1x, ._, ._ },
27072 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27073 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27074 } },
27075 }, .{
27076 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27077 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27078 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
27079 .patterns = &.{
27080 .{ .src = .{ .to_mem, .none } },
27081 },
27082 .extra_temps = .{
27083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27084 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
27085 .unused,
27086 .unused,
27087 .unused,
27088 .unused,
27089 .unused,
27090 .unused,
27091 .unused,
27092 },
27093 .dst_temps = .{.mem},
27094 .each = .{ .once = &.{
27095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27096 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27097 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27098 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27100 } },
27101 }, .{
27102 .required_features = .{ .@"64bit", null, null, null },
27103 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27104 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
27105 .patterns = &.{
27106 .{ .src = .{ .to_mem, .none } },
27107 },
27108 .extra_temps = .{
27109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27110 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
27111 .unused,
27112 .unused,
27113 .unused,
27114 .unused,
27115 .unused,
27116 .unused,
27117 .unused,
27118 },
27119 .dst_temps = .{.mem},
27120 .each = .{ .once = &.{
27121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27122 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27123 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27124 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27125 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27126 } },
27127 }, .{
27128 .required_features = .{ .slow_incdec, null, null, null },
27129 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27130 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
27131 .patterns = &.{
27132 .{ .src = .{ .to_mem, .none } },
27133 },
27134 .extra_temps = .{
27135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27136 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27137 .unused,
27138 .unused,
27139 .unused,
27140 .unused,
27141 .unused,
27142 .unused,
27143 .unused,
27144 },
27145 .dst_temps = .{.mem},
27146 .each = .{ .once = &.{
27147 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27148 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27149 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27150 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27151 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27152 } },
27153 }, .{
27154 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27155 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
27156 .patterns = &.{
27157 .{ .src = .{ .to_mem, .none } },
27158 },
27159 .extra_temps = .{
27160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27162 .unused,
27163 .unused,
27164 .unused,
27165 .unused,
27166 .unused,
27167 .unused,
27168 .unused,
27169 },
27170 .dst_temps = .{.mem},
27171 .each = .{ .once = &.{
27172 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27173 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27174 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
27175 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27176 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27177 } },
27178 }, .{
27179 .required_features = .{ .avx, null, null, null },
27180 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27181 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27182 .patterns = &.{
27183 .{ .src = .{ .mem, .none } },
27184 .{ .src = .{ .to_sse, .none } },
27185 },
27186 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27187 .each = .{ .once = &.{
27188 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },
27189 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27190 } },
27191 }, .{
27192 .required_features = .{ .avx, null, null, null },
27193 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27194 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27195 .patterns = &.{
27196 .{ .src = .{ .mem, .none } },
27197 .{ .src = .{ .to_sse, .none } },
27198 },
27199 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27200 .each = .{ .once = &.{
27201 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },
27202 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27203 } },
27204 }, .{
27205 .required_features = .{ .sse4_1, null, null, null },
27206 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27207 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27208 .patterns = &.{
27209 .{ .src = .{ .mem, .none } },
27210 .{ .src = .{ .to_sse, .none } },
27211 },
27212 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27213 .each = .{ .once = &.{
27214 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },
27215 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
27216 } },
27217 }, .{
27218 .required_features = .{ .sse4_1, null, null, null },
27219 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27220 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27221 .patterns = &.{
27222 .{ .src = .{ .mem, .none } },
27223 .{ .src = .{ .to_sse, .none } },
27224 },
27225 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27226 .each = .{ .once = &.{
27227 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },
27228 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
27229 } },
27230 }, .{
27231 .required_features = .{ .sse2, null, null, null },
27232 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27233 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
27234 .patterns = &.{
27235 .{ .src = .{ .to_mut_sse, .none } },
27236 },
27237 .extra_temps = .{
27238 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
27239 .unused,
27240 .unused,
27241 .unused,
27242 .unused,
27243 .unused,
27244 .unused,
27245 .unused,
27246 .unused,
27247 },
27248 .dst_temps = .{.{ .ref = .src0 }},
27249 .each = .{ .once = &.{
27250 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27251 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },
27252 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27253 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
27254 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27255 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27256 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27257 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
27258 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
27259 } },
27260 }, .{
27261 .required_features = .{ .sse2, null, null, null },
27262 .src_constraints = .{ .{ .scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27263 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
27264 .patterns = &.{
27265 .{ .src = .{ .to_mut_sse, .none } },
27266 },
27267 .extra_temps = .{
27268 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
27269 .unused,
27270 .unused,
27271 .unused,
27272 .unused,
27273 .unused,
27274 .unused,
27275 .unused,
27276 .unused,
27277 },
27278 .dst_temps = .{.{ .ref = .src0 }},
27279 .each = .{ .once = &.{
27280 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27281 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
27282 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27283 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27284 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
27285 } },
27286 }, .{
27287 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27288 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27289 .dst_constraints = .{.any_scalar_signed_int},
27290 .patterns = &.{
27291 .{ .src = .{ .to_mem, .none } },
27292 },
27293 .extra_temps = .{
27294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27295 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27296 .{ .type = .i64, .kind = .{ .reg = .rax } },
27297 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27298 .unused,
27299 .unused,
27300 .unused,
27301 .unused,
27302 .unused,
27303 },
27304 .dst_temps = .{.mem},
27305 .each = .{ .once = &.{
27306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27307 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27308 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27309 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27310 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
27311 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27312 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27313 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27315 } },
27316 }, .{
27317 .required_features = .{ .@"64bit", null, null, null },
27318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
27319 .dst_constraints = .{.any_scalar_signed_int},
27320 .patterns = &.{
27321 .{ .src = .{ .to_mem, .none } },
27322 },
27323 .extra_temps = .{
27324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27325 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27326 .{ .type = .i64, .kind = .{ .reg = .rax } },
27327 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27328 .unused,
27329 .unused,
27330 .unused,
27331 .unused,
27332 .unused,
27333 },
27334 .dst_temps = .{.mem},
27335 .each = .{ .once = &.{
27336 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27337 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27338 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27339 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27340 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
27341 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27342 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27343 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27344 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27345 } },
27346 }, .{
27347 .required_features = .{ .@"64bit", .slow_incdec, null, null },
27348 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27349 .dst_constraints = .{.any_scalar_int},
27350 .patterns = &.{
27351 .{ .src = .{ .to_mem, .none } },
27352 },
27353 .extra_temps = .{
27354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27355 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27356 .{ .type = .u64, .kind = .{ .reg = .rax } },
27357 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27358 .unused,
27359 .unused,
27360 .unused,
27361 .unused,
27362 .unused,
27363 },
27364 .dst_temps = .{.mem},
27365 .each = .{ .once = &.{
27366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27367 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27368 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27369 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27370 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
27371 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27372 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27373 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
27374 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27375 } },
27376 }, .{
27377 .required_features = .{ .@"64bit", null, null, null },
27378 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
27379 .dst_constraints = .{.any_scalar_int},
27380 .patterns = &.{
27381 .{ .src = .{ .to_mem, .none } },
27382 },
27383 .extra_temps = .{
27384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27385 .{ .type = .usize, .kind = .{ .reg = .rdi } },
27386 .{ .type = .u64, .kind = .{ .reg = .rax } },
27387 .{ .type = .u32, .kind = .{ .reg = .ecx } },
27388 .unused,
27389 .unused,
27390 .unused,
27391 .unused,
27392 .unused,
27393 },
27394 .dst_temps = .{.mem},
27395 .each = .{ .once = &.{
27396 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27397 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
27398 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
27399 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
27400 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
27401 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
27402 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27403 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
27404 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27405 } },
27406 }, .{
27407 .required_features = .{ .avx, null, null, null },
27408 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27409 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27410 .patterns = &.{
27411 .{ .src = .{ .mem, .none } },
27412 .{ .src = .{ .to_sse, .none } },
27413 },
27414 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27415 .each = .{ .once = &.{
27416 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
27417 } },
27418 }, .{
27419 .required_features = .{ .avx, null, null, null },
27420 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27421 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
27422 .patterns = &.{
27423 .{ .src = .{ .mem, .none } },
27424 .{ .src = .{ .to_sse, .none } },
27425 },
27426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27427 .each = .{ .once = &.{
27428 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
27429 } },
27430 }, .{
27431 .required_features = .{ .sse4_1, null, null, null },
27432 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27433 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27434 .patterns = &.{
27435 .{ .src = .{ .mem, .none } },
27436 .{ .src = .{ .to_sse, .none } },
27437 },
27438 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27439 .each = .{ .once = &.{
27440 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
27441 } },
27442 }, .{
27443 .required_features = .{ .sse4_1, null, null, null },
27444 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27445 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
27446 .patterns = &.{
27447 .{ .src = .{ .mem, .none } },
27448 .{ .src = .{ .to_sse, .none } },
27449 },
27450 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27451 .each = .{ .once = &.{
27452 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
27453 } },
27454 }, .{
27455 .required_features = .{ .sse2, null, null, null },
27456 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27457 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27458 .patterns = &.{
27459 .{ .src = .{ .to_mut_sse, .none } },
27460 },
27461 .extra_temps = .{
27462 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
27463 .unused,
27464 .unused,
27465 .unused,
27466 .unused,
27467 .unused,
27468 .unused,
27469 .unused,
27470 .unused,
27471 },
27472 .dst_temps = .{.{ .ref = .src0 }},
27473 .each = .{ .once = &.{
27474 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27475 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27476 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27477 } },
27478 }, .{
27479 .required_features = .{ .sse2, null, null, null },
27480 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27481 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .dword } }},
27482 .patterns = &.{
27483 .{ .src = .{ .to_mut_sse, .none } },
27484 },
27485 .extra_temps = .{
27486 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
27487 .unused,
27488 .unused,
27489 .unused,
27490 .unused,
27491 .unused,
27492 .unused,
27493 .unused,
27494 .unused,
27495 },
27496 .dst_temps = .{.{ .ref = .src0 }},
27497 .each = .{ .once = &.{
27498 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27499 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27500 } },
27501 }, .{
27502 .required_features = .{ .avx2, null, null, null },
27503 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
27504 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }},
27505 .patterns = &.{
27506 .{ .src = .{ .mem, .none } },
27507 .{ .src = .{ .to_sse, .none } },
27508 },
27509 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27510 .each = .{ .once = &.{
27511 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
27512 } },
27513 }, .{
27514 .required_features = .{ .avx2, null, null, null },
27515 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any },
27516 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .dword } }},
27517 .patterns = &.{
27518 .{ .src = .{ .mem, .none } },
27519 .{ .src = .{ .to_sse, .none } },
27520 },
27521 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27522 .each = .{ .once = &.{
27523 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },
27524 } },
27525 }, .{
27526 .required_features = .{ .avx2, null, null, null },
27527 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
27528 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }},
27529 .patterns = &.{
27530 .{ .src = .{ .mem, .none } },
27531 },
27532 .extra_temps = .{
27533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27534 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
27535 .unused,
27536 .unused,
27537 .unused,
27538 .unused,
27539 .unused,
27540 .unused,
27541 .unused,
27542 },
27543 .dst_temps = .{.mem},
27544 .each = .{ .once = &.{
27545 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27546 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
27547 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
27548 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27549 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27550 } },
27551 }, .{
27552 .required_features = .{ .avx2, null, null, null },
27553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any },
27554 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }},
27555 .patterns = &.{
27556 .{ .src = .{ .mem, .none } },
27557 },
27558 .extra_temps = .{
27559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27560 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
27561 .unused,
27562 .unused,
27563 .unused,
27564 .unused,
27565 .unused,
27566 .unused,
27567 .unused,
27568 },
27569 .dst_temps = .{.mem},
27570 .each = .{ .once = &.{
27571 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27572 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
27573 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
27574 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27576 } },
27577 }, .{
27578 .required_features = .{ .avx, null, null, null },
27579 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27580 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27581 .patterns = &.{
27582 .{ .src = .{ .mem, .none } },
27583 },
27584 .extra_temps = .{
27585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27586 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
27587 .unused,
27588 .unused,
27589 .unused,
27590 .unused,
27591 .unused,
27592 .unused,
27593 .unused,
27594 },
27595 .dst_temps = .{.mem},
27596 .each = .{ .once = &.{
27597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27598 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27599 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27600 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27602 } },
27603 }, .{
27604 .required_features = .{ .avx, null, null, null },
27605 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27606 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
27607 .patterns = &.{
27608 .{ .src = .{ .mem, .none } },
27609 },
27610 .extra_temps = .{
27611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27612 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
27613 .unused,
27614 .unused,
27615 .unused,
27616 .unused,
27617 .unused,
27618 .unused,
27619 .unused,
27620 },
27621 .dst_temps = .{.mem},
27622 .each = .{ .once = &.{
27623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27624 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27625 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27626 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27627 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27628 } },
27629 }, .{
27630 .required_features = .{ .sse4_1, null, null, null },
27631 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27632 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }},
27633 .patterns = &.{
27634 .{ .src = .{ .mem, .none } },
27635 },
27636 .extra_temps = .{
27637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27638 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
27639 .unused,
27640 .unused,
27641 .unused,
27642 .unused,
27643 .unused,
27644 .unused,
27645 .unused,
27646 },
27647 .dst_temps = .{.mem},
27648 .each = .{ .once = &.{
27649 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27650 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27651 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27652 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27654 } },
27655 }, .{
27656 .required_features = .{ .sse4_1, null, null, null },
27657 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27658 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }},
27659 .patterns = &.{
27660 .{ .src = .{ .mem, .none } },
27661 },
27662 .extra_temps = .{
27663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27664 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
27665 .unused,
27666 .unused,
27667 .unused,
27668 .unused,
27669 .unused,
27670 .unused,
27671 .unused,
27672 },
27673 .dst_temps = .{.mem},
27674 .each = .{ .once = &.{
27675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27676 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27677 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
27678 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27680 } },
27681 }, .{
27682 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
27683 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }},
27684 .patterns = &.{
27685 .{ .src = .{ .to_mem, .none } },
27686 },
27687 .extra_temps = .{
27688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27689 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
27690 .unused,
27691 .unused,
27692 .unused,
27693 .unused,
27694 .unused,
27695 .unused,
27696 .unused,
27697 },
27698 .dst_temps = .{.mem},
27699 .each = .{ .once = &.{
27700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27701 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27702 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
27703 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27705 } },
27706 }, .{
27707 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
27708 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }},
27709 .patterns = &.{
27710 .{ .src = .{ .to_mem, .none } },
27711 },
27712 .extra_temps = .{
27713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27714 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27715 .unused,
27716 .unused,
27717 .unused,
27718 .unused,
27719 .unused,
27720 .unused,
27721 .unused,
27722 },
27723 .dst_temps = .{.mem},
27724 .each = .{ .once = &.{
27725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27726 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27727 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
27728 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27730 } },
27731 }, .{
27732 .required_features = .{ .avx, null, null, null },
27733 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27734 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27735 .patterns = &.{
27736 .{ .src = .{ .mem, .none } },
27737 .{ .src = .{ .to_sse, .none } },
27738 },
27739 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27740 .each = .{ .once = &.{
27741 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
27742 } },
27743 }, .{
27744 .required_features = .{ .avx, null, null, null },
27745 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27746 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27747 .patterns = &.{
27748 .{ .src = .{ .mem, .none } },
27749 .{ .src = .{ .to_sse, .none } },
27750 },
27751 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27752 .each = .{ .once = &.{
27753 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
27754 } },
27755 }, .{
27756 .required_features = .{ .sse4_1, null, null, null },
27757 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27758 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27759 .patterns = &.{
27760 .{ .src = .{ .mem, .none } },
27761 .{ .src = .{ .to_sse, .none } },
27762 },
27763 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27764 .each = .{ .once = &.{
27765 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
27766 } },
27767 }, .{
27768 .required_features = .{ .sse4_1, null, null, null },
27769 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27770 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27771 .patterns = &.{
27772 .{ .src = .{ .mem, .none } },
27773 .{ .src = .{ .to_sse, .none } },
27774 },
27775 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27776 .each = .{ .once = &.{
27777 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
27778 } },
27779 }, .{
27780 .required_features = .{ .sse2, null, null, null },
27781 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27782 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27783 .patterns = &.{
27784 .{ .src = .{ .to_mut_sse, .none } },
27785 },
27786 .extra_temps = .{
27787 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
27788 .unused,
27789 .unused,
27790 .unused,
27791 .unused,
27792 .unused,
27793 .unused,
27794 .unused,
27795 .unused,
27796 },
27797 .dst_temps = .{.{ .ref = .src0 }},
27798 .each = .{ .once = &.{
27799 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27800 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
27801 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27802 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
27803 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27804 } },
27805 }, .{
27806 .required_features = .{ .sse2, null, null, null },
27807 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any },
27808 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
27809 .patterns = &.{
27810 .{ .src = .{ .to_mut_sse, .none } },
27811 },
27812 .extra_temps = .{
27813 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
27814 .unused,
27815 .unused,
27816 .unused,
27817 .unused,
27818 .unused,
27819 .unused,
27820 .unused,
27821 .unused,
27822 },
27823 .dst_temps = .{.{ .ref = .src0 }},
27824 .each = .{ .once = &.{
27825 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
27826 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
27827 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
27828 } },
27829 }, .{
27830 .required_features = .{ .avx2, null, null, null },
27831 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27832 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27833 .patterns = &.{
27834 .{ .src = .{ .mem, .none } },
27835 .{ .src = .{ .to_sse, .none } },
27836 },
27837 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27838 .each = .{ .once = &.{
27839 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
27840 } },
27841 }, .{
27842 .required_features = .{ .avx2, null, null, null },
27843 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any },
27844 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
27845 .patterns = &.{
27846 .{ .src = .{ .mem, .none } },
27847 .{ .src = .{ .to_sse, .none } },
27848 },
27849 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
27850 .each = .{ .once = &.{
27851 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
27852 } },
27853 }, .{
27854 .required_features = .{ .avx2, null, null, null },
27855 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
27856 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
27857 .patterns = &.{
27858 .{ .src = .{ .mem, .none } },
27859 },
27860 .extra_temps = .{
27861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27862 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
27863 .unused,
27864 .unused,
27865 .unused,
27866 .unused,
27867 .unused,
27868 .unused,
27869 .unused,
27870 },
27871 .dst_temps = .{.mem},
27872 .each = .{ .once = &.{
27873 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27874 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27875 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
27876 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27877 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27878 } },
27879 }, .{
27880 .required_features = .{ .avx2, null, null, null },
27881 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any },
27882 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
27883 .patterns = &.{
27884 .{ .src = .{ .mem, .none } },
27885 },
27886 .extra_temps = .{
27887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27888 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
27889 .unused,
27890 .unused,
27891 .unused,
27892 .unused,
27893 .unused,
27894 .unused,
27895 .unused,
27896 },
27897 .dst_temps = .{.mem},
27898 .each = .{ .once = &.{
27899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27900 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_size), ._, ._ },
27901 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_size), .tmp1y, ._, ._ },
27902 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27904 } },
27905 }, .{
27906 .required_features = .{ .avx, null, null, null },
27907 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27908 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27909 .patterns = &.{
27910 .{ .src = .{ .mem, .none } },
27911 },
27912 .extra_temps = .{
27913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27914 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
27915 .unused,
27916 .unused,
27917 .unused,
27918 .unused,
27919 .unused,
27920 .unused,
27921 .unused,
27922 },
27923 .dst_temps = .{.mem},
27924 .each = .{ .once = &.{
27925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27926 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
27927 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
27928 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27930 } },
27931 }, .{
27932 .required_features = .{ .avx, null, null, null },
27933 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
27934 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27935 .patterns = &.{
27936 .{ .src = .{ .mem, .none } },
27937 },
27938 .extra_temps = .{
27939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27940 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27941 .unused,
27942 .unused,
27943 .unused,
27944 .unused,
27945 .unused,
27946 .unused,
27947 .unused,
27948 },
27949 .dst_temps = .{.mem},
27950 .each = .{ .once = &.{
27951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27952 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
27953 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
27954 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27956 } },
27957 }, .{
27958 .required_features = .{ .sse4_1, null, null, null },
27959 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
27960 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
27961 .patterns = &.{
27962 .{ .src = .{ .mem, .none } },
27963 },
27964 .extra_temps = .{
27965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27966 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
27967 .unused,
27968 .unused,
27969 .unused,
27970 .unused,
27971 .unused,
27972 .unused,
27973 .unused,
27974 },
27975 .dst_temps = .{.mem},
27976 .each = .{ .once = &.{
27977 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
27978 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
27979 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
27980 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
27981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27982 } },
27983 }, .{
27984 .required_features = .{ .sse4_1, null, null, null },
27985 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
27986 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
27987 .patterns = &.{
27988 .{ .src = .{ .mem, .none } },
27989 },
27990 .extra_temps = .{
27991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27992 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
27993 .unused,
27994 .unused,
27995 .unused,
27996 .unused,
27997 .unused,
27998 .unused,
27999 .unused,
28000 },
28001 .dst_temps = .{.mem},
28002 .each = .{ .once = &.{
28003 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28004 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_size), ._, ._ },
28005 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_size), .tmp1x, ._, ._ },
28006 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28008 } },
28009 }, .{
28010 .required_features = .{ .@"64bit", null, null, null },
28011 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28012 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
28013 .patterns = &.{
28014 .{ .src = .{ .to_mem, .none } },
28015 },
28016 .extra_temps = .{
28017 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28018 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
28019 .unused,
28020 .unused,
28021 .unused,
28022 .unused,
28023 .unused,
28024 .unused,
28025 .unused,
28026 },
28027 .dst_temps = .{.mem},
28028 .each = .{ .once = &.{
28029 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28030 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28031 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28032 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28034 } },
28035 }, .{
28036 .required_features = .{ .@"64bit", null, null, null },
28037 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
28038 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
28039 .patterns = &.{
28040 .{ .src = .{ .to_mem, .none } },
28041 },
28042 .extra_temps = .{
28043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28044 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28045 .unused,
28046 .unused,
28047 .unused,
28048 .unused,
28049 .unused,
28050 .unused,
28051 .unused,
28052 },
28053 .dst_temps = .{.mem},
28054 .each = .{ .once = &.{
28055 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28056 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28057 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28058 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28059 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28060 } },
28061 }, .{
28062 .required_features = .{ .avx, null, null, null },
28063 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28064 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28065 .patterns = &.{
28066 .{ .src = .{ .mem, .none } },
28067 .{ .src = .{ .to_sse, .none } },
28068 },
28069 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28070 .each = .{ .once = &.{
28071 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
28072 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28073 } },
28074 }, .{
28075 .required_features = .{ .avx, null, null, null },
28076 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28077 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28078 .patterns = &.{
28079 .{ .src = .{ .mem, .none } },
28080 .{ .src = .{ .to_sse, .none } },
28081 },
28082 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28083 .each = .{ .once = &.{
28084 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
28085 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28086 } },
28087 }, .{
28088 .required_features = .{ .sse4_1, null, null, null },
28089 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28090 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28091 .patterns = &.{
28092 .{ .src = .{ .mem, .none } },
28093 .{ .src = .{ .to_sse, .none } },
28094 },
28095 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28096 .each = .{ .once = &.{
28097 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
28098 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28099 } },
28100 }, .{
28101 .required_features = .{ .sse4_1, null, null, null },
28102 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28103 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28104 .patterns = &.{
28105 .{ .src = .{ .mem, .none } },
28106 .{ .src = .{ .to_sse, .none } },
28107 },
28108 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28109 .each = .{ .once = &.{
28110 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
28111 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28112 } },
28113 }, .{
28114 .required_features = .{ .sse2, null, null, null },
28115 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28116 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28117 .patterns = &.{
28118 .{ .src = .{ .to_mut_sse, .none } },
28119 },
28120 .extra_temps = .{
28121 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
28122 .unused,
28123 .unused,
28124 .unused,
28125 .unused,
28126 .unused,
28127 .unused,
28128 .unused,
28129 .unused,
28130 },
28131 .dst_temps = .{.{ .ref = .src0 }},
28132 .each = .{ .once = &.{
28133 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28134 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
28135 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
28136 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
28137 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28138 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28139 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28140 } },
28141 }, .{
28142 .required_features = .{ .sse2, null, null, null },
28143 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any },
28144 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28145 .patterns = &.{
28146 .{ .src = .{ .to_mut_sse, .none } },
28147 },
28148 .extra_temps = .{
28149 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
28150 .unused,
28151 .unused,
28152 .unused,
28153 .unused,
28154 .unused,
28155 .unused,
28156 .unused,
28157 .unused,
28158 },
28159 .dst_temps = .{.{ .ref = .src0 }},
28160 .each = .{ .once = &.{
28161 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28162 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
28163 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28164 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28165 } },
28166 }, .{
28167 .required_features = .{ .@"64bit", null, null, null },
28168 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
28169 .dst_constraints = .{.any_scalar_signed_int},
28170 .patterns = &.{
28171 .{ .src = .{ .to_mem, .none } },
28172 },
28173 .extra_temps = .{
28174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28175 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28176 .{ .type = .i64, .kind = .{ .reg = .rax } },
28177 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28178 .unused,
28179 .unused,
28180 .unused,
28181 .unused,
28182 .unused,
28183 },
28184 .dst_temps = .{.mem},
28185 .each = .{ .once = &.{
28186 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28187 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28188 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28189 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28190 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
28191 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28192 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28193 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28195 } },
28196 }, .{
28197 .required_features = .{ .@"64bit", null, null, null },
28198 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
28199 .dst_constraints = .{.any_scalar_int},
28200 .patterns = &.{
28201 .{ .src = .{ .to_mem, .none } },
28202 },
28203 .extra_temps = .{
28204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28205 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28206 .{ .type = .u64, .kind = .{ .reg = .rax } },
28207 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28208 .unused,
28209 .unused,
28210 .unused,
28211 .unused,
28212 .unused,
28213 },
28214 .dst_temps = .{.mem},
28215 .each = .{ .once = &.{
28216 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28217 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28218 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
28219 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28220 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
28221 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28222 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28223 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
28224 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28225 } },
28226 }, .{
28227 .required_features = .{ .avx, null, null, null },
28228 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28229 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
28230 .patterns = &.{
28231 .{ .src = .{ .mem, .none } },
28232 .{ .src = .{ .to_sse, .none } },
28233 },
28234 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28235 .each = .{ .once = &.{
28236 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
28237 } },
28238 }, .{
28239 .required_features = .{ .avx, null, null, null },
28240 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28241 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
28242 .patterns = &.{
28243 .{ .src = .{ .mem, .none } },
28244 .{ .src = .{ .to_sse, .none } },
28245 },
28246 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28247 .each = .{ .once = &.{
28248 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
28249 } },
28250 }, .{
28251 .required_features = .{ .sse4_1, null, null, null },
28252 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28253 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
28254 .patterns = &.{
28255 .{ .src = .{ .mem, .none } },
28256 .{ .src = .{ .to_sse, .none } },
28257 },
28258 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28259 .each = .{ .once = &.{
28260 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
28261 } },
28262 }, .{
28263 .required_features = .{ .sse4_1, null, null, null },
28264 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28265 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
28266 .patterns = &.{
28267 .{ .src = .{ .mem, .none } },
28268 .{ .src = .{ .to_sse, .none } },
28269 },
28270 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28271 .each = .{ .once = &.{
28272 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
28273 } },
28274 }, .{
28275 .required_features = .{ .sse2, null, null, null },
28276 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28277 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }},
28278 .patterns = &.{
28279 .{ .src = .{ .to_mut_sse, .none } },
28280 },
28281 .extra_temps = .{
28282 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
28283 .unused,
28284 .unused,
28285 .unused,
28286 .unused,
28287 .unused,
28288 .unused,
28289 .unused,
28290 .unused,
28291 },
28292 .dst_temps = .{.{ .ref = .src0 }},
28293 .each = .{ .once = &.{
28294 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28295 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28296 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28297 } },
28298 }, .{
28299 .required_features = .{ .sse2, null, null, null },
28300 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28301 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .qword } }},
28302 .patterns = &.{
28303 .{ .src = .{ .to_mut_sse, .none } },
28304 },
28305 .extra_temps = .{
28306 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
28307 .unused,
28308 .unused,
28309 .unused,
28310 .unused,
28311 .unused,
28312 .unused,
28313 .unused,
28314 .unused,
28315 },
28316 .dst_temps = .{.{ .ref = .src0 }},
28317 .each = .{ .once = &.{
28318 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28319 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28320 } },
28321 }, .{
28322 .required_features = .{ .avx2, null, null, null },
28323 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
28324 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }},
28325 .patterns = &.{
28326 .{ .src = .{ .mem, .none } },
28327 .{ .src = .{ .to_sse, .none } },
28328 },
28329 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28330 .each = .{ .once = &.{
28331 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
28332 } },
28333 }, .{
28334 .required_features = .{ .avx2, null, null, null },
28335 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
28336 .dst_constraints = .{.{ .scalar_int = .{ .of = .yword, .is = .qword } }},
28337 .patterns = &.{
28338 .{ .src = .{ .mem, .none } },
28339 .{ .src = .{ .to_sse, .none } },
28340 },
28341 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28342 .each = .{ .once = &.{
28343 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
28344 } },
28345 }, .{
28346 .required_features = .{ .avx2, null, null, null },
28347 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
28348 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }},
28349 .patterns = &.{
28350 .{ .src = .{ .mem, .none } },
28351 },
28352 .extra_temps = .{
28353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28354 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
28355 .unused,
28356 .unused,
28357 .unused,
28358 .unused,
28359 .unused,
28360 .unused,
28361 .unused,
28362 },
28363 .dst_temps = .{.mem},
28364 .each = .{ .once = &.{
28365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28366 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
28367 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
28368 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28370 } },
28371 }, .{
28372 .required_features = .{ .avx2, null, null, null },
28373 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
28374 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }},
28375 .patterns = &.{
28376 .{ .src = .{ .mem, .none } },
28377 },
28378 .extra_temps = .{
28379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28380 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
28381 .unused,
28382 .unused,
28383 .unused,
28384 .unused,
28385 .unused,
28386 .unused,
28387 .unused,
28388 },
28389 .dst_temps = .{.mem},
28390 .each = .{ .once = &.{
28391 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28392 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_size), ._, ._ },
28393 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_size), .tmp1y, ._, ._ },
28394 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
28395 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28396 } },
28397 }, .{
28398 .required_features = .{ .avx, null, null, null },
28399 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28400 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
28401 .patterns = &.{
28402 .{ .src = .{ .mem, .none } },
28403 },
28404 .extra_temps = .{
28405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28406 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28407 .unused,
28408 .unused,
28409 .unused,
28410 .unused,
28411 .unused,
28412 .unused,
28413 .unused,
28414 },
28415 .dst_temps = .{.mem},
28416 .each = .{ .once = &.{
28417 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28418 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28419 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28420 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28421 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28422 } },
28423 }, .{
28424 .required_features = .{ .avx, null, null, null },
28425 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any },
28426 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
28427 .patterns = &.{
28428 .{ .src = .{ .mem, .none } },
28429 },
28430 .extra_temps = .{
28431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28432 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28433 .unused,
28434 .unused,
28435 .unused,
28436 .unused,
28437 .unused,
28438 .unused,
28439 .unused,
28440 },
28441 .dst_temps = .{.mem},
28442 .each = .{ .once = &.{
28443 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28444 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28445 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28446 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28448 } },
28449 }, .{
28450 .required_features = .{ .sse4_1, null, null, null },
28451 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
28452 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }},
28453 .patterns = &.{
28454 .{ .src = .{ .mem, .none } },
28455 },
28456 .extra_temps = .{
28457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28458 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
28459 .unused,
28460 .unused,
28461 .unused,
28462 .unused,
28463 .unused,
28464 .unused,
28465 .unused,
28466 },
28467 .dst_temps = .{.mem},
28468 .each = .{ .once = &.{
28469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28470 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28471 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28472 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28473 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28474 } },
28475 }, .{
28476 .required_features = .{ .sse4_1, null, null, null },
28477 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any },
28478 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }},
28479 .patterns = &.{
28480 .{ .src = .{ .mem, .none } },
28481 },
28482 .extra_temps = .{
28483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28484 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
28485 .unused,
28486 .unused,
28487 .unused,
28488 .unused,
28489 .unused,
28490 .unused,
28491 .unused,
28492 },
28493 .dst_temps = .{.mem},
28494 .each = .{ .once = &.{
28495 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
28496 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
28497 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_size), .tmp1x, ._, ._ },
28498 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
28499 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28500 } },
28501 }, .{
28502 .required_features = .{ .@"64bit", null, null, null },
28503 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28504 .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }},
28505 .patterns = &.{
28506 .{ .src = .{ .to_mem, .none } },
28507 },
28508 .extra_temps = .{
28509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28510 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
28511 .unused,
28512 .unused,
28513 .unused,
28514 .unused,
28515 .unused,
28516 .unused,
28517 .unused,
28518 },
28519 .dst_temps = .{.mem},
28520 .each = .{ .once = &.{
28521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28522 .{ .@"0:", ._, .movsxd, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28523 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28524 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28526 } },
28527 }, .{
28528 .required_features = .{ .@"64bit", null, null, null },
28529 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28530 .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }},
28531 .patterns = &.{
28532 .{ .src = .{ .to_mem, .none } },
28533 },
28534 .extra_temps = .{
28535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28536 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28537 .unused,
28538 .unused,
28539 .unused,
28540 .unused,
28541 .unused,
28542 .unused,
28543 .unused,
28544 },
28545 .dst_temps = .{.mem},
28546 .each = .{ .once = &.{
28547 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28548 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28549 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
28550 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28552 } },
28553 }, .{
28554 .required_features = .{ .avx, null, null, null },
28555 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28556 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28557 .patterns = &.{
28558 .{ .src = .{ .mem, .none } },
28559 .{ .src = .{ .to_sse, .none } },
28560 },
28561 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28562 .each = .{ .once = &.{
28563 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
28564 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28565 } },
28566 }, .{
28567 .required_features = .{ .avx, null, null, null },
28568 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28569 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28570 .patterns = &.{
28571 .{ .src = .{ .mem, .none } },
28572 .{ .src = .{ .to_sse, .none } },
28573 },
28574 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28575 .each = .{ .once = &.{
28576 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
28577 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28578 } },
28579 }, .{
28580 .required_features = .{ .sse4_1, null, null, null },
28581 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28582 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28583 .patterns = &.{
28584 .{ .src = .{ .mem, .none } },
28585 .{ .src = .{ .to_sse, .none } },
28586 },
28587 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28588 .each = .{ .once = &.{
28589 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
28590 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
28591 } },
28592 }, .{
28593 .required_features = .{ .sse4_1, null, null, null },
28594 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28595 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28596 .patterns = &.{
28597 .{ .src = .{ .mem, .none } },
28598 .{ .src = .{ .to_sse, .none } },
28599 },
28600 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
28601 .each = .{ .once = &.{
28602 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
28603 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
28604 } },
28605 }, .{
28606 .required_features = .{ .sse2, null, null, null },
28607 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28608 .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }},
28609 .patterns = &.{
28610 .{ .src = .{ .to_mut_sse, .none } },
28611 },
28612 .extra_temps = .{
28613 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
28614 .unused,
28615 .unused,
28616 .unused,
28617 .unused,
28618 .unused,
28619 .unused,
28620 .unused,
28621 .unused,
28622 },
28623 .dst_temps = .{.{ .ref = .src0 }},
28624 .each = .{ .once = &.{
28625 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28626 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
28627 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28628 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
28629 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28630 } },
28631 }, .{
28632 .required_features = .{ .sse2, null, null, null },
28633 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28634 .dst_constraints = .{.{ .scalar_int = .{ .of = .xword, .is = .xword } }},
28635 .patterns = &.{
28636 .{ .src = .{ .to_mut_sse, .none } },
28637 },
28638 .extra_temps = .{
28639 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
28640 .unused,
28641 .unused,
28642 .unused,
28643 .unused,
28644 .unused,
28645 .unused,
28646 .unused,
28647 .unused,
28648 },
28649 .dst_temps = .{.{ .ref = .src0 }},
28650 .each = .{ .once = &.{
28651 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
28652 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
28653 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
28654 } },
28655 }, .{
28656 .required_features = .{ .@"64bit", null, null, null },
28657 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
28658 .dst_constraints = .{.any_scalar_signed_int},
28659 .patterns = &.{
28660 .{ .src = .{ .to_mem, .none } },
28661 },
28662 .extra_temps = .{
28663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28665 .{ .type = .i64, .kind = .{ .reg = .rax } },
28666 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28667 .unused,
28668 .unused,
28669 .unused,
28670 .unused,
28671 .unused,
28672 },
28673 .dst_temps = .{.mem},
28674 .each = .{ .once = &.{
28675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28676 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28677 .{ .@"0:", ._, .movsxd, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28678 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28679 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
28680 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28681 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28682 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28684 } },
28685 }, .{
28686 .required_features = .{ .@"64bit", null, null, null },
28687 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },
28688 .dst_constraints = .{.any_scalar_int},
28689 .patterns = &.{
28690 .{ .src = .{ .to_mem, .none } },
28691 },
28692 .extra_temps = .{
28693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28694 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28695 .{ .type = .u64, .kind = .{ .reg = .rax } },
28696 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28697 .unused,
28698 .unused,
28699 .unused,
28700 .unused,
28701 .unused,
28702 },
28703 .dst_temps = .{.mem},
28704 .each = .{ .once = &.{
28705 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
28706 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
28707 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
28708 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28709 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
28710 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
28711 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28712 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
28713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
28714 } },
28715 }, .{
28716 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28717 .src_constraints = .{ .any_scalar_signed_int, .any },
28718 .dst_constraints = .{.any_scalar_signed_int},
28719 .patterns = &.{
28720 .{ .src = .{ .to_mem, .none } },
28721 },
28722 .extra_temps = .{
28723 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28724 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28725 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28726 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28727 .{ .type = .i64, .kind = .{ .reg = .rax } },
28728 .unused,
28729 .unused,
28730 .unused,
28731 .unused,
28732 },
28733 .dst_temps = .{.mem},
28734 .clobbers = .{ .eflags = true },
28735 .each = .{ .once = &.{
28736 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28737 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28738 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28739 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28740 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28741 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
28742 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28743 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
28744 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28745 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28746 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28747 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
28748 } },
28749 }, .{
28750 .required_features = .{ .@"64bit", null, null, null },
28751 .src_constraints = .{ .any_scalar_signed_int, .any },
28752 .dst_constraints = .{.any_scalar_signed_int},
28753 .patterns = &.{
28754 .{ .src = .{ .to_mem, .none } },
28755 },
28756 .extra_temps = .{
28757 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28758 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28759 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28760 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28761 .{ .type = .i64, .kind = .{ .reg = .rax } },
28762 .unused,
28763 .unused,
28764 .unused,
28765 .unused,
28766 },
28767 .dst_temps = .{.mem},
28768 .clobbers = .{ .eflags = true },
28769 .each = .{ .once = &.{
28770 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28771 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28772 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28773 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
28774 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28775 .{ ._, ._sq, .lod, ._, ._, ._, ._ },
28776 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
28777 .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ },
28778 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28779 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28780 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28781 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28782 } },
28783 }, .{
28784 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28785 .src_constraints = .{ .any_scalar_int, .any },
28786 .dst_constraints = .{.any_scalar_int},
28787 .patterns = &.{
28788 .{ .src = .{ .to_mem, .none } },
28789 },
28790 .extra_temps = .{
28791 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28792 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28793 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28794 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28795 .{ .type = .u64, .kind = .{ .reg = .rax } },
28796 .unused,
28797 .unused,
28798 .unused,
28799 .unused,
28800 },
28801 .dst_temps = .{.mem},
28802 .clobbers = .{ .eflags = true },
28803 .each = .{ .once = &.{
28804 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28805 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28806 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28807 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28808 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28809 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28810 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28811 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28812 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28813 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
28814 } },
28815 }, .{
28816 .required_features = .{ .@"64bit", null, null, null },
28817 .src_constraints = .{ .any_scalar_int, .any },
28818 .dst_constraints = .{.any_scalar_int},
28819 .patterns = &.{
28820 .{ .src = .{ .to_mem, .none } },
28821 },
28822 .extra_temps = .{
28823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
28824 .{ .type = .usize, .kind = .{ .reg = .rsi } },
28825 .{ .type = .usize, .kind = .{ .reg = .rdi } },
28826 .{ .type = .u32, .kind = .{ .reg = .ecx } },
28827 .{ .type = .u64, .kind = .{ .reg = .rax } },
28828 .unused,
28829 .unused,
28830 .unused,
28831 .unused,
28832 },
28833 .dst_temps = .{.mem},
28834 .clobbers = .{ .eflags = true },
28835 .each = .{ .once = &.{
28836 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
28837 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
28838 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
28839 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
28840 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
28841 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28842 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
28843 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28844 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28845 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28846 } },
28847 } }) catch |err| switch (err) {
2167028848 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
2167128849 @tagName(air_tag),
21672 cg.typeOf(bin_op.lhs).fmt(pt),
28850 dst_ty.fmt(pt),
28851 src_ty.fmt(pt),
2167328852 ops[0].tracking(cg),
21674 ops[1].tracking(cg),
2167528853 }),
2167628854 else => |e| return e,
2167728855 };
21678 if (opt_info) |*oi| {
21679 for (ops) |op| for (res) |r| {
21680 if (op.index == r.index) break;
21681 } else try op.die(cg);
21682 try cg.genCopy(.bool, oi.res[0].tracking(cg).short, res[0].tracking(cg).short, .{});
21683 try res[0].die(cg);
21684 res[0] = oi.res[0];
21685 try cg.restoreState(oi.state, &oi.deaths, .{
21686 .emit_instructions = true,
21687 .update_tracking = true,
21688 .resurrect = true,
21689 .close_scope = true,
21690 });
21691 cg.performReloc(oi.reloc);
21692 @memset(&ops, res[0]);
21693 }
21694 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
21695 },
21696
21697 .cond_br => try cg.airCondBr(inst),
21698 .switch_br => try cg.airSwitchBr(inst),
21699 .loop_switch_br => try cg.airLoopSwitchBr(inst),
21700 .switch_dispatch => try cg.airSwitchDispatch(inst),
21701 .@"try", .try_cold => try cg.airTry(inst),
21702 .try_ptr, .try_ptr_cold => try cg.airTryPtr(inst),
21703 .dbg_stmt => if (cg.debug_output != .none) {
21704 const dbg_stmt = air_datas[@intFromEnum(inst)].dbg_stmt;
21705 _ = try cg.addInst(.{
21706 .tag = .pseudo,
21707 .ops = .pseudo_dbg_line_stmt_line_column,
21708 .data = .{ .line_column = .{
21709 .line = dbg_stmt.line,
21710 .column = dbg_stmt.column,
21711 } },
21712 });
21713 },
21714 .dbg_empty_stmt => if (cg.debug_output != .none) {
21715 if (cg.mir_instructions.len > 0) {
21716 const prev_mir_op = &cg.mir_instructions.items(.ops)[cg.mir_instructions.len - 1];
21717 if (prev_mir_op.* == .pseudo_dbg_line_line_column)
21718 prev_mir_op.* = .pseudo_dbg_line_stmt_line_column;
21719 }
21720 try cg.asmOpOnly(.{ ._, .nop });
21721 },
21722 .dbg_inline_block => {
21723 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
21724 const extra = cg.air.extraData(Air.DbgInlineBlock, ty_pl.payload);
21725 const old_inline_func = cg.inline_func;
21726 defer cg.inline_func = old_inline_func;
21727 cg.inline_func = extra.data.func;
21728 if (cg.debug_output != .none) _ = try cg.addInst(.{
21729 .tag = .pseudo,
21730 .ops = .pseudo_dbg_enter_inline_func,
21731 .data = .{ .func = extra.data.func },
21732 });
21733 try cg.lowerBlock(inst, @ptrCast(cg.air.extra[extra.end..][0..extra.data.body_len]));
21734 if (cg.debug_output != .none) _ = try cg.addInst(.{
21735 .tag = .pseudo,
21736 .ops = .pseudo_dbg_leave_inline_func,
21737 .data = .{ .func = old_inline_func },
21738 });
21739 },
21740 .dbg_var_ptr,
21741 .dbg_var_val,
21742 .dbg_arg_inline,
21743 => if (use_old) try cg.airDbgVar(inst) else if (cg.debug_output != .none) {
21744 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
21745 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
21746 var mcv = ops[0].tracking(cg).short;
21747 switch (mcv) {
21748 else => {},
21749 .eflags => |cc| switch (cc) {
21750 else => {},
21751 // These values would self destruct. Maybe we make them use their
21752 // turing complete dwarf expression interpreters for once?
21753 .z_and_np, .nz_or_p => {
21754 try cg.spillEflagsIfOccupied();
21755 mcv = ops[0].tracking(cg).short;
21756 },
21757 },
21758 }
21759 try cg.genLocalDebugInfo(inst, ops[0].tracking(cg).short);
21760 try ops[0].die(cg);
21761 },
21762 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
21763 const un_op = air_datas[@intFromEnum(inst)].un_op;
21764 const opt_ty = cg.typeOf(un_op).childType(zcu);
21765 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21766 const opt_child_ty = opt_ty.optionalChild(zcu);
21767 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21768 var ops = try cg.tempsFromOperands(inst, .{un_op});
21769 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21770 while (try ops[0].toLea(cg)) {}
21771 try cg.asmMemoryImmediate(
21772 .{ ._, .cmp },
21773 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21774 .byte
21775 else if (opt_child_ty.isSlice(zcu))
21776 .qword
21777 else
21778 .fromSize(opt_child_abi_size) }),
21779 .u(0),
21780 );
21781 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
21782 try is_null.finish(inst, &.{un_op}, &ops, cg);
21783 },
21784 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
21785 const un_op = air_datas[@intFromEnum(inst)].un_op;
21786 const opt_ty = cg.typeOf(un_op).childType(zcu);
21787 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
21788 const opt_child_ty = opt_ty.optionalChild(zcu);
21789 const opt_child_abi_size: u31 = @intCast(opt_child_ty.abiSize(zcu));
21790 var ops = try cg.tempsFromOperands(inst, .{un_op});
21791 if (!opt_repr_is_pl) try ops[0].toOffset(opt_child_abi_size, cg);
21792 while (try ops[0].toLea(cg)) {}
21793 try cg.asmMemoryImmediate(
21794 .{ ._, .cmp },
21795 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = if (!opt_repr_is_pl)
21796 .byte
21797 else if (opt_child_ty.isSlice(zcu))
21798 .qword
21799 else
21800 .fromSize(opt_child_abi_size) }),
21801 .u(0),
21802 );
21803 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
21804 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
21805 },
21806 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
21807 const un_op = air_datas[@intFromEnum(inst)].un_op;
21808 const eu_ty = cg.typeOf(un_op).childType(zcu);
21809 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21810 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21811 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21812 var ops = try cg.tempsFromOperands(inst, .{un_op});
21813 try ops[0].toOffset(eu_err_off, cg);
21814 while (try ops[0].toLea(cg)) {}
21815 try cg.asmMemoryImmediate(
21816 .{ ._, .cmp },
21817 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21818 .u(0),
21819 );
21820 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
21821 try is_err.finish(inst, &.{un_op}, &ops, cg);
21822 },
21823 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
21824 const un_op = air_datas[@intFromEnum(inst)].un_op;
21825 const eu_ty = cg.typeOf(un_op).childType(zcu);
21826 const eu_err_ty = eu_ty.errorUnionSet(zcu);
21827 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
21828 const eu_err_off: i32 = @intCast(codegen.errUnionErrorOffset(eu_pl_ty, zcu));
21829 var ops = try cg.tempsFromOperands(inst, .{un_op});
21830 try ops[0].toOffset(eu_err_off, cg);
21831 while (try ops[0].toLea(cg)) {}
21832 try cg.asmMemoryImmediate(
21833 .{ ._, .cmp },
21834 try ops[0].tracking(cg).short.deref().mem(cg, .{ .size = cg.memSize(eu_err_ty) }),
21835 .u(0),
21836 );
21837 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
21838 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
21839 },
21840 .load => if (use_old) try cg.airLoad(inst) else fallback: {
21841 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21842 const val_ty = ty_op.ty.toType();
21843 const ptr_ty = cg.typeOf(ty_op.operand);
21844 const ptr_info = ptr_ty.ptrInfo(zcu);
21845 if (ptr_info.packed_offset.host_size > 0 and
21846 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21847 break :fallback try cg.airLoad(inst);
21848 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
21849 const res = try ops[0].load(val_ty, .{
21850 .disp = switch (ptr_info.flags.vector_index) {
21851 .none => 0,
21852 .runtime => unreachable,
21853 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
21854 },
21855 }, cg);
21856 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
21857 },
21858 .int_from_ptr => if (use_old) try cg.airIntFromPtr(inst) else {
21859 const un_op = air_datas[@intFromEnum(inst)].un_op;
21860 var ops = try cg.tempsFromOperands(inst, .{un_op});
21861 try ops[0].toSlicePtr(cg);
21862 try ops[0].finish(inst, &.{un_op}, &ops, cg);
21863 },
21864 .int_from_bool => if (use_old) try cg.airIntFromBool(inst) else {
21865 const un_op = air_datas[@intFromEnum(inst)].un_op;
21866 const ops = try cg.tempsFromOperands(inst, .{un_op});
21867 try ops[0].finish(inst, &.{un_op}, &ops, cg);
21868 },
21869 .ret => try cg.airRet(inst, false),
21870 .ret_safe => try cg.airRet(inst, true),
21871 .ret_load => try cg.airRetLoad(inst),
21872 .store, .store_safe => |air_tag| if (use_old) try cg.airStore(inst, switch (air_tag) {
21873 else => unreachable,
21874 .store => false,
21875 .store_safe => true,
21876 }) else fallback: {
21877 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
21878 const ptr_ty = cg.typeOf(bin_op.lhs);
21879 const ptr_info = ptr_ty.ptrInfo(zcu);
21880 const val_ty = cg.typeOf(bin_op.rhs);
21881 if (ptr_info.packed_offset.host_size > 0 and
21882 (ptr_info.flags.vector_index == .none or val_ty.toIntern() == .bool_type))
21883 break :fallback try cg.airStore(inst, switch (air_tag) {
21884 else => unreachable,
21885 .store => false,
21886 .store_safe => true,
21887 });
21888 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
21889 try ops[0].store(&ops[1], .{
21890 .disp = switch (ptr_info.flags.vector_index) {
21891 .none => 0,
21892 .runtime => unreachable,
21893 else => |vector_index| @intCast(val_ty.abiSize(zcu) * @intFromEnum(vector_index)),
21894 },
21895 .safe = switch (air_tag) {
21896 else => unreachable,
21897 .store => false,
21898 .store_safe => true,
21899 },
21900 }, cg);
21901 for (ops) |op| try op.die(cg);
28856 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
2190228857 },
21903 .unreach => {},
2190428858 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
2190528859 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
2190628860 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
......@@ -22080,7 +29034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2208029034 },
2208129035 .dst_temps = .{.{ .rc = .general_purpose }},
2208229036 .each = .{ .once = &.{
22083 .{ ._, ._, .movzx, .dst0d, .leaa(.byte, .src0, .add_src0_elem_size_times_src1), ._, ._ },
29037 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
2208429038 } },
2208529039 }, .{
2208629040 .dst_constraints = .{.{ .int = .byte }},
......@@ -22089,7 +29043,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2208929043 },
2209029044 .dst_temps = .{.{ .rc = .general_purpose }},
2209129045 .each = .{ .once = &.{
22092 .{ ._, ._, .movzx, .dst0d, .leai(.byte, .src0, .src1), ._, ._ },
29046 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
2209329047 } },
2209429048 }, .{
2209529049 .dst_constraints = .{.{ .int = .word }},
......@@ -22098,7 +29052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2209829052 },
2209929053 .dst_temps = .{.{ .rc = .general_purpose }},
2210029054 .each = .{ .once = &.{
22101 .{ ._, ._, .movzx, .dst0d, .leaa(.word, .src0, .add_src0_elem_size_times_src1), ._, ._ },
29055 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
2210229056 } },
2210329057 }, .{
2210429058 .dst_constraints = .{.{ .int = .word }},
......@@ -22107,7 +29061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2210729061 },
2210829062 .dst_temps = .{.{ .rc = .general_purpose }},
2210929063 .each = .{ .once = &.{
22110 .{ ._, ._, .movzx, .dst0d, .leasi(.word, .src0, .@"2", .src1), ._, ._ },
29064 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
2211129065 } },
2211229066 }, .{
2211329067 .dst_constraints = .{.{ .int = .dword }},
......@@ -22116,7 +29070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2211629070 },
2211729071 .dst_temps = .{.{ .rc = .general_purpose }},
2211829072 .each = .{ .once = &.{
22119 .{ ._, ._, .mov, .dst0d, .leaa(.dword, .src0, .add_src0_elem_size_times_src1), ._, ._ },
29073 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },
2212029074 } },
2212129075 }, .{
2212229076 .dst_constraints = .{.{ .int = .dword }},
......@@ -22125,7 +29079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2212529079 },
2212629080 .dst_temps = .{.{ .rc = .general_purpose }},
2212729081 .each = .{ .once = &.{
22128 .{ ._, ._, .mov, .dst0d, .leasi(.dword, .src0, .@"4", .src1), ._, ._ },
29082 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
2212929083 } },
2213029084 }, .{
2213129085 .dst_constraints = .{.{ .int = .qword }},
......@@ -22134,7 +29088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2213429088 },
2213529089 .dst_temps = .{.{ .rc = .general_purpose }},
2213629090 .each = .{ .once = &.{
22137 .{ ._, ._, .mov, .dst0q, .leaa(.qword, .src0, .add_src0_elem_size_times_src1), ._, ._ },
29091 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
2213829092 } },
2213929093 }, .{
2214029094 .required_features = .{ .@"64bit", null, null, null },
......@@ -22144,7 +29098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2214429098 },
2214529099 .dst_temps = .{.{ .rc = .general_purpose }},
2214629100 .each = .{ .once = &.{
22147 .{ ._, ._, .mov, .dst0q, .leasi(.qword, .src0, .@"8", .src1), ._, ._ },
29101 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
2214829102 } },
2214929103 } }) catch |err| switch (err) {
2215029104 error.SelectFailed => {
......@@ -23562,19 +30516,6 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
2356230516 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2356330517}
2356430518
23565fn airIntFromBool(self: *CodeGen, inst: Air.Inst.Index) !void {
23566 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
23567 const ty = self.typeOfIndex(inst);
23568
23569 const operand = try self.resolveInst(un_op);
23570 const dst_mcv = if (self.reuseOperand(inst, un_op, 0, operand))
23571 operand
23572 else
23573 try self.copyToRegisterWithInstTracking(inst, ty, operand);
23574
23575 return self.finishAir(inst, dst_mcv, .{ un_op, .none, .none });
23576}
23577
2357830519fn airSlice(self: *CodeGen, inst: Air.Inst.Index) !void {
2357930520 const zcu = self.pt.zcu;
2358030521 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -29808,6 +36749,7 @@ fn genBinOp(
2980836749 try self.copyToTmpRegister(rhs_ty, rhs_mcv)).to128(),
2980936750 );
2981036751 try self.asmRegisterRegister(.{ .v_ps, .cvtph2 }, dst_reg, dst_reg);
36752 try self.asmRegisterRegister(.{ .v_, .movshdup }, tmp_reg, dst_reg);
2981136753 break :src .{ .register = tmp_reg };
2981236754 } else rhs_mcv;
2981336755
......@@ -35227,7 +42169,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
3522742169 .reserved_frame,
3522842170 .air_ref,
3522942171 => unreachable, // unmodifiable destination
35230 .register => |reg| try self.genSetReg(reg, ty, src_mcv, opts),
42172 .register => |dst_reg| try self.genSetReg(dst_reg, ty, src_mcv, opts),
3523142173 .register_offset => |dst_reg_off| try self.genSetReg(dst_reg_off.reg, ty, switch (src_mcv) {
3523242174 .none,
3523342175 .unreach,
......@@ -35377,7 +42319,8 @@ fn genSetReg(
3537742319 const pt = self.pt;
3537842320 const zcu = pt.zcu;
3537942321 const abi_size: u32 = @intCast(ty.abiSize(zcu));
35380 if (ty.bitSize(zcu) > dst_reg.bitSize())
42322 const dst_alias = registerAlias(dst_reg, abi_size);
42323 if (ty.bitSize(zcu) > dst_alias.bitSize())
3538142324 return self.fail("genSetReg called with a value larger than dst_reg", .{});
3538242325 switch (src_mcv) {
3538342326 .none,
......@@ -35433,13 +42376,13 @@ fn genSetReg(
3543342376 } else if (abi_size <= 4 and @as(i64, @bitCast(imm)) < 0) {
3543442377 try self.asmRegisterImmediate(
3543542378 .{ ._, .mov },
35436 registerAlias(dst_reg, abi_size),
42379 dst_alias,
3543742380 .s(@intCast(@as(i64, @bitCast(imm)))),
3543842381 );
3543942382 } else {
3544042383 try self.asmRegisterImmediate(
3544142384 .{ ._, .mov },
35442 registerAlias(dst_reg, abi_size),
42385 dst_alias,
3544342386 .u(imm),
3544442387 );
3544542388 }
......@@ -35448,12 +42391,12 @@ fn genSetReg(
3544842391 .general_purpose => switch (src_reg.class()) {
3544942392 .general_purpose => try self.asmRegisterRegister(
3545042393 .{ ._, .mov },
35451 registerAlias(dst_reg, abi_size),
42394 dst_alias,
3545242395 registerAlias(src_reg, abi_size),
3545342396 ),
3545442397 .segment => try self.asmRegisterRegister(
3545542398 .{ ._, .mov },
35456 registerAlias(dst_reg, abi_size),
42399 dst_alias,
3545742400 src_reg,
3545842401 ),
3545942402 .x87, .mmx, .ip, .cr, .dr => unreachable,
......@@ -35480,7 +42423,7 @@ fn genSetReg(
3548042423 .base = .{ .frame = frame_index },
3548142424 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },
3548242425 }, src_reg.to128());
35483 try self.asmRegisterMemory(.{ ._, .mov }, registerAlias(dst_reg, abi_size), .{
42426 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
3548442427 .base = .{ .frame = frame_index },
3548542428 .mod = .{ .rm = .{ .size = .fromSize(abi_size) } },
3548642429 });
......@@ -35617,7 +42560,7 @@ fn genSetReg(
3561742560 else => unreachable,
3561842561 },
3561942562 }) orelse return self.fail("TODO implement genSetReg for {}", .{ty.fmt(pt)}),
35620 registerAlias(dst_reg, abi_size),
42563 dst_alias,
3562142564 registerAlias(src_reg, abi_size),
3562242565 ),
3562342566 },
......@@ -35678,7 +42621,7 @@ fn genSetReg(
3567842621 ),
3567942622 .lea_frame => .{ .move = .{ ._, .lea } },
3568042623 else => unreachable,
35681 }).read(self, registerAlias(dst_reg, abi_size), switch (src_mcv) {
42624 }).read(self, dst_alias, switch (src_mcv) {
3568242625 .register_offset, .indirect => |reg_off| .{
3568342626 .base = .{ .reg = reg_off.reg.to64() },
3568442627 .mod = .{ .rm = .{
......@@ -35743,7 +42686,7 @@ fn genSetReg(
3574342686 ty,
3574442687 dst_reg.class(),
3574542688 ty.abiAlignment(zcu).check(@as(u32, @bitCast(small_addr))),
35746 )).read(self, registerAlias(dst_reg, abi_size), .{
42689 )).read(self, dst_alias, .{
3574742690 .base = .{ .reg = .ds },
3574842691 .mod = .{ .rm = .{
3574942692 .size = self.memSize(ty),
......@@ -35753,7 +42696,7 @@ fn genSetReg(
3575342696 .load_symbol => |sym_off| switch (dst_reg.class()) {
3575442697 .general_purpose => {
3575542698 assert(sym_off.off == 0);
35756 try self.asmRegisterMemory(.{ ._, .mov }, registerAlias(dst_reg, abi_size), .{
42699 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
3575742700 .base = .{ .reloc = sym_off.sym_index },
3575842701 .mod = .{ .rm = .{
3575942702 .size = self.memSize(ty),
......@@ -35771,7 +42714,7 @@ fn genSetReg(
3577142714 .tag = .mov,
3577242715 .ops = .direct_reloc,
3577342716 .data = .{ .rx = .{
35774 .r1 = registerAlias(dst_reg, abi_size),
42717 .r1 = dst_alias,
3577542718 .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),
3577642719 } },
3577742720 });
......@@ -35788,7 +42731,7 @@ fn genSetReg(
3578842731 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
3578942732 defer self.register_manager.unlockReg(addr_lock);
3579042733
35791 try (try self.moveStrategy(ty, dst_reg.class(), false)).read(self, registerAlias(dst_reg, abi_size), .{
42734 try (try self.moveStrategy(ty, dst_reg.class(), false)).read(self, dst_alias, .{
3579242735 .base = .{ .reg = addr_reg.to64() },
3579342736 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
3579442737 });
......@@ -36274,21 +43217,6 @@ fn genLazySymbolRef(
3627443217 }
3627543218}
3627643219
36277fn airIntFromPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
36278 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
36279 const result = result: {
36280 // TODO: handle case where the operand is a slice not a raw pointer
36281 const src_mcv = try self.resolveInst(un_op);
36282 if (self.reuseOperand(inst, un_op, 0, src_mcv)) break :result src_mcv;
36283
36284 const dst_mcv = try self.allocRegOrMem(inst, true);
36285 const dst_ty = self.typeOfIndex(inst);
36286 try self.genCopy(dst_ty, dst_mcv, src_mcv, .{});
36287 break :result dst_mcv;
36288 };
36289 return self.finishAir(inst, result, .{ un_op, .none, .none });
36290}
36291
3629243220fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void {
3629343221 const pt = self.pt;
3629443222 const zcu = pt.zcu;
......@@ -36328,7 +43256,7 @@ fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void {
3632843256
3632943257 if (dst_ty.isRuntimeFloat()) break :result dst_mcv;
3633043258
36331 if (dst_ty.isAbiInt(zcu) and src_ty.isAbiInt(zcu) and
43259 if (dst_ty.isAbiInt(zcu) and src_ty.isAbiInt(zcu) and src_ty.zigTypeTag(zcu) != .@"struct" and
3633243260 dst_ty.intInfo(zcu).signedness == src_ty.intInfo(zcu).signedness) break :result dst_mcv;
3633343261
3633443262 const abi_size = dst_ty.abiSize(zcu);
......@@ -40916,8 +47844,8 @@ const Temp = struct {
4091647844 const first_temp_tracking = first_temp.unwrap(cg).temp.tracking(cg);
4091747845 const second_temp_tracking = second_temp.unwrap(cg).temp.tracking(cg);
4091847846 const result: MCValue = .{ .register_pair = .{
40919 first_temp_tracking.short.register,
40920 second_temp_tracking.short.register,
47847 first_temp_tracking.short.register.to64(),
47848 second_temp_tracking.short.register.to64(),
4092147849 } };
4092247850 const result_temp_index = cg.next_temp_index;
4092347851 const result_temp: Temp = .{ .index = result_temp_index.toIndex() };
......@@ -42369,7 +49297,7 @@ const Temp = struct {
4236949297 .temp => |temp_index| {
4237049298 const temp_tracking = temp_index.tracking(cg);
4237149299 tracking_log.debug("{} => {} (birth)", .{ inst, temp_tracking.short });
42372 cg.inst_tracking.putAssumeCapacityNoClobber(inst, temp_tracking.*);
49300 cg.inst_tracking.putAssumeCapacityNoClobber(inst, .init(temp_tracking.short));
4237349301 assert(cg.reuseTemp(inst, temp_index.toIndex(), temp_tracking));
4237449302 },
4237549303 }
......@@ -42616,7 +49544,7 @@ const Select = struct {
4261649544 top: u3,
4261749545
4261849546 fn emitLabel(s: *Select, label_index: Label) void {
42619 if (label_index == ._) return;
49547 assert(@intFromEnum(label_index) < @intFromEnum(Label._));
4262049548 const label = &s.labels[@intFromEnum(label_index)];
4262149549 for (&label.forward) |*reloc| {
4262249550 if (reloc.*) |r| s.cg.performReloc(r);
......@@ -42626,29 +49554,35 @@ const Select = struct {
4262649554 }
4262749555
4262849556 fn emit(s: *Select, inst: Instruction) !void {
42629 s.emitLabel(inst[0]);
4263049557 const mir_tag: Mir.Inst.FixedTag = .{ inst[1], inst[2] };
42631 var mir_ops: [4]CodeGen.Operand = undefined;
42632 inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s);
42633 s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) {
42634 error.InvalidInstruction => {
42635 const fixes = @tagName(mir_tag[0]);
42636 const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?;
42637 return s.cg.fail(
42638 "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'",
42639 .{
42640 fixes[0..fixes_blank],
42641 @tagName(mir_tag[1]),
42642 fixes[fixes_blank + 1 ..],
42643 @tagName(mir_ops[0]),
42644 @tagName(mir_ops[1]),
42645 @tagName(mir_ops[2]),
42646 @tagName(mir_ops[3]),
42647 },
42648 );
42649 },
42650 else => |e| return e,
42651 };
49558 pseudo: {
49559 switch (inst[0]) {
49560 .@"0:", .@"1:", .@"2:" => |label| s.emitLabel(label),
49561 ._ => {},
49562 .pseudo => break :pseudo,
49563 }
49564 var mir_ops: [4]CodeGen.Operand = undefined;
49565 inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s);
49566 s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) {
49567 error.InvalidInstruction => {
49568 const fixes = @tagName(mir_tag[0]);
49569 const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?;
49570 return s.cg.fail(
49571 "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'",
49572 .{
49573 fixes[0..fixes_blank],
49574 @tagName(mir_tag[1]),
49575 fixes[fixes_blank + 1 ..],
49576 @tagName(mir_ops[0]),
49577 @tagName(mir_ops[1]),
49578 @tagName(mir_ops[2]),
49579 @tagName(mir_ops[3]),
49580 },
49581 );
49582 },
49583 else => |e| return e,
49584 };
49585 }
4265249586 switch (mir_tag[0]) {
4265349587 .f_ => switch (mir_tag[1]) {
4265449588 .@"2xm1",
......@@ -42702,32 +49636,6 @@ const Select = struct {
4270249636 .yl2x => s.top +%= 1,
4270349637 else => unreachable,
4270449638 },
42705 .fb_ => switch (mir_tag[1]) {
42706 .ld => s.top -%= 1,
42707 else => unreachable,
42708 },
42709 .fb_p => switch (mir_tag[1]) {
42710 .st => s.top +%= 1,
42711 else => unreachable,
42712 },
42713 .fi_ => switch (mir_tag[1]) {
42714 .add, .com, .div, .divr, .mul, .st, .stt, .sub, .subr => {},
42715 .ld => s.top -%= 1,
42716 else => unreachable,
42717 },
42718 .fi_p => switch (mir_tag[1]) {
42719 .com, .st => s.top +%= 1,
42720 else => unreachable,
42721 },
42722 .fn_ => switch (mir_tag[1]) {
42723 .clex => {},
42724 .init, .save => s.top = 0,
42725 else => unreachable,
42726 },
42727 .fn_cw, .fn_env, .fn_sw => switch (mir_tag[1]) {
42728 .st => {},
42729 else => unreachable,
42730 },
4273149639 .f_cstp => switch (mir_tag[1]) {
4273249640 .de => s.top -%= 1,
4273349641 .in => s.top +%= 1,
......@@ -42754,6 +49662,32 @@ const Select = struct {
4275449662 .com, .ucom => s.top +%= 2,
4275549663 else => unreachable,
4275649664 },
49665 .fb_ => switch (mir_tag[1]) {
49666 .ld => s.top -%= 1,
49667 else => unreachable,
49668 },
49669 .fb_p => switch (mir_tag[1]) {
49670 .st => s.top +%= 1,
49671 else => unreachable,
49672 },
49673 .fi_ => switch (mir_tag[1]) {
49674 .add, .com, .div, .divr, .mul, .st, .stt, .sub, .subr => {},
49675 .ld => s.top -%= 1,
49676 else => unreachable,
49677 },
49678 .fi_p => switch (mir_tag[1]) {
49679 .com, .st => s.top +%= 1,
49680 else => unreachable,
49681 },
49682 .fn_ => switch (mir_tag[1]) {
49683 .clex => {},
49684 .init, .save => s.top = 0,
49685 else => unreachable,
49686 },
49687 .fn_cw, .fn_env, .fn_sw => switch (mir_tag[1]) {
49688 .st => {},
49689 else => unreachable,
49690 },
4275749691 .fx_ => switch (mir_tag[1]) {
4275849692 .rstor => unreachable,
4275949693 .save => {},
......@@ -42770,8 +49704,8 @@ const Select = struct {
4277049704
4277149705 const Case = struct {
4277249706 required_features: [4]?std.Target.x86.Feature = @splat(null),
42773 dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),
4277449707 src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any),
49708 dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),
4277549709 patterns: []const Select.Pattern,
4277649710 call_frame: packed struct(u16) { size: u10 = 0, alignment: InternPool.Alignment } = .{ .size = 0, .alignment = .none },
4277749711 extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused),
......@@ -43168,6 +50102,7 @@ const Select = struct {
4316850102 smax_mem: ConstInfo,
4316950103 umin_mem: ConstInfo,
4317050104 umax_mem: ConstInfo,
50105 frame: FrameIndex,
4317150106 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },
4317250107
4317350108 const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null };
......@@ -43284,6 +50219,7 @@ const Select = struct {
4328450219 } })) else res_scalar_val;
4328550220 return .{ try cg.tempMemFromValue(res_val), true };
4328650221 },
50222 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },
4328750223 .symbol => |symbol| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{
4328850224 .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
4328950225 try elf_file.getGlobalSymbol(symbol.name, symbol.lib)
......@@ -43305,18 +50241,21 @@ const Select = struct {
4330550241 Select.Operand,
4330650242 Select.Operand,
4330750243 };
43308 const Label = enum { @"0:", @"1:", @"2:", @"_" };
50244 const Label = enum { @"0:", @"1:", @"2:", @"_", pseudo };
4330950245 const Operand = struct {
43310 tag: Tag,
50246 flags: packed struct(u16) {
50247 tag: Tag,
50248 adjust: Adjust = .none,
50249 unused: u4 = 0,
50250 },
4331150251 base: Ref.Sized = .none,
4331250252 index: packed struct(u6) {
4331350253 ref: Ref,
43314 scale: Memory.Scale,
43315 } = .{ .ref = .none, .scale = .@"1" },
43316 adjust: Adjust = .none,
50254 scale: Memory.Scale = .@"1",
50255 } = .{ .ref = .none },
4331750256 imm: i32 = 0,
4331850257
43319 const Tag = enum {
50258 const Tag = enum(u3) {
4332050259 none,
4332150260 backward_label,
4332250261 forward_label,
......@@ -43326,19 +50265,22 @@ const Select = struct {
4332650265 lea,
4332750266 mem,
4332850267 };
43329 const Adjust = packed struct(u8) {
50268 const Adjust = packed struct(u9) {
4333050269 sign: enum(u1) { neg, pos },
43331 lhs: enum(u4) {
50270 lhs: enum(u5) {
4333250271 none,
4333350272 ptr_size,
4333450273 ptr_bit_size,
4333550274 size,
50275 delta_size,
50276 delta_elem_size,
4333650277 size_sub_elem_size,
43337 src0_unaligned_size,
50278 unaligned_size,
4333850279 bit_size,
4333950280 src0_bit_size,
4334050281 len,
4334150282 elem_limbs,
50283 elem_size,
4334250284 src0_elem_size,
4334350285 src0_elem_size_times_src1,
4334450286 log2_src0_elem_size,
......@@ -43353,13 +50295,17 @@ const Select = struct {
4335350295 const sub_ptr_size: Adjust = .{ .sign = .neg, .lhs = .ptr_size, .op = .mul, .rhs = .@"1" };
4335450296 const add_ptr_bit_size: Adjust = .{ .sign = .pos, .lhs = .ptr_bit_size, .op = .mul, .rhs = .@"1" };
4335550297 const add_size: Adjust = .{ .sign = .pos, .lhs = .size, .op = .mul, .rhs = .@"1" };
50298 const add_size_div_4: Adjust = .{ .sign = .pos, .lhs = .size, .op = .div, .rhs = .@"4" };
4335650299 const add_size_div_8: Adjust = .{ .sign = .pos, .lhs = .size, .op = .div, .rhs = .@"8" };
4335750300 const sub_size_div_8: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"8" };
4335850301 const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" };
4335950302 const sub_size: Adjust = .{ .sign = .neg, .lhs = .size, .op = .mul, .rhs = .@"1" };
50303 const add_delta_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_size, .op = .div, .rhs = .@"8" };
50304 const add_delta_elem_size: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .mul, .rhs = .@"1" };
50305 const add_delta_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_elem_size, .op = .div, .rhs = .@"8" };
4336050306 const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" };
43361 const add_src0_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .src0_unaligned_size, .op = .mul, .rhs = .@"1" };
43362 const sub_src0_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .src0_unaligned_size, .op = .mul, .rhs = .@"1" };
50307 const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
50308 const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
4336350309 const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" };
4336450310 const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
4336550311 const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
......@@ -43371,6 +50317,7 @@ const Select = struct {
4337150317 const add_2_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"2" };
4337250318 const add_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"1" };
4337350319 const sub_len: Adjust = .{ .sign = .neg, .lhs = .len, .op = .mul, .rhs = .@"1" };
50320 const add_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .elem_size, .op = .div, .rhs = .@"8" };
4337450321 const add_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"1" };
4337550322 const add_2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"2" };
4337650323 const add_4_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"4" };
......@@ -43530,298 +50477,293 @@ const Select = struct {
4353050477 }
4353150478 };
4353250479
43533 const @"_": Select.Operand = .{ .tag = .none };
43534
43535 const @"0b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp0, .size = .none } };
43536 const @"0f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp0, .size = .none } };
43537 const @"1b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp1, .size = .none } };
43538 const @"1f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp1, .size = .none } };
43539 const @"2b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp2, .size = .none } };
43540 const @"2f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp2, .size = .none } };
43541
43542 const tmp0b: Select.Operand = .{ .tag = .ref, .base = .tmp0b };
43543 const tmp0w: Select.Operand = .{ .tag = .ref, .base = .tmp0w };
43544 const tmp0d: Select.Operand = .{ .tag = .ref, .base = .tmp0d };
43545 const tmp0p: Select.Operand = .{ .tag = .ref, .base = .tmp0p };
43546 const tmp0q: Select.Operand = .{ .tag = .ref, .base = .tmp0q };
43547 const tmp0t: Select.Operand = .{ .tag = .ref, .base = .tmp0t };
43548 const tmp0x: Select.Operand = .{ .tag = .ref, .base = .tmp0x };
43549 const tmp0y: Select.Operand = .{ .tag = .ref, .base = .tmp0y };
43550
43551 const tmp1b: Select.Operand = .{ .tag = .ref, .base = .tmp1b };
43552 const tmp1w: Select.Operand = .{ .tag = .ref, .base = .tmp1w };
43553 const tmp1d: Select.Operand = .{ .tag = .ref, .base = .tmp1d };
43554 const tmp1p: Select.Operand = .{ .tag = .ref, .base = .tmp1p };
43555 const tmp1q: Select.Operand = .{ .tag = .ref, .base = .tmp1q };
43556 const tmp1t: Select.Operand = .{ .tag = .ref, .base = .tmp1t };
43557 const tmp1x: Select.Operand = .{ .tag = .ref, .base = .tmp1x };
43558 const tmp1y: Select.Operand = .{ .tag = .ref, .base = .tmp1y };
43559
43560 const tmp2b: Select.Operand = .{ .tag = .ref, .base = .tmp2b };
43561 const tmp2w: Select.Operand = .{ .tag = .ref, .base = .tmp2w };
43562 const tmp2d: Select.Operand = .{ .tag = .ref, .base = .tmp2d };
43563 const tmp2p: Select.Operand = .{ .tag = .ref, .base = .tmp2p };
43564 const tmp2q: Select.Operand = .{ .tag = .ref, .base = .tmp2q };
43565 const tmp2t: Select.Operand = .{ .tag = .ref, .base = .tmp2t };
43566 const tmp2x: Select.Operand = .{ .tag = .ref, .base = .tmp2x };
43567 const tmp2y: Select.Operand = .{ .tag = .ref, .base = .tmp2y };
43568
43569 const tmp3b: Select.Operand = .{ .tag = .ref, .base = .tmp3b };
43570 const tmp3w: Select.Operand = .{ .tag = .ref, .base = .tmp3w };
43571 const tmp3d: Select.Operand = .{ .tag = .ref, .base = .tmp3d };
43572 const tmp3p: Select.Operand = .{ .tag = .ref, .base = .tmp3p };
43573 const tmp3q: Select.Operand = .{ .tag = .ref, .base = .tmp3q };
43574 const tmp3t: Select.Operand = .{ .tag = .ref, .base = .tmp3t };
43575 const tmp3x: Select.Operand = .{ .tag = .ref, .base = .tmp3x };
43576 const tmp3y: Select.Operand = .{ .tag = .ref, .base = .tmp3y };
43577
43578 const tmp4b: Select.Operand = .{ .tag = .ref, .base = .tmp4b };
43579 const tmp4w: Select.Operand = .{ .tag = .ref, .base = .tmp4w };
43580 const tmp4d: Select.Operand = .{ .tag = .ref, .base = .tmp4d };
43581 const tmp4p: Select.Operand = .{ .tag = .ref, .base = .tmp4p };
43582 const tmp4q: Select.Operand = .{ .tag = .ref, .base = .tmp4q };
43583 const tmp4t: Select.Operand = .{ .tag = .ref, .base = .tmp4t };
43584 const tmp4x: Select.Operand = .{ .tag = .ref, .base = .tmp4x };
43585 const tmp4y: Select.Operand = .{ .tag = .ref, .base = .tmp4y };
43586
43587 const tmp5b: Select.Operand = .{ .tag = .ref, .base = .tmp5b };
43588 const tmp5w: Select.Operand = .{ .tag = .ref, .base = .tmp5w };
43589 const tmp5d: Select.Operand = .{ .tag = .ref, .base = .tmp5d };
43590 const tmp5p: Select.Operand = .{ .tag = .ref, .base = .tmp5p };
43591 const tmp5q: Select.Operand = .{ .tag = .ref, .base = .tmp5q };
43592 const tmp5t: Select.Operand = .{ .tag = .ref, .base = .tmp5t };
43593 const tmp5x: Select.Operand = .{ .tag = .ref, .base = .tmp5x };
43594 const tmp5y: Select.Operand = .{ .tag = .ref, .base = .tmp5y };
43595
43596 const tmp6b: Select.Operand = .{ .tag = .ref, .base = .tmp6b };
43597 const tmp6w: Select.Operand = .{ .tag = .ref, .base = .tmp6w };
43598 const tmp6d: Select.Operand = .{ .tag = .ref, .base = .tmp6d };
43599 const tmp6p: Select.Operand = .{ .tag = .ref, .base = .tmp6p };
43600 const tmp6q: Select.Operand = .{ .tag = .ref, .base = .tmp6q };
43601 const tmp6t: Select.Operand = .{ .tag = .ref, .base = .tmp6t };
43602 const tmp6x: Select.Operand = .{ .tag = .ref, .base = .tmp6x };
43603 const tmp6y: Select.Operand = .{ .tag = .ref, .base = .tmp6y };
43604
43605 const tmp7b: Select.Operand = .{ .tag = .ref, .base = .tmp7b };
43606 const tmp7w: Select.Operand = .{ .tag = .ref, .base = .tmp7w };
43607 const tmp7d: Select.Operand = .{ .tag = .ref, .base = .tmp7d };
43608 const tmp7p: Select.Operand = .{ .tag = .ref, .base = .tmp7p };
43609 const tmp7q: Select.Operand = .{ .tag = .ref, .base = .tmp7q };
43610 const tmp7t: Select.Operand = .{ .tag = .ref, .base = .tmp7t };
43611 const tmp7x: Select.Operand = .{ .tag = .ref, .base = .tmp7x };
43612 const tmp7y: Select.Operand = .{ .tag = .ref, .base = .tmp7y };
43613
43614 const tmp8b: Select.Operand = .{ .tag = .ref, .base = .tmp8b };
43615 const tmp8w: Select.Operand = .{ .tag = .ref, .base = .tmp8w };
43616 const tmp8d: Select.Operand = .{ .tag = .ref, .base = .tmp8d };
43617 const tmp8p: Select.Operand = .{ .tag = .ref, .base = .tmp8p };
43618 const tmp8q: Select.Operand = .{ .tag = .ref, .base = .tmp8q };
43619 const tmp8t: Select.Operand = .{ .tag = .ref, .base = .tmp8t };
43620 const tmp8x: Select.Operand = .{ .tag = .ref, .base = .tmp8x };
43621 const tmp8y: Select.Operand = .{ .tag = .ref, .base = .tmp8y };
43622
43623 const dst0b: Select.Operand = .{ .tag = .ref, .base = .dst0b };
43624 const dst0w: Select.Operand = .{ .tag = .ref, .base = .dst0w };
43625 const dst0d: Select.Operand = .{ .tag = .ref, .base = .dst0d };
43626 const dst0p: Select.Operand = .{ .tag = .ref, .base = .dst0p };
43627 const dst0q: Select.Operand = .{ .tag = .ref, .base = .dst0q };
43628 const dst0t: Select.Operand = .{ .tag = .ref, .base = .dst0t };
43629 const dst0x: Select.Operand = .{ .tag = .ref, .base = .dst0x };
43630 const dst0y: Select.Operand = .{ .tag = .ref, .base = .dst0y };
43631
43632 const src0b: Select.Operand = .{ .tag = .ref, .base = .src0b };
43633 const src0w: Select.Operand = .{ .tag = .ref, .base = .src0w };
43634 const src0d: Select.Operand = .{ .tag = .ref, .base = .src0d };
43635 const src0p: Select.Operand = .{ .tag = .ref, .base = .src0p };
43636 const src0q: Select.Operand = .{ .tag = .ref, .base = .src0q };
43637 const src0t: Select.Operand = .{ .tag = .ref, .base = .src0t };
43638 const src0x: Select.Operand = .{ .tag = .ref, .base = .src0x };
43639 const src0y: Select.Operand = .{ .tag = .ref, .base = .src0y };
43640
43641 const src1b: Select.Operand = .{ .tag = .ref, .base = .src1b };
43642 const src1w: Select.Operand = .{ .tag = .ref, .base = .src1w };
43643 const src1d: Select.Operand = .{ .tag = .ref, .base = .src1d };
43644 const src1p: Select.Operand = .{ .tag = .ref, .base = .src1p };
43645 const src1q: Select.Operand = .{ .tag = .ref, .base = .src1q };
43646 const src1t: Select.Operand = .{ .tag = .ref, .base = .src1t };
43647 const src1x: Select.Operand = .{ .tag = .ref, .base = .src1x };
43648 const src1y: Select.Operand = .{ .tag = .ref, .base = .src1y };
50480 const @"_": Select.Operand = .{ .flags = .{ .tag = .none } };
50481
50482 const @"0b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp0, .size = .none } };
50483 const @"0f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp0, .size = .none } };
50484 const @"1b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp1, .size = .none } };
50485 const @"1f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp1, .size = .none } };
50486 const @"2b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp2, .size = .none } };
50487 const @"2f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp2, .size = .none } };
50488
50489 const tmp0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0b };
50490 const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w };
50491 const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d };
50492 const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p };
50493 const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q };
50494 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t };
50495 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x };
50496 const tmp0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0y };
50497
50498 const tmp1b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1b };
50499 const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w };
50500 const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d };
50501 const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p };
50502 const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q };
50503 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t };
50504 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x };
50505 const tmp1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1y };
50506
50507 const tmp2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2b };
50508 const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w };
50509 const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d };
50510 const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p };
50511 const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q };
50512 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t };
50513 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x };
50514 const tmp2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2y };
50515
50516 const tmp3b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3b };
50517 const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w };
50518 const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d };
50519 const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p };
50520 const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q };
50521 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t };
50522 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x };
50523 const tmp3y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3y };
50524
50525 const tmp4b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4b };
50526 const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w };
50527 const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d };
50528 const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p };
50529 const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q };
50530 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t };
50531 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x };
50532 const tmp4y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4y };
50533
50534 const tmp5b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5b };
50535 const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w };
50536 const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d };
50537 const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p };
50538 const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q };
50539 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t };
50540 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x };
50541 const tmp5y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5y };
50542
50543 const tmp6b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6b };
50544 const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w };
50545 const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d };
50546 const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p };
50547 const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q };
50548 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t };
50549 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x };
50550 const tmp6y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6y };
50551
50552 const tmp7b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7b };
50553 const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w };
50554 const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d };
50555 const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p };
50556 const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q };
50557 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t };
50558 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x };
50559 const tmp7y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7y };
50560
50561 const tmp8b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8b };
50562 const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w };
50563 const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d };
50564 const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p };
50565 const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q };
50566 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t };
50567 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x };
50568 const tmp8y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8y };
50569
50570 const dst0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0b };
50571 const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w };
50572 const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d };
50573 const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p };
50574 const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q };
50575 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t };
50576 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x };
50577 const dst0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0y };
50578
50579 const src0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0b };
50580 const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w };
50581 const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d };
50582 const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p };
50583 const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q };
50584 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t };
50585 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x };
50586 const src0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0y };
50587
50588 const src1b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1b };
50589 const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w };
50590 const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d };
50591 const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p };
50592 const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q };
50593 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t };
50594 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
50595 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };
4364950596
4365050597 fn si(imm: i32) Select.Operand {
43651 return .{ .tag = .simm, .imm = imm };
50598 return .{ .flags = .{ .tag = .simm }, .imm = imm };
4365250599 }
4365350600 fn sa(base: Ref.Sized, adjust: Adjust) Select.Operand {
43654 return .{ .tag = .simm, .base = base, .adjust = adjust };
50601 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base };
50602 }
50603 fn sa2(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
50604 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .index = .{ .ref = index } };
4365550605 }
4365650606 fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand {
43657 return .{ .tag = .simm, .base = base, .adjust = adjust, .imm = imm };
50607 return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm };
4365850608 }
4365950609 fn ui(imm: u32) Select.Operand {
43660 return .{ .tag = .uimm, .imm = @bitCast(imm) };
50610 return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) };
4366150611 }
4366250612 fn ua(base: Ref.Sized, adjust: Adjust) Select.Operand {
43663 return .{ .tag = .uimm, .base = base, .adjust = adjust };
50613 return .{ .flags = .{ .tag = .uimm, .adjust = adjust }, .base = base };
4366450614 }
4366550615 fn uia(imm: u32, base: Ref.Sized, adjust: Adjust) Select.Operand {
43666 return .{ .tag = .uimm, .base = base, .adjust = adjust, .imm = @bitCast(imm) };
50616 return .{ .flags = .{ .tag = .uimm, .adjust = adjust }, .base = base, .imm = @bitCast(imm) };
4366750617 }
4366850618
4366950619 fn rm(mode: bits.RoundMode) Select.Operand {
43670 return .{ .tag = .uimm, .imm = @intCast(mode.imm().unsigned) };
50620 return .{ .flags = .{ .tag = .uimm }, .imm = @intCast(mode.imm().unsigned) };
4367150621 }
4367250622 fn sp(pred: bits.SseFloatPredicate) Select.Operand {
43673 return .{ .tag = .uimm, .imm = @intCast(pred.imm().unsigned) };
50623 return .{ .flags = .{ .tag = .uimm }, .imm = @intCast(pred.imm().unsigned) };
4367450624 }
4367550625 fn vp(pred: bits.VexFloatPredicate) Select.Operand {
43676 return .{ .tag = .uimm, .imm = @intCast(pred.imm().unsigned) };
50626 return .{ .flags = .{ .tag = .uimm }, .imm = @intCast(pred.imm().unsigned) };
4367750627 }
4367850628
43679 fn lea(size: Memory.Size, base: Ref) Select.Operand {
50629 fn lea(base: Ref.Sized) Select.Operand {
4368050630 return .{
43681 .tag = .lea,
43682 .base = .{ .ref = base, .size = size },
50631 .flags = .{ .tag = .lea },
50632 .base = base,
4368350633 };
4368450634 }
43685 fn leaa(size: Memory.Size, base: Ref, adjust: Adjust) Select.Operand {
50635 fn leaa(base: Ref.Sized, adjust: Adjust) Select.Operand {
4368650636 return .{
43687 .tag = .lea,
43688 .base = .{ .ref = base, .size = size },
43689 .adjust = adjust,
50637 .flags = .{ .tag = .lea, .adjust = adjust },
50638 .base = base,
4369050639 };
4369150640 }
43692 fn lead(size: Memory.Size, base: Ref, disp: i32) Select.Operand {
50641 fn lead(base: Ref.Sized, disp: i32) Select.Operand {
4369350642 return .{
43694 .tag = .lea,
43695 .base = .{ .ref = base, .size = size },
50643 .flags = .{ .tag = .lea },
50644 .base = base,
4369650645 .imm = disp,
4369750646 };
4369850647 }
43699 fn leai(size: Memory.Size, base: Ref, index: Ref) Select.Operand {
50648 fn leai(base: Ref.Sized, index: Ref) Select.Operand {
4370050649 return .{
43701 .tag = .lea,
43702 .base = .{ .ref = base, .size = size },
43703 .index = .{ .ref = index, .scale = .@"1" },
50650 .flags = .{ .tag = .lea },
50651 .base = base,
50652 .index = .{ .ref = index },
4370450653 };
4370550654 }
43706 fn leaia(size: Memory.Size, base: Ref, index: Ref, adjust: Adjust) Select.Operand {
50655 fn leaia(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
4370750656 return .{
43708 .tag = .lea,
43709 .base = .{ .ref = base, .size = size },
43710 .index = .{ .ref = index, .scale = .@"1" },
43711 .adjust = adjust,
50657 .flags = .{ .tag = .lea, .adjust = adjust },
50658 .base = base,
50659 .index = .{ .ref = index },
4371250660 };
4371350661 }
43714 fn leaid(size: Memory.Size, base: Ref, index: Ref, disp: i32) Select.Operand {
50662 fn leaid(base: Ref.Sized, index: Ref, disp: i32) Select.Operand {
4371550663 return .{
43716 .tag = .lea,
43717 .base = .{ .ref = base, .size = size },
43718 .index = .{ .ref = index, .scale = .@"1" },
50664 .flags = .{ .tag = .lea },
50665 .base = base,
50666 .index = .{ .ref = index },
4371950667 .imm = disp,
4372050668 };
4372150669 }
43722 fn leasi(size: Memory.Size, base: Ref, scale: Memory.Scale, index: Ref) Select.Operand {
50670 fn leasi(base: Ref.Sized, scale: Memory.Scale, index: Ref) Select.Operand {
4372350671 return .{
43724 .tag = .lea,
43725 .base = .{ .ref = base, .size = size },
50672 .flags = .{ .tag = .lea },
50673 .base = base,
4372650674 .index = .{ .ref = index, .scale = scale },
4372750675 };
4372850676 }
43729 fn leasid(size: Memory.Size, base: Ref, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
50677 fn leasid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
4373050678 return .{
43731 .tag = .lea,
43732 .base = .{ .ref = base, .size = size },
50679 .flags = .{ .tag = .lea },
50680 .base = base,
4373350681 .index = .{ .ref = index, .scale = scale },
4373450682 .imm = disp,
4373550683 };
4373650684 }
43737 fn leasiad(size: Memory.Size, base: Ref, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
50685 fn leasiad(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
4373850686 return .{
43739 .tag = .lea,
43740 .base = .{ .ref = base, .size = size },
50687 .flags = .{ .tag = .lea, .adjust = adjust },
50688 .base = base,
4374150689 .index = .{ .ref = index, .scale = scale },
43742 .adjust = adjust,
4374350690 .imm = disp,
4374450691 };
4374550692 }
4374650693
4374750694 fn mem(base: Ref.Sized) Select.Operand {
4374850695 return .{
43749 .tag = .mem,
50696 .flags = .{ .tag = .mem },
4375050697 .base = base,
4375150698 };
4375250699 }
4375350700 fn memd(base: Ref.Sized, disp: i32) Select.Operand {
4375450701 return .{
43755 .tag = .mem,
50702 .flags = .{ .tag = .mem },
4375650703 .base = base,
4375750704 .imm = disp,
4375850705 };
4375950706 }
4376050707 fn mema(base: Ref.Sized, adjust: Adjust) Select.Operand {
4376150708 return .{
43762 .tag = .mem,
50709 .flags = .{ .tag = .mem, .adjust = adjust },
4376350710 .base = base,
43764 .adjust = adjust,
4376550711 };
4376650712 }
4376750713 fn memad(base: Ref.Sized, adjust: Adjust, disp: i32) Select.Operand {
4376850714 return .{
43769 .tag = .mem,
50715 .flags = .{ .tag = .mem, .adjust = adjust },
4377050716 .base = base,
43771 .adjust = adjust,
4377250717 .imm = disp,
4377350718 };
4377450719 }
4377550720 fn memi(base: Ref.Sized, index: Ref) Select.Operand {
4377650721 return .{
43777 .tag = .mem,
50722 .flags = .{ .tag = .mem },
4377850723 .base = base,
43779 .index = .{ .ref = index, .scale = .@"1" },
50724 .index = .{ .ref = index },
4378050725 };
4378150726 }
4378250727 fn memia(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
4378350728 return .{
43784 .tag = .mem,
50729 .flags = .{ .tag = .mem, .adjust = adjust },
4378550730 .base = base,
43786 .index = .{ .ref = index, .scale = .@"1" },
43787 .adjust = adjust,
50731 .index = .{ .ref = index },
4378850732 };
4378950733 }
4379050734 fn memiad(base: Ref.Sized, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
4379150735 return .{
43792 .tag = .mem,
50736 .flags = .{ .tag = .mem, .adjust = adjust },
4379350737 .base = base,
43794 .index = .{ .ref = index, .scale = .@"1" },
43795 .adjust = adjust,
50738 .index = .{ .ref = index },
4379650739 .imm = disp,
4379750740 };
4379850741 }
4379950742 fn memid(base: Ref.Sized, index: Ref, disp: i32) Select.Operand {
4380050743 return .{
43801 .tag = .mem,
50744 .flags = .{ .tag = .mem },
4380250745 .base = base,
43803 .index = .{ .ref = index, .scale = .@"1" },
50746 .index = .{ .ref = index },
4380450747 .imm = disp,
4380550748 };
4380650749 }
4380750750 fn memsi(base: Ref.Sized, scale: Memory.Scale, index: Ref) Select.Operand {
4380850751 return .{
43809 .tag = .mem,
50752 .flags = .{ .tag = .mem },
4381050753 .base = base,
4381150754 .index = .{ .ref = index, .scale = scale },
4381250755 };
4381350756 }
4381450757 fn memsia(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust) Select.Operand {
4381550758 return .{
43816 .tag = .mem,
50759 .flags = .{ .tag = .mem, .adjust = adjust },
4381750760 .base = base,
4381850761 .index = .{ .ref = index, .scale = scale },
43819 .adjust = adjust,
4382050762 };
4382150763 }
4382250764 fn memsid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
4382350765 return .{
43824 .tag = .mem,
50766 .flags = .{ .tag = .mem },
4382550767 .base = base,
4382650768 .index = .{ .ref = index, .scale = scale },
4382750769 .imm = disp,
......@@ -43829,10 +50771,9 @@ const Select = struct {
4382950771 }
4383050772 fn memsiad(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
4383150773 return .{
43832 .tag = .mem,
50774 .flags = .{ .tag = .mem, .adjust = adjust },
4383350775 .base = base,
4383450776 .index = .{ .ref = index, .scale = scale },
43835 .adjust = adjust,
4383650777 .imm = disp,
4383750778 };
4383850779 }
......@@ -43841,16 +50782,20 @@ const Select = struct {
4384150782 const UnsignedImm = @Type(.{
4384250783 .int = .{ .signedness = .unsigned, .bits = @typeInfo(SignedImm).int.bits },
4384350784 });
43844 const lhs: SignedImm = lhs: switch (op.adjust.lhs) {
50785 const lhs: SignedImm = lhs: switch (op.flags.adjust.lhs) {
4384550786 .none => 0,
4384650787 .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),
4384750788 .ptr_bit_size => s.cg.target.ptrBitWidth(),
4384850789 .size => @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)),
50790 .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu))) -
50791 @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)))),
50792 .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))) -
50793 @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)))),
4384950794 .size_sub_elem_size => {
4385050795 const ty = op.base.ref.deref(s).typeOf(s.cg);
4385150796 break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));
4385250797 },
43853 .src0_unaligned_size => @intCast(s.cg.unalignedSize(Select.Operand.Ref.src0.deref(s).typeOf(s.cg))),
50798 .unaligned_size => @intCast(s.cg.unalignedSize(op.base.ref.deref(s).typeOf(s.cg))),
4385450799 .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),
4385550800 .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),
4385650801 .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)),
......@@ -43858,6 +50803,7 @@ const Select = struct {
4385850803 op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu),
4385950804 @divExact(op.base.size.bitSize(s.cg.target), 8),
4386050805 )),
50806 .elem_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),
4386150807 .src0_elem_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),
4386250808 .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) *
4386350809 Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.immediate),
......@@ -43872,8 +50818,8 @@ const Select = struct {
4387250818 -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
4387350819 )),
4387450820 };
43875 const rhs = op.adjust.rhs.toLog2();
43876 const res = res: switch (op.adjust.op) {
50821 const rhs = op.flags.adjust.rhs.toLog2();
50822 const res = res: switch (op.flags.adjust.op) {
4387750823 .mul => {
4387850824 const res = @shlWithOverflow(lhs, rhs);
4387950825 assert(res[1] == 0);
......@@ -43881,14 +50827,14 @@ const Select = struct {
4388150827 },
4388250828 .div => @shrExact(lhs, rhs),
4388350829 };
43884 return switch (op.adjust.sign) {
50830 return switch (op.flags.adjust.sign) {
4388550831 .neg => op.imm - res,
4388650832 .pos => op.imm + res,
4388750833 };
4388850834 }
4388950835
4389050836 fn lower(op: Select.Operand, s: *Select) !CodeGen.Operand {
43891 return switch (op.tag) {
50837 return switch (op.flags.tag) {
4389250838 .none => .none,
4389350839 .backward_label => .{ .inst = s.labels[@intFromEnum(op.base.ref)].backward.? },
4389450840 .forward_label => for (&s.labels[@intFromEnum(op.base.ref)].forward) |*label| {
......@@ -43945,11 +50891,11 @@ fn select(
4394550891 @setEvalBranchQuota(33_600);
4394650892 cases: for (cases) |case| {
4394750893 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;
43948 for (case.dst_constraints[0..dst_temps.len], dst_tys) |dst_constraint, dst_ty| if (!dst_constraint.accepts(dst_ty, cg)) continue :cases;
4394950894 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;
50895 for (case.dst_constraints[0..dst_temps.len], dst_tys) |dst_constraint, dst_ty| if (!dst_constraint.accepts(dst_ty, cg)) continue :cases;
4395050896 if (std.debug.runtime_safety) {
43951 for (case.dst_constraints[dst_temps.len..]) |dst_constraint| assert(dst_constraint == .any);
4395250897 for (case.src_constraints[src_temps.len..]) |src_constraint| assert(src_constraint == .any);
50898 for (case.dst_constraints[dst_temps.len..]) |dst_constraint| assert(dst_constraint == .any);
4395350899 }
4395450900 patterns: for (case.patterns) |pattern| {
4395550901 for (pattern.src[0..src_temps.len], src_temps) |src_pattern, src_temp| if (!src_pattern.matches(src_temp, cg)) continue :patterns;
src/codegen/c.zig+1-43
......@@ -3325,7 +3325,6 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,
33253325 .bitcast => try airBitcast(f, inst),
33263326 .intcast => try airIntCast(f, inst),
33273327 .trunc => try airTrunc(f, inst),
3328 .int_from_bool => try airIntFromBool(f, inst),
33293328 .load => try airLoad(f, inst),
33303329 .store => try airStore(f, inst, false),
33313330 .store_safe => try airStore(f, inst, true),
......@@ -3371,8 +3370,6 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,
33713370 .fpext,
33723371 => try airFloatCast(f, inst),
33733372
3374 .int_from_ptr => try airIntFromPtr(f, inst),
3375
33763373 .atomic_store_unordered => try airAtomicStore(f, inst, toMemoryOrder(.unordered)),
33773374 .atomic_store_monotonic => try airAtomicStore(f, inst, toMemoryOrder(.monotonic)),
33783375 .atomic_store_release => try airAtomicStore(f, inst, toMemoryOrder(.release)),
......@@ -3983,21 +3980,6 @@ fn airTrunc(f: *Function, inst: Air.Inst.Index) !CValue {
39833980 return local;
39843981}
39853982
3986fn airIntFromBool(f: *Function, inst: Air.Inst.Index) !CValue {
3987 const un_op = f.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
3988 const operand = try f.resolveInst(un_op);
3989 try reap(f, inst, &.{un_op});
3990 const writer = f.object.writer();
3991 const inst_ty = f.typeOfIndex(inst);
3992 const local = try f.allocLocal(inst, inst_ty);
3993 const a = try Assignment.start(f, writer, try f.ctypeFromType(inst_ty, .complete));
3994 try f.writeCValue(writer, local, .Other);
3995 try a.assign(f, writer);
3996 try f.writeCValue(writer, operand, .Other);
3997 try a.end(f, writer);
3998 return local;
3999}
4000
40013983fn airStore(f: *Function, inst: Air.Inst.Index, safety: bool) !CValue {
40023984 const pt = f.object.dg.pt;
40033985 const zcu = pt.zcu;
......@@ -4970,7 +4952,7 @@ fn bitcast(f: *Function, dest_ty: Type, operand: CValue, operand_ty: Type) !CVal
49704952 src_info.bits == dest_info.bits) return operand;
49714953 }
49724954
4973 if (dest_ty.isPtrAtRuntime(zcu) and operand_ty.isPtrAtRuntime(zcu)) {
4955 if (dest_ty.isPtrAtRuntime(zcu) or operand_ty.isPtrAtRuntime(zcu)) {
49744956 const local = try f.allocLocal(null, dest_ty);
49754957 try f.writeCValue(writer, local, .Other);
49764958 try writer.writeAll(" = (");
......@@ -6455,30 +6437,6 @@ fn airFloatCast(f: *Function, inst: Air.Inst.Index) !CValue {
64556437 return local;
64566438}
64576439
6458fn airIntFromPtr(f: *Function, inst: Air.Inst.Index) !CValue {
6459 const pt = f.object.dg.pt;
6460 const zcu = pt.zcu;
6461 const un_op = f.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
6462
6463 const operand = try f.resolveInst(un_op);
6464 const operand_ty = f.typeOf(un_op);
6465 try reap(f, inst, &.{un_op});
6466 const inst_ty = f.typeOfIndex(inst);
6467 const writer = f.object.writer();
6468 const local = try f.allocLocal(inst, inst_ty);
6469 try f.writeCValue(writer, local, .Other);
6470
6471 try writer.writeAll(" = (");
6472 try f.renderType(writer, inst_ty);
6473 try writer.writeByte(')');
6474 if (operand_ty.isSlice(zcu))
6475 try f.writeCValueMember(writer, operand, .{ .identifier = "ptr" })
6476 else
6477 try f.writeCValue(writer, operand, .Other);
6478 try writer.writeAll(";\n");
6479 return local;
6480}
6481
64826440fn airUnBuiltinCall(
64836441 f: *Function,
64846442 inst: Air.Inst.Index,
src/codegen/c/Type.zig+15
......@@ -1707,6 +1707,21 @@ pub const Pool = struct {
17071707 };
17081708 return pool.fromFields(allocator, .@"struct", &fields, kind);
17091709 },
1710 .vector_2_f32_type => {
1711 const vector_ctype = try pool.getVector(allocator, .{
1712 .elem_ctype = .f32,
1713 .len = 2,
1714 });
1715 if (!kind.isParameter()) return vector_ctype;
1716 var fields = [_]Info.Field{
1717 .{
1718 .name = .{ .index = .array },
1719 .ctype = vector_ctype,
1720 .alignas = AlignAs.fromAbiAlignment(Type.f32.abiAlignment(zcu)),
1721 },
1722 };
1723 return pool.fromFields(allocator, .@"struct", &fields, kind);
1724 },
17101725 .vector_4_f32_type => {
17111726 const vector_ctype = try pool.getVector(allocator, .{
17121727 .elem_ctype = .f32,
src/codegen/llvm.zig+4-18
......@@ -5154,7 +5154,6 @@ pub const FuncGen = struct {
51545154 .ret_ptr => try self.airRetPtr(inst),
51555155 .arg => try self.airArg(inst),
51565156 .bitcast => try self.airBitCast(inst),
5157 .int_from_bool => try self.airIntFromBool(inst),
51585157 .breakpoint => try self.airBreakpoint(inst),
51595158 .ret_addr => try self.airRetAddr(inst),
51605159 .frame_addr => try self.airFrameAddress(inst),
......@@ -5167,7 +5166,6 @@ pub const FuncGen = struct {
51675166 .trunc => try self.airTrunc(inst),
51685167 .fptrunc => try self.airFptrunc(inst),
51695168 .fpext => try self.airFpext(inst),
5170 .int_from_ptr => try self.airIntFromPtr(inst),
51715169 .load => try self.airLoad(body[i..]),
51725170 .not => try self.airNot(inst),
51735171 .store => try self.airStore(inst, false),
......@@ -9435,16 +9433,6 @@ pub const FuncGen = struct {
94359433 }
94369434 }
94379435
9438 fn airIntFromPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
9439 const o = self.ng.object;
9440 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
9441 const operand = try self.resolveInst(un_op);
9442 const ptr_ty = self.typeOf(un_op);
9443 const operand_ptr = try self.sliceOrArrayPtr(operand, ptr_ty);
9444 const dest_llvm_ty = try o.lowerType(self.typeOfIndex(inst));
9445 return self.wip.cast(.ptrtoint, operand_ptr, dest_llvm_ty, "");
9446 }
9447
94489436 fn airBitCast(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
94499437 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
94509438 const operand_ty = self.typeOf(ty_op.operand);
......@@ -9476,6 +9464,10 @@ pub const FuncGen = struct {
94769464 return self.wip.cast(.inttoptr, operand, llvm_dest_ty, "");
94779465 }
94789466
9467 if (operand_ty.isPtrAtRuntime(zcu) and inst_ty.zigTypeTag(zcu) == .int) {
9468 return self.wip.cast(.ptrtoint, operand, llvm_dest_ty, "");
9469 }
9470
94799471 if (operand_ty.zigTypeTag(zcu) == .vector and inst_ty.zigTypeTag(zcu) == .array) {
94809472 const elem_ty = operand_ty.childType(zcu);
94819473 if (!result_is_ref) {
......@@ -9564,12 +9556,6 @@ pub const FuncGen = struct {
95649556 return self.wip.cast(.bitcast, operand, llvm_dest_ty, "");
95659557 }
95669558
9567 fn airIntFromBool(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
9568 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
9569 const operand = try self.resolveInst(un_op);
9570 return operand;
9571 }
9572
95739559 fn airArg(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
95749560 const o = self.ng.object;
95759561 const pt = o.pt;
src/codegen/spirv.zig+6-16
......@@ -3449,10 +3449,8 @@ const NavGen = struct {
34493449
34503450 .bitcast => try self.airBitCast(inst),
34513451 .intcast, .trunc => try self.airIntCast(inst),
3452 .int_from_ptr => try self.airIntFromPtr(inst),
34533452 .float_from_int => try self.airFloatFromInt(inst),
34543453 .int_from_float => try self.airIntFromFloat(inst),
3455 .int_from_bool => try self.airIntFromBool(inst),
34563454 .fpext, .fptrunc => try self.airFloatCast(inst),
34573455 .not => try self.airNot(inst),
34583456
......@@ -4706,9 +4704,14 @@ const NavGen = struct {
47064704
47074705 fn airBitCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
47084706 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
4709 const operand_id = try self.resolve(ty_op.operand);
47104707 const operand_ty = self.typeOf(ty_op.operand);
47114708 const result_ty = self.typeOfIndex(inst);
4709 if (operand_ty.toIntern() == .bool_type) {
4710 const operand = try self.temporary(ty_op.operand);
4711 const result = try self.intFromBool(operand);
4712 return try result.materialize(self);
4713 }
4714 const operand_id = try self.resolve(ty_op.operand);
47124715 return try self.bitCast(result_ty, operand_ty, operand_id);
47134716 }
47144717
......@@ -4749,12 +4752,6 @@ const NavGen = struct {
47494752 return result_id;
47504753 }
47514754
4752 fn airIntFromPtr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4753 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
4754 const operand_id = try self.resolve(un_op);
4755 return try self.intFromPtr(operand_id);
4756 }
4757
47584755 fn airFloatFromInt(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
47594756 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
47604757 const operand_ty = self.typeOf(ty_op.operand);
......@@ -4808,13 +4805,6 @@ const NavGen = struct {
48084805 return result_id;
48094806 }
48104807
4811 fn airIntFromBool(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4812 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
4813 const operand = try self.temporary(un_op);
4814 const result = try self.intFromBool(operand);
4815 return try result.materialize(self);
4816 }
4817
48184808 fn airFloatCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
48194809 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
48204810 const operand_id = try self.resolve(ty_op.operand);
src/print_air.zig-2
......@@ -172,8 +172,6 @@ const Writer = struct {
172172 .is_non_err,
173173 .is_err_ptr,
174174 .is_non_err_ptr,
175 .int_from_ptr,
176 .int_from_bool,
177175 .ret,
178176 .ret_safe,
179177 .ret_load,
src/target.zig+3
......@@ -745,5 +745,8 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt
745745 .stage2_llvm => false,
746746 else => true,
747747 },
748 .all_vector_instructions => switch (backend) {
749 else => false,
750 },
748751 };
749752}
test/behavior/maximum_minimum.zig+3-4
......@@ -203,8 +203,8 @@ test "@min/@max notices vector bounds" {
203203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
204204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
205205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
207206 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
207 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
208208
209209 var x: @Vector(2, u16) = .{ 140, 40 };
210210 const y: @Vector(2, u64) = .{ 5, 100 };
......@@ -257,8 +257,8 @@ test "@min/@max notices bounds from vector types" {
257257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
258258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
259259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
261260 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
262262
263263 var x: @Vector(2, u16) = .{ 30, 67 };
264264 var y: @Vector(2, u32) = .{ 20, 500 };
......@@ -301,8 +301,7 @@ test "@min/@max notices bounds from vector types when element of comptime-known
301301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
302302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
303303 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
304 if (builtin.zig_backend == .stage2_x86_64 and
305 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
304 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
306305
307306 var x: @Vector(2, u32) = .{ 1_000_000, 12345 };
308307 _ = &x;
test/behavior/x86_64/math.zig+6749-1198
......@@ -24,27 +24,32 @@ inline fn runtime(comptime Type: type, comptime value: Type) Type {
2424 }.variable;
2525}
2626
27fn Scalar(comptime Type: type) type {
28 return switch (@typeInfo(Type)) {
29 else => Type,
30 .vector => |info| info.child,
31 };
32}
33// inline to avoid a runtime `@splat`
34inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
35 return switch (@typeInfo(Type)) {
36 else => scalar,
37 .vector => @splat(scalar),
38 };
39}
2740fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {
2841 else => bool,
2942 .vector => |vector| @Vector(vector.len, bool),
3043} {
31 switch (@typeInfo(@TypeOf(rhs))) {
32 else => {
33 const I = @Type(.{ .int = .{
34 .signedness = .unsigned,
35 .bits = @bitSizeOf(@TypeOf(rhs)),
36 } });
37 return @as(I, @bitCast(rhs)) & @as(I, 1) << (@bitSizeOf(I) - 1) != 0;
38 },
39 .vector => |vector| {
40 const I = @Type(.{ .int = .{
41 .signedness = .unsigned,
42 .bits = @bitSizeOf(vector.child),
43 } });
44 const V = @Vector(vector.len, I);
45 return @as(V, @bitCast(rhs)) & @as(V, @splat(@as(I, 1) << (@bitSizeOf(I) - 1))) != @as(V, @splat(0));
46 },
47 }
44 const ScalarInt = @Type(.{ .int = .{
45 .signedness = .unsigned,
46 .bits = @bitSizeOf(Scalar(@TypeOf(rhs))),
47 } });
48 const VectorInt = switch (@typeInfo(@TypeOf(rhs))) {
49 else => ScalarInt,
50 .vector => |vector| @Vector(vector.len, ScalarInt),
51 };
52 return @as(VectorInt, @bitCast(rhs)) & splat(VectorInt, @as(ScalarInt, 1) << @bitSizeOf(ScalarInt) - 1) != splat(VectorInt, 0);
4853}
4954fn boolAnd(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
5055 switch (@typeInfo(@TypeOf(lhs))) {
......@@ -650,18 +655,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
650655 try testArgs(f16, -nan(f16));
651656 try testArgs(f16, -inf(f16));
652657 try testArgs(f16, -fmax(f16));
653 try testArgs(f16, -10.0);
654 try testArgs(f16, -1.0);
655 try testArgs(f16, -0.1);
658 try testArgs(f16, -1e1);
659 try testArgs(f16, -1e0);
660 try testArgs(f16, -1e-1);
656661 try testArgs(f16, -fmin(f16));
657662 try testArgs(f16, -tmin(f16));
658663 try testArgs(f16, -0.0);
659664 try testArgs(f16, 0.0);
660665 try testArgs(f16, tmin(f16));
661666 try testArgs(f16, fmin(f16));
662 try testArgs(f16, 0.1);
663 try testArgs(f16, 1.0);
664 try testArgs(f16, 10.0);
667 try testArgs(f16, 1e-1);
668 try testArgs(f16, 1e0);
669 try testArgs(f16, 1e1);
665670 try testArgs(f16, fmax(f16));
666671 try testArgs(f16, inf(f16));
667672 try testArgs(f16, nan(f16));
......@@ -669,18 +674,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
669674 try testArgs(f32, -nan(f32));
670675 try testArgs(f32, -inf(f32));
671676 try testArgs(f32, -fmax(f32));
672 try testArgs(f32, -10.0);
673 try testArgs(f32, -1.0);
674 try testArgs(f32, -0.1);
677 try testArgs(f32, -1e1);
678 try testArgs(f32, -1e0);
679 try testArgs(f32, -1e-1);
675680 try testArgs(f32, -fmin(f32));
676681 try testArgs(f32, -tmin(f32));
677682 try testArgs(f32, -0.0);
678683 try testArgs(f32, 0.0);
679684 try testArgs(f32, tmin(f32));
680685 try testArgs(f32, fmin(f32));
681 try testArgs(f32, 0.1);
682 try testArgs(f32, 1.0);
683 try testArgs(f32, 10.0);
686 try testArgs(f32, 1e-1);
687 try testArgs(f32, 1e0);
688 try testArgs(f32, 1e1);
684689 try testArgs(f32, fmax(f32));
685690 try testArgs(f32, inf(f32));
686691 try testArgs(f32, nan(f32));
......@@ -688,18 +693,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
688693 try testArgs(f64, -nan(f64));
689694 try testArgs(f64, -inf(f64));
690695 try testArgs(f64, -fmax(f64));
691 try testArgs(f64, -10.0);
692 try testArgs(f64, -1.0);
693 try testArgs(f64, -0.1);
696 try testArgs(f64, -1e1);
697 try testArgs(f64, -1e0);
698 try testArgs(f64, -1e-1);
694699 try testArgs(f64, -fmin(f64));
695700 try testArgs(f64, -tmin(f64));
696701 try testArgs(f64, -0.0);
697702 try testArgs(f64, 0.0);
698703 try testArgs(f64, tmin(f64));
699704 try testArgs(f64, fmin(f64));
700 try testArgs(f64, 0.1);
701 try testArgs(f64, 1.0);
702 try testArgs(f64, 10.0);
705 try testArgs(f64, 1e-1);
706 try testArgs(f64, 1e0);
707 try testArgs(f64, 1e1);
703708 try testArgs(f64, fmax(f64));
704709 try testArgs(f64, inf(f64));
705710 try testArgs(f64, nan(f64));
......@@ -707,18 +712,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
707712 try testArgs(f80, -nan(f80));
708713 try testArgs(f80, -inf(f80));
709714 try testArgs(f80, -fmax(f80));
710 try testArgs(f80, -10.0);
711 try testArgs(f80, -1.0);
712 try testArgs(f80, -0.1);
715 try testArgs(f80, -1e1);
716 try testArgs(f80, -1e0);
717 try testArgs(f80, -1e-1);
713718 try testArgs(f80, -fmin(f80));
714719 try testArgs(f80, -tmin(f80));
715720 try testArgs(f80, -0.0);
716721 try testArgs(f80, 0.0);
717722 try testArgs(f80, tmin(f80));
718723 try testArgs(f80, fmin(f80));
719 try testArgs(f80, 0.1);
720 try testArgs(f80, 1.0);
721 try testArgs(f80, 10.0);
724 try testArgs(f80, 1e-1);
725 try testArgs(f80, 1e0);
726 try testArgs(f80, 1e1);
722727 try testArgs(f80, fmax(f80));
723728 try testArgs(f80, inf(f80));
724729 try testArgs(f80, nan(f80));
......@@ -726,18 +731,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
726731 try testArgs(f128, -nan(f128));
727732 try testArgs(f128, -inf(f128));
728733 try testArgs(f128, -fmax(f128));
729 try testArgs(f128, -10.0);
730 try testArgs(f128, -1.0);
731 try testArgs(f128, -0.1);
734 try testArgs(f128, -1e1);
735 try testArgs(f128, -1e0);
736 try testArgs(f128, -1e-1);
732737 try testArgs(f128, -fmin(f128));
733738 try testArgs(f128, -tmin(f128));
734739 try testArgs(f128, -0.0);
735740 try testArgs(f128, 0.0);
736741 try testArgs(f128, tmin(f128));
737742 try testArgs(f128, fmin(f128));
738 try testArgs(f128, 0.1);
739 try testArgs(f128, 1.0);
740 try testArgs(f128, 10.0);
743 try testArgs(f128, 1e-1);
744 try testArgs(f128, 1e0);
745 try testArgs(f128, 1e1);
741746 try testArgs(f128, fmax(f128));
742747 try testArgs(f128, inf(f128));
743748 try testArgs(f128, nan(f128));
......@@ -1623,6 +1628,5493 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
16231628 };
16241629}
16251630
1631fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
1632 return struct {
1633 // noinline so that `mem_arg` is on the stack
1634 noinline fn testArgKinds(
1635 _: Gpr,
1636 _: Gpr,
1637 _: Gpr,
1638 _: Gpr,
1639 _: Gpr,
1640 _: Gpr,
1641 _: Gpr,
1642 _: Gpr,
1643 _: Sse,
1644 _: Sse,
1645 _: Sse,
1646 _: Sse,
1647 _: Sse,
1648 _: Sse,
1649 _: Sse,
1650 _: Sse,
1651 comptime Result: type,
1652 comptime Type: type,
1653 comptime imm_arg: Type,
1654 mem_arg: Type,
1655 ) !void {
1656 const expected = comptime op(Result, Type, imm_arg, imm_arg);
1657 var reg_arg = mem_arg;
1658 _ = .{&reg_arg};
1659 try checkExpected(expected, op(Result, Type, reg_arg, imm_arg), opts.strict);
1660 try checkExpected(expected, op(Result, Type, mem_arg, imm_arg), opts.strict);
1661 try checkExpected(expected, op(Result, Type, imm_arg, imm_arg), opts.strict);
1662 }
1663 // noinline for a more helpful stack trace
1664 noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void {
1665 try testArgKinds(
1666 undefined,
1667 undefined,
1668 undefined,
1669 undefined,
1670 undefined,
1671 undefined,
1672 undefined,
1673 undefined,
1674 undefined,
1675 undefined,
1676 undefined,
1677 undefined,
1678 undefined,
1679 undefined,
1680 undefined,
1681 undefined,
1682 Result,
1683 Type,
1684 imm_arg,
1685 imm_arg,
1686 );
1687 }
1688 fn testSameSignednessInts() !void {
1689 try testArgs(i8, i1, -1);
1690 try testArgs(i8, i1, 0);
1691 try testArgs(i16, i1, -1);
1692 try testArgs(i16, i1, 0);
1693 try testArgs(i32, i1, -1);
1694 try testArgs(i32, i1, 0);
1695 try testArgs(i64, i1, -1);
1696 try testArgs(i64, i1, 0);
1697 try testArgs(i128, i1, -1);
1698 try testArgs(i128, i1, 0);
1699 try testArgs(i256, i1, -1);
1700 try testArgs(i256, i1, 0);
1701 try testArgs(i512, i1, -1);
1702 try testArgs(i512, i1, 0);
1703 try testArgs(i1024, i1, -1);
1704 try testArgs(i1024, i1, 0);
1705 try testArgs(u8, u1, 0);
1706 try testArgs(u8, u1, 1 << 0);
1707 try testArgs(u16, u1, 0);
1708 try testArgs(u16, u1, 1 << 0);
1709 try testArgs(u32, u1, 0);
1710 try testArgs(u32, u1, 1 << 0);
1711 try testArgs(u64, u1, 0);
1712 try testArgs(u64, u1, 1 << 0);
1713 try testArgs(u128, u1, 0);
1714 try testArgs(u128, u1, 1 << 0);
1715 try testArgs(u256, u1, 0);
1716 try testArgs(u256, u1, 1 << 0);
1717 try testArgs(u512, u1, 0);
1718 try testArgs(u512, u1, 1 << 0);
1719 try testArgs(u1024, u1, 0);
1720 try testArgs(u1024, u1, 1 << 0);
1721
1722 try testArgs(i8, i2, -1 << 1);
1723 try testArgs(i8, i2, -1);
1724 try testArgs(i8, i2, 0);
1725 try testArgs(i16, i2, -1 << 1);
1726 try testArgs(i16, i2, -1);
1727 try testArgs(i16, i2, 0);
1728 try testArgs(i32, i2, -1 << 1);
1729 try testArgs(i32, i2, -1);
1730 try testArgs(i32, i2, 0);
1731 try testArgs(i64, i2, -1 << 1);
1732 try testArgs(i64, i2, -1);
1733 try testArgs(i64, i2, 0);
1734 try testArgs(i128, i2, -1 << 1);
1735 try testArgs(i128, i2, -1);
1736 try testArgs(i128, i2, 0);
1737 try testArgs(i256, i2, -1 << 1);
1738 try testArgs(i256, i2, -1);
1739 try testArgs(i256, i2, 0);
1740 try testArgs(i512, i2, -1 << 1);
1741 try testArgs(i512, i2, -1);
1742 try testArgs(i512, i2, 0);
1743 try testArgs(i1024, i2, -1 << 1);
1744 try testArgs(i1024, i2, -1);
1745 try testArgs(i1024, i2, 0);
1746 try testArgs(u8, u2, 0);
1747 try testArgs(u8, u2, 1 << 0);
1748 try testArgs(u8, u2, 1 << 1);
1749 try testArgs(u16, u2, 0);
1750 try testArgs(u16, u2, 1 << 0);
1751 try testArgs(u16, u2, 1 << 1);
1752 try testArgs(u32, u2, 0);
1753 try testArgs(u32, u2, 1 << 0);
1754 try testArgs(u32, u2, 1 << 1);
1755 try testArgs(u64, u2, 0);
1756 try testArgs(u64, u2, 1 << 0);
1757 try testArgs(u64, u2, 1 << 1);
1758 try testArgs(u128, u2, 0);
1759 try testArgs(u128, u2, 1 << 0);
1760 try testArgs(u128, u2, 1 << 1);
1761 try testArgs(u256, u2, 0);
1762 try testArgs(u256, u2, 1 << 0);
1763 try testArgs(u256, u2, 1 << 1);
1764 try testArgs(u512, u2, 0);
1765 try testArgs(u512, u2, 1 << 0);
1766 try testArgs(u512, u2, 1 << 1);
1767 try testArgs(u1024, u2, 0);
1768 try testArgs(u1024, u2, 1 << 0);
1769 try testArgs(u1024, u2, 1 << 1);
1770
1771 try testArgs(i8, i3, -1 << 2);
1772 try testArgs(i8, i3, -1);
1773 try testArgs(i8, i3, 0);
1774 try testArgs(i16, i3, -1 << 2);
1775 try testArgs(i16, i3, -1);
1776 try testArgs(i16, i3, 0);
1777 try testArgs(i32, i3, -1 << 2);
1778 try testArgs(i32, i3, -1);
1779 try testArgs(i32, i3, 0);
1780 try testArgs(i64, i3, -1 << 2);
1781 try testArgs(i64, i3, -1);
1782 try testArgs(i64, i3, 0);
1783 try testArgs(i128, i3, -1 << 2);
1784 try testArgs(i128, i3, -1);
1785 try testArgs(i128, i3, 0);
1786 try testArgs(i256, i3, -1 << 2);
1787 try testArgs(i256, i3, -1);
1788 try testArgs(i256, i3, 0);
1789 try testArgs(i512, i3, -1 << 2);
1790 try testArgs(i512, i3, -1);
1791 try testArgs(i512, i3, 0);
1792 try testArgs(i1024, i3, -1 << 2);
1793 try testArgs(i1024, i3, -1);
1794 try testArgs(i1024, i3, 0);
1795 try testArgs(u8, u3, 0);
1796 try testArgs(u8, u3, 1 << 0);
1797 try testArgs(u8, u3, 1 << 2);
1798 try testArgs(u16, u3, 0);
1799 try testArgs(u16, u3, 1 << 0);
1800 try testArgs(u16, u3, 1 << 2);
1801 try testArgs(u32, u3, 0);
1802 try testArgs(u32, u3, 1 << 0);
1803 try testArgs(u32, u3, 1 << 2);
1804 try testArgs(u64, u3, 0);
1805 try testArgs(u64, u3, 1 << 0);
1806 try testArgs(u64, u3, 1 << 2);
1807 try testArgs(u128, u3, 0);
1808 try testArgs(u128, u3, 1 << 0);
1809 try testArgs(u128, u3, 1 << 2);
1810 try testArgs(u256, u3, 0);
1811 try testArgs(u256, u3, 1 << 0);
1812 try testArgs(u256, u3, 1 << 2);
1813 try testArgs(u512, u3, 0);
1814 try testArgs(u512, u3, 1 << 0);
1815 try testArgs(u512, u3, 1 << 2);
1816 try testArgs(u1024, u3, 0);
1817 try testArgs(u1024, u3, 1 << 0);
1818 try testArgs(u1024, u3, 1 << 2);
1819
1820 try testArgs(i8, i4, -1 << 3);
1821 try testArgs(i8, i4, -1);
1822 try testArgs(i8, i4, 0);
1823 try testArgs(i16, i4, -1 << 3);
1824 try testArgs(i16, i4, -1);
1825 try testArgs(i16, i4, 0);
1826 try testArgs(i32, i4, -1 << 3);
1827 try testArgs(i32, i4, -1);
1828 try testArgs(i32, i4, 0);
1829 try testArgs(i64, i4, -1 << 3);
1830 try testArgs(i64, i4, -1);
1831 try testArgs(i64, i4, 0);
1832 try testArgs(i128, i4, -1 << 3);
1833 try testArgs(i128, i4, -1);
1834 try testArgs(i128, i4, 0);
1835 try testArgs(i256, i4, -1 << 3);
1836 try testArgs(i256, i4, -1);
1837 try testArgs(i256, i4, 0);
1838 try testArgs(i512, i4, -1 << 3);
1839 try testArgs(i512, i4, -1);
1840 try testArgs(i512, i4, 0);
1841 try testArgs(i1024, i4, -1 << 3);
1842 try testArgs(i1024, i4, -1);
1843 try testArgs(i1024, i4, 0);
1844 try testArgs(u8, u4, 0);
1845 try testArgs(u8, u4, 1 << 0);
1846 try testArgs(u8, u4, 1 << 3);
1847 try testArgs(u16, u4, 0);
1848 try testArgs(u16, u4, 1 << 0);
1849 try testArgs(u16, u4, 1 << 3);
1850 try testArgs(u32, u4, 0);
1851 try testArgs(u32, u4, 1 << 0);
1852 try testArgs(u32, u4, 1 << 3);
1853 try testArgs(u64, u4, 0);
1854 try testArgs(u64, u4, 1 << 0);
1855 try testArgs(u64, u4, 1 << 3);
1856 try testArgs(u128, u4, 0);
1857 try testArgs(u128, u4, 1 << 0);
1858 try testArgs(u128, u4, 1 << 3);
1859 try testArgs(u256, u4, 0);
1860 try testArgs(u256, u4, 1 << 0);
1861 try testArgs(u256, u4, 1 << 3);
1862 try testArgs(u512, u4, 0);
1863 try testArgs(u512, u4, 1 << 0);
1864 try testArgs(u512, u4, 1 << 3);
1865 try testArgs(u1024, u4, 0);
1866 try testArgs(u1024, u4, 1 << 0);
1867 try testArgs(u1024, u4, 1 << 3);
1868
1869 try testArgs(i8, i5, -1 << 4);
1870 try testArgs(i8, i5, -1);
1871 try testArgs(i8, i5, 0);
1872 try testArgs(i16, i5, -1 << 4);
1873 try testArgs(i16, i5, -1);
1874 try testArgs(i16, i5, 0);
1875 try testArgs(i32, i5, -1 << 4);
1876 try testArgs(i32, i5, -1);
1877 try testArgs(i32, i5, 0);
1878 try testArgs(i64, i5, -1 << 4);
1879 try testArgs(i64, i5, -1);
1880 try testArgs(i64, i5, 0);
1881 try testArgs(i128, i5, -1 << 4);
1882 try testArgs(i128, i5, -1);
1883 try testArgs(i128, i5, 0);
1884 try testArgs(i256, i5, -1 << 4);
1885 try testArgs(i256, i5, -1);
1886 try testArgs(i256, i5, 0);
1887 try testArgs(i512, i5, -1 << 4);
1888 try testArgs(i512, i5, -1);
1889 try testArgs(i512, i5, 0);
1890 try testArgs(i1024, i5, -1 << 4);
1891 try testArgs(i1024, i5, -1);
1892 try testArgs(i1024, i5, 0);
1893 try testArgs(u8, u5, 0);
1894 try testArgs(u8, u5, 1 << 0);
1895 try testArgs(u8, u5, 1 << 4);
1896 try testArgs(u16, u5, 0);
1897 try testArgs(u16, u5, 1 << 0);
1898 try testArgs(u16, u5, 1 << 4);
1899 try testArgs(u32, u5, 0);
1900 try testArgs(u32, u5, 1 << 0);
1901 try testArgs(u32, u5, 1 << 4);
1902 try testArgs(u64, u5, 0);
1903 try testArgs(u64, u5, 1 << 0);
1904 try testArgs(u64, u5, 1 << 4);
1905 try testArgs(u128, u5, 0);
1906 try testArgs(u128, u5, 1 << 0);
1907 try testArgs(u128, u5, 1 << 4);
1908 try testArgs(u256, u5, 0);
1909 try testArgs(u256, u5, 1 << 0);
1910 try testArgs(u256, u5, 1 << 4);
1911 try testArgs(u512, u5, 0);
1912 try testArgs(u512, u5, 1 << 0);
1913 try testArgs(u512, u5, 1 << 4);
1914 try testArgs(u1024, u5, 0);
1915 try testArgs(u1024, u5, 1 << 0);
1916 try testArgs(u1024, u5, 1 << 4);
1917
1918 try testArgs(i8, i7, -1 << 6);
1919 try testArgs(i8, i7, -1);
1920 try testArgs(i8, i7, 0);
1921 try testArgs(i16, i7, -1 << 6);
1922 try testArgs(i16, i7, -1);
1923 try testArgs(i16, i7, 0);
1924 try testArgs(i32, i7, -1 << 6);
1925 try testArgs(i32, i7, -1);
1926 try testArgs(i32, i7, 0);
1927 try testArgs(i64, i7, -1 << 6);
1928 try testArgs(i64, i7, -1);
1929 try testArgs(i64, i7, 0);
1930 try testArgs(i128, i7, -1 << 6);
1931 try testArgs(i128, i7, -1);
1932 try testArgs(i128, i7, 0);
1933 try testArgs(i256, i7, -1 << 6);
1934 try testArgs(i256, i7, -1);
1935 try testArgs(i256, i7, 0);
1936 try testArgs(i512, i7, -1 << 6);
1937 try testArgs(i512, i7, -1);
1938 try testArgs(i512, i7, 0);
1939 try testArgs(i1024, i7, -1 << 6);
1940 try testArgs(i1024, i7, -1);
1941 try testArgs(i1024, i7, 0);
1942 try testArgs(u8, u7, 0);
1943 try testArgs(u8, u7, 1 << 0);
1944 try testArgs(u8, u7, 1 << 6);
1945 try testArgs(u16, u7, 0);
1946 try testArgs(u16, u7, 1 << 0);
1947 try testArgs(u16, u7, 1 << 6);
1948 try testArgs(u32, u7, 0);
1949 try testArgs(u32, u7, 1 << 0);
1950 try testArgs(u32, u7, 1 << 6);
1951 try testArgs(u64, u7, 0);
1952 try testArgs(u64, u7, 1 << 0);
1953 try testArgs(u64, u7, 1 << 6);
1954 try testArgs(u128, u7, 0);
1955 try testArgs(u128, u7, 1 << 0);
1956 try testArgs(u128, u7, 1 << 6);
1957 try testArgs(u256, u7, 0);
1958 try testArgs(u256, u7, 1 << 0);
1959 try testArgs(u256, u7, 1 << 6);
1960 try testArgs(u512, u7, 0);
1961 try testArgs(u512, u7, 1 << 0);
1962 try testArgs(u512, u7, 1 << 6);
1963 try testArgs(u1024, u7, 0);
1964 try testArgs(u1024, u7, 1 << 0);
1965 try testArgs(u1024, u7, 1 << 6);
1966
1967 try testArgs(i8, i8, -1 << 7);
1968 try testArgs(i8, i8, -1);
1969 try testArgs(i8, i8, 0);
1970 try testArgs(i16, i8, -1 << 7);
1971 try testArgs(i16, i8, -1);
1972 try testArgs(i16, i8, 0);
1973 try testArgs(i32, i8, -1 << 7);
1974 try testArgs(i32, i8, -1);
1975 try testArgs(i32, i8, 0);
1976 try testArgs(i64, i8, -1 << 7);
1977 try testArgs(i64, i8, -1);
1978 try testArgs(i64, i8, 0);
1979 try testArgs(i128, i8, -1 << 7);
1980 try testArgs(i128, i8, -1);
1981 try testArgs(i128, i8, 0);
1982 try testArgs(i256, i8, -1 << 7);
1983 try testArgs(i256, i8, -1);
1984 try testArgs(i256, i8, 0);
1985 try testArgs(i512, i8, -1 << 7);
1986 try testArgs(i512, i8, -1);
1987 try testArgs(i512, i8, 0);
1988 try testArgs(i1024, i8, -1 << 7);
1989 try testArgs(i1024, i8, -1);
1990 try testArgs(i1024, i8, 0);
1991 try testArgs(u8, u8, 0);
1992 try testArgs(u8, u8, 1 << 0);
1993 try testArgs(u8, u8, 1 << 7);
1994 try testArgs(u16, u8, 0);
1995 try testArgs(u16, u8, 1 << 0);
1996 try testArgs(u16, u8, 1 << 7);
1997 try testArgs(u32, u8, 0);
1998 try testArgs(u32, u8, 1 << 0);
1999 try testArgs(u32, u8, 1 << 7);
2000 try testArgs(u64, u8, 0);
2001 try testArgs(u64, u8, 1 << 0);
2002 try testArgs(u64, u8, 1 << 7);
2003 try testArgs(u128, u8, 0);
2004 try testArgs(u128, u8, 1 << 0);
2005 try testArgs(u128, u8, 1 << 7);
2006 try testArgs(u256, u8, 0);
2007 try testArgs(u256, u8, 1 << 0);
2008 try testArgs(u256, u8, 1 << 7);
2009 try testArgs(u512, u8, 0);
2010 try testArgs(u512, u8, 1 << 0);
2011 try testArgs(u512, u8, 1 << 7);
2012 try testArgs(u1024, u8, 0);
2013 try testArgs(u1024, u8, 1 << 0);
2014 try testArgs(u1024, u8, 1 << 7);
2015
2016 try testArgs(i8, i9, -1 << 8);
2017 try testArgs(i8, i9, -1);
2018 try testArgs(i8, i9, 0);
2019 try testArgs(i16, i9, -1 << 8);
2020 try testArgs(i16, i9, -1);
2021 try testArgs(i16, i9, 0);
2022 try testArgs(i32, i9, -1 << 8);
2023 try testArgs(i32, i9, -1);
2024 try testArgs(i32, i9, 0);
2025 try testArgs(i64, i9, -1 << 8);
2026 try testArgs(i64, i9, -1);
2027 try testArgs(i64, i9, 0);
2028 try testArgs(i128, i9, -1 << 8);
2029 try testArgs(i128, i9, -1);
2030 try testArgs(i128, i9, 0);
2031 try testArgs(i256, i9, -1 << 8);
2032 try testArgs(i256, i9, -1);
2033 try testArgs(i256, i9, 0);
2034 try testArgs(i512, i9, -1 << 8);
2035 try testArgs(i512, i9, -1);
2036 try testArgs(i512, i9, 0);
2037 try testArgs(i1024, i9, -1 << 8);
2038 try testArgs(i1024, i9, -1);
2039 try testArgs(i1024, i9, 0);
2040 try testArgs(u8, u9, 0);
2041 try testArgs(u8, u9, 1 << 0);
2042 try testArgs(u8, u9, 1 << 8);
2043 try testArgs(u16, u9, 0);
2044 try testArgs(u16, u9, 1 << 0);
2045 try testArgs(u16, u9, 1 << 8);
2046 try testArgs(u32, u9, 0);
2047 try testArgs(u32, u9, 1 << 0);
2048 try testArgs(u32, u9, 1 << 8);
2049 try testArgs(u64, u9, 0);
2050 try testArgs(u64, u9, 1 << 0);
2051 try testArgs(u64, u9, 1 << 8);
2052 try testArgs(u128, u9, 0);
2053 try testArgs(u128, u9, 1 << 0);
2054 try testArgs(u128, u9, 1 << 8);
2055 try testArgs(u256, u9, 0);
2056 try testArgs(u256, u9, 1 << 0);
2057 try testArgs(u256, u9, 1 << 8);
2058 try testArgs(u512, u9, 0);
2059 try testArgs(u512, u9, 1 << 0);
2060 try testArgs(u512, u9, 1 << 8);
2061 try testArgs(u1024, u9, 0);
2062 try testArgs(u1024, u9, 1 << 0);
2063 try testArgs(u1024, u9, 1 << 8);
2064
2065 try testArgs(i8, i15, -1 << 14);
2066 try testArgs(i8, i15, -1);
2067 try testArgs(i8, i15, 0);
2068 try testArgs(i16, i15, -1 << 14);
2069 try testArgs(i16, i15, -1);
2070 try testArgs(i16, i15, 0);
2071 try testArgs(i32, i15, -1 << 14);
2072 try testArgs(i32, i15, -1);
2073 try testArgs(i32, i15, 0);
2074 try testArgs(i64, i15, -1 << 14);
2075 try testArgs(i64, i15, -1);
2076 try testArgs(i64, i15, 0);
2077 try testArgs(i128, i15, -1 << 14);
2078 try testArgs(i128, i15, -1);
2079 try testArgs(i128, i15, 0);
2080 try testArgs(i256, i15, -1 << 14);
2081 try testArgs(i256, i15, -1);
2082 try testArgs(i256, i15, 0);
2083 try testArgs(i512, i15, -1 << 14);
2084 try testArgs(i512, i15, -1);
2085 try testArgs(i512, i15, 0);
2086 try testArgs(i1024, i15, -1 << 14);
2087 try testArgs(i1024, i15, -1);
2088 try testArgs(i1024, i15, 0);
2089 try testArgs(u8, u15, 0);
2090 try testArgs(u8, u15, 1 << 0);
2091 try testArgs(u8, u15, 1 << 14);
2092 try testArgs(u16, u15, 0);
2093 try testArgs(u16, u15, 1 << 0);
2094 try testArgs(u16, u15, 1 << 14);
2095 try testArgs(u32, u15, 0);
2096 try testArgs(u32, u15, 1 << 0);
2097 try testArgs(u32, u15, 1 << 14);
2098 try testArgs(u64, u15, 0);
2099 try testArgs(u64, u15, 1 << 0);
2100 try testArgs(u64, u15, 1 << 14);
2101 try testArgs(u128, u15, 0);
2102 try testArgs(u128, u15, 1 << 0);
2103 try testArgs(u128, u15, 1 << 14);
2104 try testArgs(u256, u15, 0);
2105 try testArgs(u256, u15, 1 << 0);
2106 try testArgs(u256, u15, 1 << 14);
2107 try testArgs(u512, u15, 0);
2108 try testArgs(u512, u15, 1 << 0);
2109 try testArgs(u512, u15, 1 << 14);
2110 try testArgs(u1024, u15, 0);
2111 try testArgs(u1024, u15, 1 << 0);
2112 try testArgs(u1024, u15, 1 << 14);
2113
2114 try testArgs(i8, i16, -1 << 15);
2115 try testArgs(i8, i16, -1);
2116 try testArgs(i8, i16, 0);
2117 try testArgs(i16, i16, -1 << 15);
2118 try testArgs(i16, i16, -1);
2119 try testArgs(i16, i16, 0);
2120 try testArgs(i32, i16, -1 << 15);
2121 try testArgs(i32, i16, -1);
2122 try testArgs(i32, i16, 0);
2123 try testArgs(i64, i16, -1 << 15);
2124 try testArgs(i64, i16, -1);
2125 try testArgs(i64, i16, 0);
2126 try testArgs(i128, i16, -1 << 15);
2127 try testArgs(i128, i16, -1);
2128 try testArgs(i128, i16, 0);
2129 try testArgs(i256, i16, -1 << 15);
2130 try testArgs(i256, i16, -1);
2131 try testArgs(i256, i16, 0);
2132 try testArgs(i512, i16, -1 << 15);
2133 try testArgs(i512, i16, -1);
2134 try testArgs(i512, i16, 0);
2135 try testArgs(i1024, i16, -1 << 15);
2136 try testArgs(i1024, i16, -1);
2137 try testArgs(i1024, i16, 0);
2138 try testArgs(u8, u16, 0);
2139 try testArgs(u8, u16, 1 << 0);
2140 try testArgs(u8, u16, 1 << 15);
2141 try testArgs(u16, u16, 0);
2142 try testArgs(u16, u16, 1 << 0);
2143 try testArgs(u16, u16, 1 << 15);
2144 try testArgs(u32, u16, 0);
2145 try testArgs(u32, u16, 1 << 0);
2146 try testArgs(u32, u16, 1 << 15);
2147 try testArgs(u64, u16, 0);
2148 try testArgs(u64, u16, 1 << 0);
2149 try testArgs(u64, u16, 1 << 15);
2150 try testArgs(u128, u16, 0);
2151 try testArgs(u128, u16, 1 << 0);
2152 try testArgs(u128, u16, 1 << 15);
2153 try testArgs(u256, u16, 0);
2154 try testArgs(u256, u16, 1 << 0);
2155 try testArgs(u256, u16, 1 << 15);
2156 try testArgs(u512, u16, 0);
2157 try testArgs(u512, u16, 1 << 0);
2158 try testArgs(u512, u16, 1 << 15);
2159 try testArgs(u1024, u16, 0);
2160 try testArgs(u1024, u16, 1 << 0);
2161 try testArgs(u1024, u16, 1 << 15);
2162
2163 try testArgs(i8, i17, -1 << 16);
2164 try testArgs(i8, i17, -1);
2165 try testArgs(i8, i17, 0);
2166 try testArgs(i16, i17, -1 << 16);
2167 try testArgs(i16, i17, -1);
2168 try testArgs(i16, i17, 0);
2169 try testArgs(i32, i17, -1 << 16);
2170 try testArgs(i32, i17, -1);
2171 try testArgs(i32, i17, 0);
2172 try testArgs(i64, i17, -1 << 16);
2173 try testArgs(i64, i17, -1);
2174 try testArgs(i64, i17, 0);
2175 try testArgs(i128, i17, -1 << 16);
2176 try testArgs(i128, i17, -1);
2177 try testArgs(i128, i17, 0);
2178 try testArgs(i256, i17, -1 << 16);
2179 try testArgs(i256, i17, -1);
2180 try testArgs(i256, i17, 0);
2181 try testArgs(i512, i17, -1 << 16);
2182 try testArgs(i512, i17, -1);
2183 try testArgs(i512, i17, 0);
2184 try testArgs(i1024, i17, -1 << 16);
2185 try testArgs(i1024, i17, -1);
2186 try testArgs(i1024, i17, 0);
2187 try testArgs(u8, u17, 0);
2188 try testArgs(u8, u17, 1 << 0);
2189 try testArgs(u8, u17, 1 << 16);
2190 try testArgs(u16, u17, 0);
2191 try testArgs(u16, u17, 1 << 0);
2192 try testArgs(u16, u17, 1 << 16);
2193 try testArgs(u32, u17, 0);
2194 try testArgs(u32, u17, 1 << 0);
2195 try testArgs(u32, u17, 1 << 16);
2196 try testArgs(u64, u17, 0);
2197 try testArgs(u64, u17, 1 << 0);
2198 try testArgs(u64, u17, 1 << 16);
2199 try testArgs(u128, u17, 0);
2200 try testArgs(u128, u17, 1 << 0);
2201 try testArgs(u128, u17, 1 << 16);
2202 try testArgs(u256, u17, 0);
2203 try testArgs(u256, u17, 1 << 0);
2204 try testArgs(u256, u17, 1 << 16);
2205 try testArgs(u512, u17, 0);
2206 try testArgs(u512, u17, 1 << 0);
2207 try testArgs(u512, u17, 1 << 16);
2208 try testArgs(u1024, u17, 0);
2209 try testArgs(u1024, u17, 1 << 0);
2210 try testArgs(u1024, u17, 1 << 16);
2211
2212 try testArgs(i8, i31, -1 << 30);
2213 try testArgs(i8, i31, -1);
2214 try testArgs(i8, i31, 0);
2215 try testArgs(i16, i31, -1 << 30);
2216 try testArgs(i16, i31, -1);
2217 try testArgs(i16, i31, 0);
2218 try testArgs(i32, i31, -1 << 30);
2219 try testArgs(i32, i31, -1);
2220 try testArgs(i32, i31, 0);
2221 try testArgs(i64, i31, -1 << 30);
2222 try testArgs(i64, i31, -1);
2223 try testArgs(i64, i31, 0);
2224 try testArgs(i128, i31, -1 << 30);
2225 try testArgs(i128, i31, -1);
2226 try testArgs(i128, i31, 0);
2227 try testArgs(i256, i31, -1 << 30);
2228 try testArgs(i256, i31, -1);
2229 try testArgs(i256, i31, 0);
2230 try testArgs(i512, i31, -1 << 30);
2231 try testArgs(i512, i31, -1);
2232 try testArgs(i512, i31, 0);
2233 try testArgs(i1024, i31, -1 << 30);
2234 try testArgs(i1024, i31, -1);
2235 try testArgs(i1024, i31, 0);
2236 try testArgs(u8, u31, 0);
2237 try testArgs(u8, u31, 1 << 0);
2238 try testArgs(u8, u31, 1 << 30);
2239 try testArgs(u16, u31, 0);
2240 try testArgs(u16, u31, 1 << 0);
2241 try testArgs(u16, u31, 1 << 30);
2242 try testArgs(u32, u31, 0);
2243 try testArgs(u32, u31, 1 << 0);
2244 try testArgs(u32, u31, 1 << 30);
2245 try testArgs(u64, u31, 0);
2246 try testArgs(u64, u31, 1 << 0);
2247 try testArgs(u64, u31, 1 << 30);
2248 try testArgs(u128, u31, 0);
2249 try testArgs(u128, u31, 1 << 0);
2250 try testArgs(u128, u31, 1 << 30);
2251 try testArgs(u256, u31, 0);
2252 try testArgs(u256, u31, 1 << 0);
2253 try testArgs(u256, u31, 1 << 30);
2254 try testArgs(u512, u31, 0);
2255 try testArgs(u512, u31, 1 << 0);
2256 try testArgs(u512, u31, 1 << 30);
2257 try testArgs(u1024, u31, 0);
2258 try testArgs(u1024, u31, 1 << 0);
2259 try testArgs(u1024, u31, 1 << 30);
2260
2261 try testArgs(i8, i32, -1 << 31);
2262 try testArgs(i8, i32, -1);
2263 try testArgs(i8, i32, 0);
2264 try testArgs(i16, i32, -1 << 31);
2265 try testArgs(i16, i32, -1);
2266 try testArgs(i16, i32, 0);
2267 try testArgs(i32, i32, -1 << 31);
2268 try testArgs(i32, i32, -1);
2269 try testArgs(i32, i32, 0);
2270 try testArgs(i64, i32, -1 << 31);
2271 try testArgs(i64, i32, -1);
2272 try testArgs(i64, i32, 0);
2273 try testArgs(i128, i32, -1 << 31);
2274 try testArgs(i128, i32, -1);
2275 try testArgs(i128, i32, 0);
2276 try testArgs(i256, i32, -1 << 31);
2277 try testArgs(i256, i32, -1);
2278 try testArgs(i256, i32, 0);
2279 try testArgs(i512, i32, -1 << 31);
2280 try testArgs(i512, i32, -1);
2281 try testArgs(i512, i32, 0);
2282 try testArgs(i1024, i32, -1 << 31);
2283 try testArgs(i1024, i32, -1);
2284 try testArgs(i1024, i32, 0);
2285 try testArgs(u8, u32, 0);
2286 try testArgs(u8, u32, 1 << 0);
2287 try testArgs(u8, u32, 1 << 31);
2288 try testArgs(u16, u32, 0);
2289 try testArgs(u16, u32, 1 << 0);
2290 try testArgs(u16, u32, 1 << 31);
2291 try testArgs(u32, u32, 0);
2292 try testArgs(u32, u32, 1 << 0);
2293 try testArgs(u32, u32, 1 << 31);
2294 try testArgs(u64, u32, 0);
2295 try testArgs(u64, u32, 1 << 0);
2296 try testArgs(u64, u32, 1 << 31);
2297 try testArgs(u128, u32, 0);
2298 try testArgs(u128, u32, 1 << 0);
2299 try testArgs(u128, u32, 1 << 31);
2300 try testArgs(u256, u32, 0);
2301 try testArgs(u256, u32, 1 << 0);
2302 try testArgs(u256, u32, 1 << 31);
2303 try testArgs(u512, u32, 0);
2304 try testArgs(u512, u32, 1 << 0);
2305 try testArgs(u512, u32, 1 << 31);
2306 try testArgs(u1024, u32, 0);
2307 try testArgs(u1024, u32, 1 << 0);
2308 try testArgs(u1024, u32, 1 << 31);
2309
2310 try testArgs(i8, i33, -1 << 32);
2311 try testArgs(i8, i33, -1);
2312 try testArgs(i8, i33, 0);
2313 try testArgs(i16, i33, -1 << 32);
2314 try testArgs(i16, i33, -1);
2315 try testArgs(i16, i33, 0);
2316 try testArgs(i32, i33, -1 << 32);
2317 try testArgs(i32, i33, -1);
2318 try testArgs(i32, i33, 0);
2319 try testArgs(i64, i33, -1 << 32);
2320 try testArgs(i64, i33, -1);
2321 try testArgs(i64, i33, 0);
2322 try testArgs(i128, i33, -1 << 32);
2323 try testArgs(i128, i33, -1);
2324 try testArgs(i128, i33, 0);
2325 try testArgs(i256, i33, -1 << 32);
2326 try testArgs(i256, i33, -1);
2327 try testArgs(i256, i33, 0);
2328 try testArgs(i512, i33, -1 << 32);
2329 try testArgs(i512, i33, -1);
2330 try testArgs(i512, i33, 0);
2331 try testArgs(i1024, i33, -1 << 32);
2332 try testArgs(i1024, i33, -1);
2333 try testArgs(i1024, i33, 0);
2334 try testArgs(u8, u33, 0);
2335 try testArgs(u8, u33, 1 << 0);
2336 try testArgs(u8, u33, 1 << 32);
2337 try testArgs(u16, u33, 0);
2338 try testArgs(u16, u33, 1 << 0);
2339 try testArgs(u16, u33, 1 << 32);
2340 try testArgs(u32, u33, 0);
2341 try testArgs(u32, u33, 1 << 0);
2342 try testArgs(u32, u33, 1 << 32);
2343 try testArgs(u64, u33, 0);
2344 try testArgs(u64, u33, 1 << 0);
2345 try testArgs(u64, u33, 1 << 32);
2346 try testArgs(u128, u33, 0);
2347 try testArgs(u128, u33, 1 << 0);
2348 try testArgs(u128, u33, 1 << 32);
2349 try testArgs(u256, u33, 0);
2350 try testArgs(u256, u33, 1 << 0);
2351 try testArgs(u256, u33, 1 << 32);
2352 try testArgs(u512, u33, 0);
2353 try testArgs(u512, u33, 1 << 0);
2354 try testArgs(u512, u33, 1 << 32);
2355 try testArgs(u1024, u33, 0);
2356 try testArgs(u1024, u33, 1 << 0);
2357 try testArgs(u1024, u33, 1 << 32);
2358
2359 try testArgs(i8, i63, -1 << 62);
2360 try testArgs(i8, i63, -1);
2361 try testArgs(i8, i63, 0);
2362 try testArgs(i16, i63, -1 << 62);
2363 try testArgs(i16, i63, -1);
2364 try testArgs(i16, i63, 0);
2365 try testArgs(i32, i63, -1 << 62);
2366 try testArgs(i32, i63, -1);
2367 try testArgs(i32, i63, 0);
2368 try testArgs(i64, i63, -1 << 62);
2369 try testArgs(i64, i63, -1);
2370 try testArgs(i64, i63, 0);
2371 try testArgs(i128, i63, -1 << 62);
2372 try testArgs(i128, i63, -1);
2373 try testArgs(i128, i63, 0);
2374 try testArgs(i256, i63, -1 << 62);
2375 try testArgs(i256, i63, -1);
2376 try testArgs(i256, i63, 0);
2377 try testArgs(i512, i63, -1 << 62);
2378 try testArgs(i512, i63, -1);
2379 try testArgs(i512, i63, 0);
2380 try testArgs(i1024, i63, -1 << 62);
2381 try testArgs(i1024, i63, -1);
2382 try testArgs(i1024, i63, 0);
2383 try testArgs(u8, u63, 0);
2384 try testArgs(u8, u63, 1 << 0);
2385 try testArgs(u8, u63, 1 << 62);
2386 try testArgs(u16, u63, 0);
2387 try testArgs(u16, u63, 1 << 0);
2388 try testArgs(u16, u63, 1 << 62);
2389 try testArgs(u32, u63, 0);
2390 try testArgs(u32, u63, 1 << 0);
2391 try testArgs(u32, u63, 1 << 62);
2392 try testArgs(u64, u63, 0);
2393 try testArgs(u64, u63, 1 << 0);
2394 try testArgs(u64, u63, 1 << 62);
2395 try testArgs(u128, u63, 0);
2396 try testArgs(u128, u63, 1 << 0);
2397 try testArgs(u128, u63, 1 << 62);
2398 try testArgs(u256, u63, 0);
2399 try testArgs(u256, u63, 1 << 0);
2400 try testArgs(u256, u63, 1 << 62);
2401 try testArgs(u512, u63, 0);
2402 try testArgs(u512, u63, 1 << 0);
2403 try testArgs(u512, u63, 1 << 62);
2404 try testArgs(u1024, u63, 0);
2405 try testArgs(u1024, u63, 1 << 0);
2406 try testArgs(u1024, u63, 1 << 62);
2407
2408 try testArgs(i8, i64, -1 << 63);
2409 try testArgs(i8, i64, -1);
2410 try testArgs(i8, i64, 0);
2411 try testArgs(i16, i64, -1 << 63);
2412 try testArgs(i16, i64, -1);
2413 try testArgs(i16, i64, 0);
2414 try testArgs(i32, i64, -1 << 63);
2415 try testArgs(i32, i64, -1);
2416 try testArgs(i32, i64, 0);
2417 try testArgs(i64, i64, -1 << 63);
2418 try testArgs(i64, i64, -1);
2419 try testArgs(i64, i64, 0);
2420 try testArgs(i128, i64, -1 << 63);
2421 try testArgs(i128, i64, -1);
2422 try testArgs(i128, i64, 0);
2423 try testArgs(i256, i64, -1 << 63);
2424 try testArgs(i256, i64, -1);
2425 try testArgs(i256, i64, 0);
2426 try testArgs(i512, i64, -1 << 63);
2427 try testArgs(i512, i64, -1);
2428 try testArgs(i512, i64, 0);
2429 try testArgs(i1024, i64, -1 << 63);
2430 try testArgs(i1024, i64, -1);
2431 try testArgs(i1024, i64, 0);
2432 try testArgs(u8, u64, 0);
2433 try testArgs(u8, u64, 1 << 0);
2434 try testArgs(u8, u64, 1 << 63);
2435 try testArgs(u16, u64, 0);
2436 try testArgs(u16, u64, 1 << 0);
2437 try testArgs(u16, u64, 1 << 63);
2438 try testArgs(u32, u64, 0);
2439 try testArgs(u32, u64, 1 << 0);
2440 try testArgs(u32, u64, 1 << 63);
2441 try testArgs(u64, u64, 0);
2442 try testArgs(u64, u64, 1 << 0);
2443 try testArgs(u64, u64, 1 << 63);
2444 try testArgs(u128, u64, 0);
2445 try testArgs(u128, u64, 1 << 0);
2446 try testArgs(u128, u64, 1 << 63);
2447 try testArgs(u256, u64, 0);
2448 try testArgs(u256, u64, 1 << 0);
2449 try testArgs(u256, u64, 1 << 63);
2450 try testArgs(u512, u64, 0);
2451 try testArgs(u512, u64, 1 << 0);
2452 try testArgs(u512, u64, 1 << 63);
2453 try testArgs(u1024, u64, 0);
2454 try testArgs(u1024, u64, 1 << 0);
2455 try testArgs(u1024, u64, 1 << 63);
2456
2457 try testArgs(i8, i65, -1 << 64);
2458 try testArgs(i8, i65, -1);
2459 try testArgs(i8, i65, 0);
2460 try testArgs(i16, i65, -1 << 64);
2461 try testArgs(i16, i65, -1);
2462 try testArgs(i16, i65, 0);
2463 try testArgs(i32, i65, -1 << 64);
2464 try testArgs(i32, i65, -1);
2465 try testArgs(i32, i65, 0);
2466 try testArgs(i64, i65, -1 << 64);
2467 try testArgs(i64, i65, -1);
2468 try testArgs(i64, i65, 0);
2469 try testArgs(i128, i65, -1 << 64);
2470 try testArgs(i128, i65, -1);
2471 try testArgs(i128, i65, 0);
2472 try testArgs(i256, i65, -1 << 64);
2473 try testArgs(i256, i65, -1);
2474 try testArgs(i256, i65, 0);
2475 try testArgs(i512, i65, -1 << 64);
2476 try testArgs(i512, i65, -1);
2477 try testArgs(i512, i65, 0);
2478 try testArgs(i1024, i65, -1 << 64);
2479 try testArgs(i1024, i65, -1);
2480 try testArgs(i1024, i65, 0);
2481 try testArgs(u8, u65, 0);
2482 try testArgs(u8, u65, 1 << 0);
2483 try testArgs(u8, u65, 1 << 64);
2484 try testArgs(u16, u65, 0);
2485 try testArgs(u16, u65, 1 << 0);
2486 try testArgs(u16, u65, 1 << 64);
2487 try testArgs(u32, u65, 0);
2488 try testArgs(u32, u65, 1 << 0);
2489 try testArgs(u32, u65, 1 << 64);
2490 try testArgs(u64, u65, 0);
2491 try testArgs(u64, u65, 1 << 0);
2492 try testArgs(u64, u65, 1 << 64);
2493 try testArgs(u128, u65, 0);
2494 try testArgs(u128, u65, 1 << 0);
2495 try testArgs(u128, u65, 1 << 64);
2496 try testArgs(u256, u65, 0);
2497 try testArgs(u256, u65, 1 << 0);
2498 try testArgs(u256, u65, 1 << 64);
2499 try testArgs(u512, u65, 0);
2500 try testArgs(u512, u65, 1 << 0);
2501 try testArgs(u512, u65, 1 << 64);
2502 try testArgs(u1024, u65, 0);
2503 try testArgs(u1024, u65, 1 << 0);
2504 try testArgs(u1024, u65, 1 << 64);
2505
2506 try testArgs(i8, i95, -1 << 94);
2507 try testArgs(i8, i95, -1);
2508 try testArgs(i8, i95, 0);
2509 try testArgs(i16, i95, -1 << 94);
2510 try testArgs(i16, i95, -1);
2511 try testArgs(i16, i95, 0);
2512 try testArgs(i32, i95, -1 << 94);
2513 try testArgs(i32, i95, -1);
2514 try testArgs(i32, i95, 0);
2515 try testArgs(i64, i95, -1 << 94);
2516 try testArgs(i64, i95, -1);
2517 try testArgs(i64, i95, 0);
2518 try testArgs(i128, i95, -1 << 94);
2519 try testArgs(i128, i95, -1);
2520 try testArgs(i128, i95, 0);
2521 try testArgs(i256, i95, -1 << 94);
2522 try testArgs(i256, i95, -1);
2523 try testArgs(i256, i95, 0);
2524 try testArgs(i512, i95, -1 << 94);
2525 try testArgs(i512, i95, -1);
2526 try testArgs(i512, i95, 0);
2527 try testArgs(i1024, i95, -1 << 94);
2528 try testArgs(i1024, i95, -1);
2529 try testArgs(i1024, i95, 0);
2530 try testArgs(u8, u95, 0);
2531 try testArgs(u8, u95, 1 << 0);
2532 try testArgs(u8, u95, 1 << 94);
2533 try testArgs(u16, u95, 0);
2534 try testArgs(u16, u95, 1 << 0);
2535 try testArgs(u16, u95, 1 << 94);
2536 try testArgs(u32, u95, 0);
2537 try testArgs(u32, u95, 1 << 0);
2538 try testArgs(u32, u95, 1 << 94);
2539 try testArgs(u64, u95, 0);
2540 try testArgs(u64, u95, 1 << 0);
2541 try testArgs(u64, u95, 1 << 94);
2542 try testArgs(u128, u95, 0);
2543 try testArgs(u128, u95, 1 << 0);
2544 try testArgs(u128, u95, 1 << 94);
2545 try testArgs(u256, u95, 0);
2546 try testArgs(u256, u95, 1 << 0);
2547 try testArgs(u256, u95, 1 << 94);
2548 try testArgs(u512, u95, 0);
2549 try testArgs(u512, u95, 1 << 0);
2550 try testArgs(u512, u95, 1 << 94);
2551 try testArgs(u1024, u95, 0);
2552 try testArgs(u1024, u95, 1 << 0);
2553 try testArgs(u1024, u95, 1 << 94);
2554
2555 try testArgs(i8, i97, -1 << 96);
2556 try testArgs(i8, i97, -1);
2557 try testArgs(i8, i97, 0);
2558 try testArgs(i16, i97, -1 << 96);
2559 try testArgs(i16, i97, -1);
2560 try testArgs(i16, i97, 0);
2561 try testArgs(i32, i97, -1 << 96);
2562 try testArgs(i32, i97, -1);
2563 try testArgs(i32, i97, 0);
2564 try testArgs(i64, i97, -1 << 96);
2565 try testArgs(i64, i97, -1);
2566 try testArgs(i64, i97, 0);
2567 try testArgs(i128, i97, -1 << 96);
2568 try testArgs(i128, i97, -1);
2569 try testArgs(i128, i97, 0);
2570 try testArgs(i256, i97, -1 << 96);
2571 try testArgs(i256, i97, -1);
2572 try testArgs(i256, i97, 0);
2573 try testArgs(i512, i97, -1 << 96);
2574 try testArgs(i512, i97, -1);
2575 try testArgs(i512, i97, 0);
2576 try testArgs(i1024, i97, -1 << 96);
2577 try testArgs(i1024, i97, -1);
2578 try testArgs(i1024, i97, 0);
2579 try testArgs(u8, u97, 0);
2580 try testArgs(u8, u97, 1 << 0);
2581 try testArgs(u8, u97, 1 << 96);
2582 try testArgs(u16, u97, 0);
2583 try testArgs(u16, u97, 1 << 0);
2584 try testArgs(u16, u97, 1 << 96);
2585 try testArgs(u32, u97, 0);
2586 try testArgs(u32, u97, 1 << 0);
2587 try testArgs(u32, u97, 1 << 96);
2588 try testArgs(u64, u97, 0);
2589 try testArgs(u64, u97, 1 << 0);
2590 try testArgs(u64, u97, 1 << 96);
2591 try testArgs(u128, u97, 0);
2592 try testArgs(u128, u97, 1 << 0);
2593 try testArgs(u128, u97, 1 << 96);
2594 try testArgs(u256, u97, 0);
2595 try testArgs(u256, u97, 1 << 0);
2596 try testArgs(u256, u97, 1 << 96);
2597 try testArgs(u512, u97, 0);
2598 try testArgs(u512, u97, 1 << 0);
2599 try testArgs(u512, u97, 1 << 96);
2600 try testArgs(u1024, u97, 0);
2601 try testArgs(u1024, u97, 1 << 0);
2602 try testArgs(u1024, u97, 1 << 96);
2603
2604 try testArgs(i8, i127, -1 << 126);
2605 try testArgs(i8, i127, -1);
2606 try testArgs(i8, i127, 0);
2607 try testArgs(i16, i127, -1 << 126);
2608 try testArgs(i16, i127, -1);
2609 try testArgs(i16, i127, 0);
2610 try testArgs(i32, i127, -1 << 126);
2611 try testArgs(i32, i127, -1);
2612 try testArgs(i32, i127, 0);
2613 try testArgs(i64, i127, -1 << 126);
2614 try testArgs(i64, i127, -1);
2615 try testArgs(i64, i127, 0);
2616 try testArgs(i128, i127, -1 << 126);
2617 try testArgs(i128, i127, -1);
2618 try testArgs(i128, i127, 0);
2619 try testArgs(i256, i127, -1 << 126);
2620 try testArgs(i256, i127, -1);
2621 try testArgs(i256, i127, 0);
2622 try testArgs(i512, i127, -1 << 126);
2623 try testArgs(i512, i127, -1);
2624 try testArgs(i512, i127, 0);
2625 try testArgs(i1024, i127, -1 << 126);
2626 try testArgs(i1024, i127, -1);
2627 try testArgs(i1024, i127, 0);
2628 try testArgs(u8, u127, 0);
2629 try testArgs(u8, u127, 1 << 0);
2630 try testArgs(u8, u127, 1 << 126);
2631 try testArgs(u16, u127, 0);
2632 try testArgs(u16, u127, 1 << 0);
2633 try testArgs(u16, u127, 1 << 126);
2634 try testArgs(u32, u127, 0);
2635 try testArgs(u32, u127, 1 << 0);
2636 try testArgs(u32, u127, 1 << 126);
2637 try testArgs(u64, u127, 0);
2638 try testArgs(u64, u127, 1 << 0);
2639 try testArgs(u64, u127, 1 << 126);
2640 try testArgs(u128, u127, 0);
2641 try testArgs(u128, u127, 1 << 0);
2642 try testArgs(u128, u127, 1 << 126);
2643 try testArgs(u256, u127, 0);
2644 try testArgs(u256, u127, 1 << 0);
2645 try testArgs(u256, u127, 1 << 126);
2646 try testArgs(u512, u127, 0);
2647 try testArgs(u512, u127, 1 << 0);
2648 try testArgs(u512, u127, 1 << 126);
2649 try testArgs(u1024, u127, 0);
2650 try testArgs(u1024, u127, 1 << 0);
2651 try testArgs(u1024, u127, 1 << 126);
2652
2653 try testArgs(i8, i128, -1 << 127);
2654 try testArgs(i8, i128, -1);
2655 try testArgs(i8, i128, 0);
2656 try testArgs(i16, i128, -1 << 127);
2657 try testArgs(i16, i128, -1);
2658 try testArgs(i16, i128, 0);
2659 try testArgs(i32, i128, -1 << 127);
2660 try testArgs(i32, i128, -1);
2661 try testArgs(i32, i128, 0);
2662 try testArgs(i64, i128, -1 << 127);
2663 try testArgs(i64, i128, -1);
2664 try testArgs(i64, i128, 0);
2665 try testArgs(i128, i128, -1 << 127);
2666 try testArgs(i128, i128, -1);
2667 try testArgs(i128, i128, 0);
2668 try testArgs(i256, i128, -1 << 127);
2669 try testArgs(i256, i128, -1);
2670 try testArgs(i256, i128, 0);
2671 try testArgs(i512, i128, -1 << 127);
2672 try testArgs(i512, i128, -1);
2673 try testArgs(i512, i128, 0);
2674 try testArgs(i1024, i128, -1 << 127);
2675 try testArgs(i1024, i128, -1);
2676 try testArgs(i1024, i128, 0);
2677 try testArgs(u8, u128, 0);
2678 try testArgs(u8, u128, 1 << 0);
2679 try testArgs(u8, u128, 1 << 127);
2680 try testArgs(u16, u128, 0);
2681 try testArgs(u16, u128, 1 << 0);
2682 try testArgs(u16, u128, 1 << 127);
2683 try testArgs(u32, u128, 0);
2684 try testArgs(u32, u128, 1 << 0);
2685 try testArgs(u32, u128, 1 << 127);
2686 try testArgs(u64, u128, 0);
2687 try testArgs(u64, u128, 1 << 0);
2688 try testArgs(u64, u128, 1 << 127);
2689 try testArgs(u128, u128, 0);
2690 try testArgs(u128, u128, 1 << 0);
2691 try testArgs(u128, u128, 1 << 127);
2692 try testArgs(u256, u128, 0);
2693 try testArgs(u256, u128, 1 << 0);
2694 try testArgs(u256, u128, 1 << 127);
2695 try testArgs(u512, u128, 0);
2696 try testArgs(u512, u128, 1 << 0);
2697 try testArgs(u512, u128, 1 << 127);
2698 try testArgs(u1024, u128, 0);
2699 try testArgs(u1024, u128, 1 << 0);
2700 try testArgs(u1024, u128, 1 << 127);
2701
2702 try testArgs(i8, i129, -1 << 128);
2703 try testArgs(i8, i129, -1);
2704 try testArgs(i8, i129, 0);
2705 try testArgs(i16, i129, -1 << 128);
2706 try testArgs(i16, i129, -1);
2707 try testArgs(i16, i129, 0);
2708 try testArgs(i32, i129, -1 << 128);
2709 try testArgs(i32, i129, -1);
2710 try testArgs(i32, i129, 0);
2711 try testArgs(i64, i129, -1 << 128);
2712 try testArgs(i64, i129, -1);
2713 try testArgs(i64, i129, 0);
2714 try testArgs(i128, i129, -1 << 128);
2715 try testArgs(i128, i129, -1);
2716 try testArgs(i128, i129, 0);
2717 try testArgs(i256, i129, -1 << 128);
2718 try testArgs(i256, i129, -1);
2719 try testArgs(i256, i129, 0);
2720 try testArgs(i512, i129, -1 << 128);
2721 try testArgs(i512, i129, -1);
2722 try testArgs(i512, i129, 0);
2723 try testArgs(i1024, i129, -1 << 128);
2724 try testArgs(i1024, i129, -1);
2725 try testArgs(i1024, i129, 0);
2726 try testArgs(u8, u129, 0);
2727 try testArgs(u8, u129, 1 << 0);
2728 try testArgs(u8, u129, 1 << 128);
2729 try testArgs(u16, u129, 0);
2730 try testArgs(u16, u129, 1 << 0);
2731 try testArgs(u16, u129, 1 << 128);
2732 try testArgs(u32, u129, 0);
2733 try testArgs(u32, u129, 1 << 0);
2734 try testArgs(u32, u129, 1 << 128);
2735 try testArgs(u64, u129, 0);
2736 try testArgs(u64, u129, 1 << 0);
2737 try testArgs(u64, u129, 1 << 128);
2738 try testArgs(u128, u129, 0);
2739 try testArgs(u128, u129, 1 << 0);
2740 try testArgs(u128, u129, 1 << 128);
2741 try testArgs(u256, u129, 0);
2742 try testArgs(u256, u129, 1 << 0);
2743 try testArgs(u256, u129, 1 << 128);
2744 try testArgs(u512, u129, 0);
2745 try testArgs(u512, u129, 1 << 0);
2746 try testArgs(u512, u129, 1 << 128);
2747 try testArgs(u1024, u129, 0);
2748 try testArgs(u1024, u129, 1 << 0);
2749 try testArgs(u1024, u129, 1 << 128);
2750
2751 try testArgs(i8, i255, -1 << 254);
2752 try testArgs(i8, i255, -1);
2753 try testArgs(i8, i255, 0);
2754 try testArgs(i16, i255, -1 << 254);
2755 try testArgs(i16, i255, -1);
2756 try testArgs(i16, i255, 0);
2757 try testArgs(i32, i255, -1 << 254);
2758 try testArgs(i32, i255, -1);
2759 try testArgs(i32, i255, 0);
2760 try testArgs(i64, i255, -1 << 254);
2761 try testArgs(i64, i255, -1);
2762 try testArgs(i64, i255, 0);
2763 try testArgs(i128, i255, -1 << 254);
2764 try testArgs(i128, i255, -1);
2765 try testArgs(i128, i255, 0);
2766 try testArgs(i256, i255, -1 << 254);
2767 try testArgs(i256, i255, -1);
2768 try testArgs(i256, i255, 0);
2769 try testArgs(i512, i255, -1 << 254);
2770 try testArgs(i512, i255, -1);
2771 try testArgs(i512, i255, 0);
2772 try testArgs(i1024, i255, -1 << 254);
2773 try testArgs(i1024, i255, -1);
2774 try testArgs(i1024, i255, 0);
2775 try testArgs(u8, u255, 0);
2776 try testArgs(u8, u255, 1 << 0);
2777 try testArgs(u8, u255, 1 << 254);
2778 try testArgs(u16, u255, 0);
2779 try testArgs(u16, u255, 1 << 0);
2780 try testArgs(u16, u255, 1 << 254);
2781 try testArgs(u32, u255, 0);
2782 try testArgs(u32, u255, 1 << 0);
2783 try testArgs(u32, u255, 1 << 254);
2784 try testArgs(u64, u255, 0);
2785 try testArgs(u64, u255, 1 << 0);
2786 try testArgs(u64, u255, 1 << 254);
2787 try testArgs(u128, u255, 0);
2788 try testArgs(u128, u255, 1 << 0);
2789 try testArgs(u128, u255, 1 << 254);
2790 try testArgs(u256, u255, 0);
2791 try testArgs(u256, u255, 1 << 0);
2792 try testArgs(u256, u255, 1 << 254);
2793 try testArgs(u512, u255, 0);
2794 try testArgs(u512, u255, 1 << 0);
2795 try testArgs(u512, u255, 1 << 254);
2796 try testArgs(u1024, u255, 0);
2797 try testArgs(u1024, u255, 1 << 0);
2798 try testArgs(u1024, u255, 1 << 254);
2799
2800 try testArgs(i8, i256, -1 << 255);
2801 try testArgs(i8, i256, -1);
2802 try testArgs(i8, i256, 0);
2803 try testArgs(i16, i256, -1 << 255);
2804 try testArgs(i16, i256, -1);
2805 try testArgs(i16, i256, 0);
2806 try testArgs(i32, i256, -1 << 255);
2807 try testArgs(i32, i256, -1);
2808 try testArgs(i32, i256, 0);
2809 try testArgs(i64, i256, -1 << 255);
2810 try testArgs(i64, i256, -1);
2811 try testArgs(i64, i256, 0);
2812 try testArgs(i128, i256, -1 << 255);
2813 try testArgs(i128, i256, -1);
2814 try testArgs(i128, i256, 0);
2815 try testArgs(i256, i256, -1 << 255);
2816 try testArgs(i256, i256, -1);
2817 try testArgs(i256, i256, 0);
2818 try testArgs(i512, i256, -1 << 255);
2819 try testArgs(i512, i256, -1);
2820 try testArgs(i512, i256, 0);
2821 try testArgs(i1024, i256, -1 << 255);
2822 try testArgs(i1024, i256, -1);
2823 try testArgs(i1024, i256, 0);
2824 try testArgs(u8, u256, 0);
2825 try testArgs(u8, u256, 1 << 0);
2826 try testArgs(u8, u256, 1 << 255);
2827 try testArgs(u16, u256, 0);
2828 try testArgs(u16, u256, 1 << 0);
2829 try testArgs(u16, u256, 1 << 255);
2830 try testArgs(u32, u256, 0);
2831 try testArgs(u32, u256, 1 << 0);
2832 try testArgs(u32, u256, 1 << 255);
2833 try testArgs(u64, u256, 0);
2834 try testArgs(u64, u256, 1 << 0);
2835 try testArgs(u64, u256, 1 << 255);
2836 try testArgs(u128, u256, 0);
2837 try testArgs(u128, u256, 1 << 0);
2838 try testArgs(u128, u256, 1 << 255);
2839 try testArgs(u256, u256, 0);
2840 try testArgs(u256, u256, 1 << 0);
2841 try testArgs(u256, u256, 1 << 255);
2842 try testArgs(u512, u256, 0);
2843 try testArgs(u512, u256, 1 << 0);
2844 try testArgs(u512, u256, 1 << 255);
2845 try testArgs(u1024, u256, 0);
2846 try testArgs(u1024, u256, 1 << 0);
2847 try testArgs(u1024, u256, 1 << 255);
2848
2849 try testArgs(i8, i257, -1 << 256);
2850 try testArgs(i8, i257, -1);
2851 try testArgs(i8, i257, 0);
2852 try testArgs(i16, i257, -1 << 256);
2853 try testArgs(i16, i257, -1);
2854 try testArgs(i16, i257, 0);
2855 try testArgs(i32, i257, -1 << 256);
2856 try testArgs(i32, i257, -1);
2857 try testArgs(i32, i257, 0);
2858 try testArgs(i64, i257, -1 << 256);
2859 try testArgs(i64, i257, -1);
2860 try testArgs(i64, i257, 0);
2861 try testArgs(i128, i257, -1 << 256);
2862 try testArgs(i128, i257, -1);
2863 try testArgs(i128, i257, 0);
2864 try testArgs(i256, i257, -1 << 256);
2865 try testArgs(i256, i257, -1);
2866 try testArgs(i256, i257, 0);
2867 try testArgs(i512, i257, -1 << 256);
2868 try testArgs(i512, i257, -1);
2869 try testArgs(i512, i257, 0);
2870 try testArgs(i1024, i257, -1 << 256);
2871 try testArgs(i1024, i257, -1);
2872 try testArgs(i1024, i257, 0);
2873 try testArgs(u8, u257, 0);
2874 try testArgs(u8, u257, 1 << 0);
2875 try testArgs(u8, u257, 1 << 256);
2876 try testArgs(u16, u257, 0);
2877 try testArgs(u16, u257, 1 << 0);
2878 try testArgs(u16, u257, 1 << 256);
2879 try testArgs(u32, u257, 0);
2880 try testArgs(u32, u257, 1 << 0);
2881 try testArgs(u32, u257, 1 << 256);
2882 try testArgs(u64, u257, 0);
2883 try testArgs(u64, u257, 1 << 0);
2884 try testArgs(u64, u257, 1 << 256);
2885 try testArgs(u128, u257, 0);
2886 try testArgs(u128, u257, 1 << 0);
2887 try testArgs(u128, u257, 1 << 256);
2888 try testArgs(u256, u257, 0);
2889 try testArgs(u256, u257, 1 << 0);
2890 try testArgs(u256, u257, 1 << 256);
2891 try testArgs(u512, u257, 0);
2892 try testArgs(u512, u257, 1 << 0);
2893 try testArgs(u512, u257, 1 << 256);
2894 try testArgs(u1024, u257, 0);
2895 try testArgs(u1024, u257, 1 << 0);
2896 try testArgs(u1024, u257, 1 << 256);
2897
2898 try testArgs(i8, i511, -1 << 510);
2899 try testArgs(i8, i511, -1);
2900 try testArgs(i8, i511, 0);
2901 try testArgs(i16, i511, -1 << 510);
2902 try testArgs(i16, i511, -1);
2903 try testArgs(i16, i511, 0);
2904 try testArgs(i32, i511, -1 << 510);
2905 try testArgs(i32, i511, -1);
2906 try testArgs(i32, i511, 0);
2907 try testArgs(i64, i511, -1 << 510);
2908 try testArgs(i64, i511, -1);
2909 try testArgs(i64, i511, 0);
2910 try testArgs(i128, i511, -1 << 510);
2911 try testArgs(i128, i511, -1);
2912 try testArgs(i128, i511, 0);
2913 try testArgs(i256, i511, -1 << 510);
2914 try testArgs(i256, i511, -1);
2915 try testArgs(i256, i511, 0);
2916 try testArgs(i512, i511, -1 << 510);
2917 try testArgs(i512, i511, -1);
2918 try testArgs(i512, i511, 0);
2919 try testArgs(i1024, i511, -1 << 510);
2920 try testArgs(i1024, i511, -1);
2921 try testArgs(i1024, i511, 0);
2922 try testArgs(u8, u511, 0);
2923 try testArgs(u8, u511, 1 << 0);
2924 try testArgs(u8, u511, 1 << 510);
2925 try testArgs(u16, u511, 0);
2926 try testArgs(u16, u511, 1 << 0);
2927 try testArgs(u16, u511, 1 << 510);
2928 try testArgs(u32, u511, 0);
2929 try testArgs(u32, u511, 1 << 0);
2930 try testArgs(u32, u511, 1 << 510);
2931 try testArgs(u64, u511, 0);
2932 try testArgs(u64, u511, 1 << 0);
2933 try testArgs(u64, u511, 1 << 510);
2934 try testArgs(u128, u511, 0);
2935 try testArgs(u128, u511, 1 << 0);
2936 try testArgs(u128, u511, 1 << 510);
2937 try testArgs(u256, u511, 0);
2938 try testArgs(u256, u511, 1 << 0);
2939 try testArgs(u256, u511, 1 << 510);
2940 try testArgs(u512, u511, 0);
2941 try testArgs(u512, u511, 1 << 0);
2942 try testArgs(u512, u511, 1 << 510);
2943 try testArgs(u1024, u511, 0);
2944 try testArgs(u1024, u511, 1 << 0);
2945 try testArgs(u1024, u511, 1 << 510);
2946
2947 try testArgs(i8, i512, -1 << 511);
2948 try testArgs(i8, i512, -1);
2949 try testArgs(i8, i512, 0);
2950 try testArgs(i16, i512, -1 << 511);
2951 try testArgs(i16, i512, -1);
2952 try testArgs(i16, i512, 0);
2953 try testArgs(i32, i512, -1 << 511);
2954 try testArgs(i32, i512, -1);
2955 try testArgs(i32, i512, 0);
2956 try testArgs(i64, i512, -1 << 511);
2957 try testArgs(i64, i512, -1);
2958 try testArgs(i64, i512, 0);
2959 try testArgs(i128, i512, -1 << 511);
2960 try testArgs(i128, i512, -1);
2961 try testArgs(i128, i512, 0);
2962 try testArgs(i256, i512, -1 << 511);
2963 try testArgs(i256, i512, -1);
2964 try testArgs(i256, i512, 0);
2965 try testArgs(i512, i512, -1 << 511);
2966 try testArgs(i512, i512, -1);
2967 try testArgs(i512, i512, 0);
2968 try testArgs(i1024, i512, -1 << 511);
2969 try testArgs(i1024, i512, -1);
2970 try testArgs(i1024, i512, 0);
2971 try testArgs(u8, u512, 0);
2972 try testArgs(u8, u512, 1 << 0);
2973 try testArgs(u8, u512, 1 << 511);
2974 try testArgs(u16, u512, 0);
2975 try testArgs(u16, u512, 1 << 0);
2976 try testArgs(u16, u512, 1 << 511);
2977 try testArgs(u32, u512, 0);
2978 try testArgs(u32, u512, 1 << 0);
2979 try testArgs(u32, u512, 1 << 511);
2980 try testArgs(u64, u512, 0);
2981 try testArgs(u64, u512, 1 << 0);
2982 try testArgs(u64, u512, 1 << 511);
2983 try testArgs(u128, u512, 0);
2984 try testArgs(u128, u512, 1 << 0);
2985 try testArgs(u128, u512, 1 << 511);
2986 try testArgs(u256, u512, 0);
2987 try testArgs(u256, u512, 1 << 0);
2988 try testArgs(u256, u512, 1 << 511);
2989 try testArgs(u512, u512, 0);
2990 try testArgs(u512, u512, 1 << 0);
2991 try testArgs(u512, u512, 1 << 511);
2992 try testArgs(u1024, u512, 0);
2993 try testArgs(u1024, u512, 1 << 0);
2994 try testArgs(u1024, u512, 1 << 511);
2995
2996 try testArgs(i8, i513, -1 << 512);
2997 try testArgs(i8, i513, -1);
2998 try testArgs(i8, i513, 0);
2999 try testArgs(i16, i513, -1 << 512);
3000 try testArgs(i16, i513, -1);
3001 try testArgs(i16, i513, 0);
3002 try testArgs(i32, i513, -1 << 512);
3003 try testArgs(i32, i513, -1);
3004 try testArgs(i32, i513, 0);
3005 try testArgs(i64, i513, -1 << 512);
3006 try testArgs(i64, i513, -1);
3007 try testArgs(i64, i513, 0);
3008 try testArgs(i128, i513, -1 << 512);
3009 try testArgs(i128, i513, -1);
3010 try testArgs(i128, i513, 0);
3011 try testArgs(i256, i513, -1 << 512);
3012 try testArgs(i256, i513, -1);
3013 try testArgs(i256, i513, 0);
3014 try testArgs(i512, i513, -1 << 512);
3015 try testArgs(i512, i513, -1);
3016 try testArgs(i512, i513, 0);
3017 try testArgs(i1024, i513, -1 << 512);
3018 try testArgs(i1024, i513, -1);
3019 try testArgs(i1024, i513, 0);
3020 try testArgs(u8, u513, 0);
3021 try testArgs(u8, u513, 1 << 0);
3022 try testArgs(u8, u513, 1 << 512);
3023 try testArgs(u16, u513, 0);
3024 try testArgs(u16, u513, 1 << 0);
3025 try testArgs(u16, u513, 1 << 512);
3026 try testArgs(u32, u513, 0);
3027 try testArgs(u32, u513, 1 << 0);
3028 try testArgs(u32, u513, 1 << 512);
3029 try testArgs(u64, u513, 0);
3030 try testArgs(u64, u513, 1 << 0);
3031 try testArgs(u64, u513, 1 << 512);
3032 try testArgs(u128, u513, 0);
3033 try testArgs(u128, u513, 1 << 0);
3034 try testArgs(u128, u513, 1 << 512);
3035 try testArgs(u256, u513, 0);
3036 try testArgs(u256, u513, 1 << 0);
3037 try testArgs(u256, u513, 1 << 512);
3038 try testArgs(u512, u513, 0);
3039 try testArgs(u512, u513, 1 << 0);
3040 try testArgs(u512, u513, 1 << 512);
3041 try testArgs(u1024, u513, 0);
3042 try testArgs(u1024, u513, 1 << 0);
3043 try testArgs(u1024, u513, 1 << 512);
3044
3045 try testArgs(i8, i1023, -1 << 1022);
3046 try testArgs(i8, i1023, -1);
3047 try testArgs(i8, i1023, 0);
3048 try testArgs(i16, i1023, -1 << 1022);
3049 try testArgs(i16, i1023, -1);
3050 try testArgs(i16, i1023, 0);
3051 try testArgs(i32, i1023, -1 << 1022);
3052 try testArgs(i32, i1023, -1);
3053 try testArgs(i32, i1023, 0);
3054 try testArgs(i64, i1023, -1 << 1022);
3055 try testArgs(i64, i1023, -1);
3056 try testArgs(i64, i1023, 0);
3057 try testArgs(i128, i1023, -1 << 1022);
3058 try testArgs(i128, i1023, -1);
3059 try testArgs(i128, i1023, 0);
3060 try testArgs(i256, i1023, -1 << 1022);
3061 try testArgs(i256, i1023, -1);
3062 try testArgs(i256, i1023, 0);
3063 try testArgs(i512, i1023, -1 << 1022);
3064 try testArgs(i512, i1023, -1);
3065 try testArgs(i512, i1023, 0);
3066 try testArgs(i1024, i1023, -1 << 1022);
3067 try testArgs(i1024, i1023, -1);
3068 try testArgs(i1024, i1023, 0);
3069 try testArgs(u8, u1023, 0);
3070 try testArgs(u8, u1023, 1 << 0);
3071 try testArgs(u8, u1023, 1 << 1022);
3072 try testArgs(u16, u1023, 0);
3073 try testArgs(u16, u1023, 1 << 0);
3074 try testArgs(u16, u1023, 1 << 1022);
3075 try testArgs(u32, u1023, 0);
3076 try testArgs(u32, u1023, 1 << 0);
3077 try testArgs(u32, u1023, 1 << 1022);
3078 try testArgs(u64, u1023, 0);
3079 try testArgs(u64, u1023, 1 << 0);
3080 try testArgs(u64, u1023, 1 << 1022);
3081 try testArgs(u128, u1023, 0);
3082 try testArgs(u128, u1023, 1 << 0);
3083 try testArgs(u128, u1023, 1 << 1022);
3084 try testArgs(u256, u1023, 0);
3085 try testArgs(u256, u1023, 1 << 0);
3086 try testArgs(u256, u1023, 1 << 1022);
3087 try testArgs(u512, u1023, 0);
3088 try testArgs(u512, u1023, 1 << 0);
3089 try testArgs(u512, u1023, 1 << 1022);
3090 try testArgs(u1024, u1023, 0);
3091 try testArgs(u1024, u1023, 1 << 0);
3092 try testArgs(u1024, u1023, 1 << 1022);
3093
3094 try testArgs(i8, i1024, -1 << 1023);
3095 try testArgs(i8, i1024, -1);
3096 try testArgs(i8, i1024, 0);
3097 try testArgs(i16, i1024, -1 << 1023);
3098 try testArgs(i16, i1024, -1);
3099 try testArgs(i16, i1024, 0);
3100 try testArgs(i32, i1024, -1 << 1023);
3101 try testArgs(i32, i1024, -1);
3102 try testArgs(i32, i1024, 0);
3103 try testArgs(i64, i1024, -1 << 1023);
3104 try testArgs(i64, i1024, -1);
3105 try testArgs(i64, i1024, 0);
3106 try testArgs(i128, i1024, -1 << 1023);
3107 try testArgs(i128, i1024, -1);
3108 try testArgs(i128, i1024, 0);
3109 try testArgs(i256, i1024, -1 << 1023);
3110 try testArgs(i256, i1024, -1);
3111 try testArgs(i256, i1024, 0);
3112 try testArgs(i512, i1024, -1 << 1023);
3113 try testArgs(i512, i1024, -1);
3114 try testArgs(i512, i1024, 0);
3115 try testArgs(i1024, i1024, -1 << 1023);
3116 try testArgs(i1024, i1024, -1);
3117 try testArgs(i1024, i1024, 0);
3118 try testArgs(u8, u1024, 0);
3119 try testArgs(u8, u1024, 1 << 0);
3120 try testArgs(u8, u1024, 1 << 1023);
3121 try testArgs(u16, u1024, 0);
3122 try testArgs(u16, u1024, 1 << 0);
3123 try testArgs(u16, u1024, 1 << 1023);
3124 try testArgs(u32, u1024, 0);
3125 try testArgs(u32, u1024, 1 << 0);
3126 try testArgs(u32, u1024, 1 << 1023);
3127 try testArgs(u64, u1024, 0);
3128 try testArgs(u64, u1024, 1 << 0);
3129 try testArgs(u64, u1024, 1 << 1023);
3130 try testArgs(u128, u1024, 0);
3131 try testArgs(u128, u1024, 1 << 0);
3132 try testArgs(u128, u1024, 1 << 1023);
3133 try testArgs(u256, u1024, 0);
3134 try testArgs(u256, u1024, 1 << 0);
3135 try testArgs(u256, u1024, 1 << 1023);
3136 try testArgs(u512, u1024, 0);
3137 try testArgs(u512, u1024, 1 << 0);
3138 try testArgs(u512, u1024, 1 << 1023);
3139 try testArgs(u1024, u1024, 0);
3140 try testArgs(u1024, u1024, 1 << 0);
3141 try testArgs(u1024, u1024, 1 << 1023);
3142
3143 try testArgs(i8, i1025, -1 << 1024);
3144 try testArgs(i8, i1025, -1);
3145 try testArgs(i8, i1025, 0);
3146 try testArgs(i16, i1025, -1 << 1024);
3147 try testArgs(i16, i1025, -1);
3148 try testArgs(i16, i1025, 0);
3149 try testArgs(i32, i1025, -1 << 1024);
3150 try testArgs(i32, i1025, -1);
3151 try testArgs(i32, i1025, 0);
3152 try testArgs(i64, i1025, -1 << 1024);
3153 try testArgs(i64, i1025, -1);
3154 try testArgs(i64, i1025, 0);
3155 try testArgs(i128, i1025, -1 << 1024);
3156 try testArgs(i128, i1025, -1);
3157 try testArgs(i128, i1025, 0);
3158 try testArgs(i256, i1025, -1 << 1024);
3159 try testArgs(i256, i1025, -1);
3160 try testArgs(i256, i1025, 0);
3161 try testArgs(i512, i1025, -1 << 1024);
3162 try testArgs(i512, i1025, -1);
3163 try testArgs(i512, i1025, 0);
3164 try testArgs(i1024, i1025, -1 << 1024);
3165 try testArgs(i1024, i1025, -1);
3166 try testArgs(i1024, i1025, 0);
3167 try testArgs(u8, u1025, 0);
3168 try testArgs(u8, u1025, 1 << 0);
3169 try testArgs(u8, u1025, 1 << 1024);
3170 try testArgs(u16, u1025, 0);
3171 try testArgs(u16, u1025, 1 << 0);
3172 try testArgs(u16, u1025, 1 << 1024);
3173 try testArgs(u32, u1025, 0);
3174 try testArgs(u32, u1025, 1 << 0);
3175 try testArgs(u32, u1025, 1 << 1024);
3176 try testArgs(u64, u1025, 0);
3177 try testArgs(u64, u1025, 1 << 0);
3178 try testArgs(u64, u1025, 1 << 1024);
3179 try testArgs(u128, u1025, 0);
3180 try testArgs(u128, u1025, 1 << 0);
3181 try testArgs(u128, u1025, 1 << 1024);
3182 try testArgs(u256, u1025, 0);
3183 try testArgs(u256, u1025, 1 << 0);
3184 try testArgs(u256, u1025, 1 << 1024);
3185 try testArgs(u512, u1025, 0);
3186 try testArgs(u512, u1025, 1 << 0);
3187 try testArgs(u512, u1025, 1 << 1024);
3188 try testArgs(u1024, u1025, 0);
3189 try testArgs(u1024, u1025, 1 << 0);
3190 try testArgs(u1024, u1025, 1 << 1024);
3191 }
3192 fn testInts() !void {
3193 try testSameSignednessInts();
3194
3195 try testArgs(u8, i1, -1);
3196 try testArgs(u8, i1, 0);
3197 try testArgs(u16, i1, -1);
3198 try testArgs(u16, i1, 0);
3199 try testArgs(u32, i1, -1);
3200 try testArgs(u32, i1, 0);
3201 try testArgs(u64, i1, -1);
3202 try testArgs(u64, i1, 0);
3203 try testArgs(u128, i1, -1);
3204 try testArgs(u128, i1, 0);
3205 try testArgs(u256, i1, -1);
3206 try testArgs(u256, i1, 0);
3207 try testArgs(u512, i1, -1);
3208 try testArgs(u512, i1, 0);
3209 try testArgs(u1024, i1, -1);
3210 try testArgs(u1024, i1, 0);
3211 try testArgs(i8, u1, 0);
3212 try testArgs(i8, u1, 1 << 0);
3213 try testArgs(i16, u1, 0);
3214 try testArgs(i16, u1, 1 << 0);
3215 try testArgs(i32, u1, 0);
3216 try testArgs(i32, u1, 1 << 0);
3217 try testArgs(i64, u1, 0);
3218 try testArgs(i64, u1, 1 << 0);
3219 try testArgs(i128, u1, 0);
3220 try testArgs(i128, u1, 1 << 0);
3221 try testArgs(i256, u1, 0);
3222 try testArgs(i256, u1, 1 << 0);
3223 try testArgs(i512, u1, 0);
3224 try testArgs(i512, u1, 1 << 0);
3225 try testArgs(i1024, u1, 0);
3226 try testArgs(i1024, u1, 1 << 0);
3227
3228 try testArgs(u8, i2, -1 << 1);
3229 try testArgs(u8, i2, -1);
3230 try testArgs(u8, i2, 0);
3231 try testArgs(u16, i2, -1 << 1);
3232 try testArgs(u16, i2, -1);
3233 try testArgs(u16, i2, 0);
3234 try testArgs(u32, i2, -1 << 1);
3235 try testArgs(u32, i2, -1);
3236 try testArgs(u32, i2, 0);
3237 try testArgs(u64, i2, -1 << 1);
3238 try testArgs(u64, i2, -1);
3239 try testArgs(u64, i2, 0);
3240 try testArgs(u128, i2, -1 << 1);
3241 try testArgs(u128, i2, -1);
3242 try testArgs(u128, i2, 0);
3243 try testArgs(u256, i2, -1 << 1);
3244 try testArgs(u256, i2, -1);
3245 try testArgs(u256, i2, 0);
3246 try testArgs(u512, i2, -1 << 1);
3247 try testArgs(u512, i2, -1);
3248 try testArgs(u512, i2, 0);
3249 try testArgs(u1024, i2, -1 << 1);
3250 try testArgs(u1024, i2, -1);
3251 try testArgs(u1024, i2, 0);
3252 try testArgs(i8, u2, 0);
3253 try testArgs(i8, u2, 1 << 0);
3254 try testArgs(i8, u2, 1 << 1);
3255 try testArgs(i16, u2, 0);
3256 try testArgs(i16, u2, 1 << 0);
3257 try testArgs(i16, u2, 1 << 1);
3258 try testArgs(i32, u2, 0);
3259 try testArgs(i32, u2, 1 << 0);
3260 try testArgs(i32, u2, 1 << 1);
3261 try testArgs(i64, u2, 0);
3262 try testArgs(i64, u2, 1 << 0);
3263 try testArgs(i64, u2, 1 << 1);
3264 try testArgs(i128, u2, 0);
3265 try testArgs(i128, u2, 1 << 0);
3266 try testArgs(i128, u2, 1 << 1);
3267 try testArgs(i256, u2, 0);
3268 try testArgs(i256, u2, 1 << 0);
3269 try testArgs(i256, u2, 1 << 1);
3270 try testArgs(i512, u2, 0);
3271 try testArgs(i512, u2, 1 << 0);
3272 try testArgs(i512, u2, 1 << 1);
3273 try testArgs(i1024, u2, 0);
3274 try testArgs(i1024, u2, 1 << 0);
3275 try testArgs(i1024, u2, 1 << 1);
3276
3277 try testArgs(u8, i3, -1 << 2);
3278 try testArgs(u8, i3, -1);
3279 try testArgs(u8, i3, 0);
3280 try testArgs(u16, i3, -1 << 2);
3281 try testArgs(u16, i3, -1);
3282 try testArgs(u16, i3, 0);
3283 try testArgs(u32, i3, -1 << 2);
3284 try testArgs(u32, i3, -1);
3285 try testArgs(u32, i3, 0);
3286 try testArgs(u64, i3, -1 << 2);
3287 try testArgs(u64, i3, -1);
3288 try testArgs(u64, i3, 0);
3289 try testArgs(u128, i3, -1 << 2);
3290 try testArgs(u128, i3, -1);
3291 try testArgs(u128, i3, 0);
3292 try testArgs(u256, i3, -1 << 2);
3293 try testArgs(u256, i3, -1);
3294 try testArgs(u256, i3, 0);
3295 try testArgs(u512, i3, -1 << 2);
3296 try testArgs(u512, i3, -1);
3297 try testArgs(u512, i3, 0);
3298 try testArgs(u1024, i3, -1 << 2);
3299 try testArgs(u1024, i3, -1);
3300 try testArgs(u1024, i3, 0);
3301 try testArgs(i8, u3, 0);
3302 try testArgs(i8, u3, 1 << 0);
3303 try testArgs(i8, u3, 1 << 2);
3304 try testArgs(i16, u3, 0);
3305 try testArgs(i16, u3, 1 << 0);
3306 try testArgs(i16, u3, 1 << 2);
3307 try testArgs(i32, u3, 0);
3308 try testArgs(i32, u3, 1 << 0);
3309 try testArgs(i32, u3, 1 << 2);
3310 try testArgs(i64, u3, 0);
3311 try testArgs(i64, u3, 1 << 0);
3312 try testArgs(i64, u3, 1 << 2);
3313 try testArgs(i128, u3, 0);
3314 try testArgs(i128, u3, 1 << 0);
3315 try testArgs(i128, u3, 1 << 2);
3316 try testArgs(i256, u3, 0);
3317 try testArgs(i256, u3, 1 << 0);
3318 try testArgs(i256, u3, 1 << 2);
3319 try testArgs(i512, u3, 0);
3320 try testArgs(i512, u3, 1 << 0);
3321 try testArgs(i512, u3, 1 << 2);
3322 try testArgs(i1024, u3, 0);
3323 try testArgs(i1024, u3, 1 << 0);
3324 try testArgs(i1024, u3, 1 << 2);
3325
3326 try testArgs(u8, i4, -1 << 3);
3327 try testArgs(u8, i4, -1);
3328 try testArgs(u8, i4, 0);
3329 try testArgs(u16, i4, -1 << 3);
3330 try testArgs(u16, i4, -1);
3331 try testArgs(u16, i4, 0);
3332 try testArgs(u32, i4, -1 << 3);
3333 try testArgs(u32, i4, -1);
3334 try testArgs(u32, i4, 0);
3335 try testArgs(u64, i4, -1 << 3);
3336 try testArgs(u64, i4, -1);
3337 try testArgs(u64, i4, 0);
3338 try testArgs(u128, i4, -1 << 3);
3339 try testArgs(u128, i4, -1);
3340 try testArgs(u128, i4, 0);
3341 try testArgs(u256, i4, -1 << 3);
3342 try testArgs(u256, i4, -1);
3343 try testArgs(u256, i4, 0);
3344 try testArgs(u512, i4, -1 << 3);
3345 try testArgs(u512, i4, -1);
3346 try testArgs(u512, i4, 0);
3347 try testArgs(u1024, i4, -1 << 3);
3348 try testArgs(u1024, i4, -1);
3349 try testArgs(u1024, i4, 0);
3350 try testArgs(i8, u4, 0);
3351 try testArgs(i8, u4, 1 << 0);
3352 try testArgs(i8, u4, 1 << 3);
3353 try testArgs(i16, u4, 0);
3354 try testArgs(i16, u4, 1 << 0);
3355 try testArgs(i16, u4, 1 << 3);
3356 try testArgs(i32, u4, 0);
3357 try testArgs(i32, u4, 1 << 0);
3358 try testArgs(i32, u4, 1 << 3);
3359 try testArgs(i64, u4, 0);
3360 try testArgs(i64, u4, 1 << 0);
3361 try testArgs(i64, u4, 1 << 3);
3362 try testArgs(i128, u4, 0);
3363 try testArgs(i128, u4, 1 << 0);
3364 try testArgs(i128, u4, 1 << 3);
3365 try testArgs(i256, u4, 0);
3366 try testArgs(i256, u4, 1 << 0);
3367 try testArgs(i256, u4, 1 << 3);
3368 try testArgs(i512, u4, 0);
3369 try testArgs(i512, u4, 1 << 0);
3370 try testArgs(i512, u4, 1 << 3);
3371 try testArgs(i1024, u4, 0);
3372 try testArgs(i1024, u4, 1 << 0);
3373 try testArgs(i1024, u4, 1 << 3);
3374
3375 try testArgs(u8, i5, -1 << 4);
3376 try testArgs(u8, i5, -1);
3377 try testArgs(u8, i5, 0);
3378 try testArgs(u16, i5, -1 << 4);
3379 try testArgs(u16, i5, -1);
3380 try testArgs(u16, i5, 0);
3381 try testArgs(u32, i5, -1 << 4);
3382 try testArgs(u32, i5, -1);
3383 try testArgs(u32, i5, 0);
3384 try testArgs(u64, i5, -1 << 4);
3385 try testArgs(u64, i5, -1);
3386 try testArgs(u64, i5, 0);
3387 try testArgs(u128, i5, -1 << 4);
3388 try testArgs(u128, i5, -1);
3389 try testArgs(u128, i5, 0);
3390 try testArgs(u256, i5, -1 << 4);
3391 try testArgs(u256, i5, -1);
3392 try testArgs(u256, i5, 0);
3393 try testArgs(u512, i5, -1 << 4);
3394 try testArgs(u512, i5, -1);
3395 try testArgs(u512, i5, 0);
3396 try testArgs(u1024, i5, -1 << 4);
3397 try testArgs(u1024, i5, -1);
3398 try testArgs(u1024, i5, 0);
3399 try testArgs(i8, u5, 0);
3400 try testArgs(i8, u5, 1 << 0);
3401 try testArgs(i8, u5, 1 << 4);
3402 try testArgs(i16, u5, 0);
3403 try testArgs(i16, u5, 1 << 0);
3404 try testArgs(i16, u5, 1 << 4);
3405 try testArgs(i32, u5, 0);
3406 try testArgs(i32, u5, 1 << 0);
3407 try testArgs(i32, u5, 1 << 4);
3408 try testArgs(i64, u5, 0);
3409 try testArgs(i64, u5, 1 << 0);
3410 try testArgs(i64, u5, 1 << 4);
3411 try testArgs(i128, u5, 0);
3412 try testArgs(i128, u5, 1 << 0);
3413 try testArgs(i128, u5, 1 << 4);
3414 try testArgs(i256, u5, 0);
3415 try testArgs(i256, u5, 1 << 0);
3416 try testArgs(i256, u5, 1 << 4);
3417 try testArgs(i512, u5, 0);
3418 try testArgs(i512, u5, 1 << 0);
3419 try testArgs(i512, u5, 1 << 4);
3420 try testArgs(i1024, u5, 0);
3421 try testArgs(i1024, u5, 1 << 0);
3422 try testArgs(i1024, u5, 1 << 4);
3423
3424 try testArgs(u8, i7, -1 << 6);
3425 try testArgs(u8, i7, -1);
3426 try testArgs(u8, i7, 0);
3427 try testArgs(u16, i7, -1 << 6);
3428 try testArgs(u16, i7, -1);
3429 try testArgs(u16, i7, 0);
3430 try testArgs(u32, i7, -1 << 6);
3431 try testArgs(u32, i7, -1);
3432 try testArgs(u32, i7, 0);
3433 try testArgs(u64, i7, -1 << 6);
3434 try testArgs(u64, i7, -1);
3435 try testArgs(u64, i7, 0);
3436 try testArgs(u128, i7, -1 << 6);
3437 try testArgs(u128, i7, -1);
3438 try testArgs(u128, i7, 0);
3439 try testArgs(u256, i7, -1 << 6);
3440 try testArgs(u256, i7, -1);
3441 try testArgs(u256, i7, 0);
3442 try testArgs(u512, i7, -1 << 6);
3443 try testArgs(u512, i7, -1);
3444 try testArgs(u512, i7, 0);
3445 try testArgs(u1024, i7, -1 << 6);
3446 try testArgs(u1024, i7, -1);
3447 try testArgs(u1024, i7, 0);
3448 try testArgs(i8, u7, 0);
3449 try testArgs(i8, u7, 1 << 0);
3450 try testArgs(i8, u7, 1 << 6);
3451 try testArgs(i16, u7, 0);
3452 try testArgs(i16, u7, 1 << 0);
3453 try testArgs(i16, u7, 1 << 6);
3454 try testArgs(i32, u7, 0);
3455 try testArgs(i32, u7, 1 << 0);
3456 try testArgs(i32, u7, 1 << 6);
3457 try testArgs(i64, u7, 0);
3458 try testArgs(i64, u7, 1 << 0);
3459 try testArgs(i64, u7, 1 << 6);
3460 try testArgs(i128, u7, 0);
3461 try testArgs(i128, u7, 1 << 0);
3462 try testArgs(i128, u7, 1 << 6);
3463 try testArgs(i256, u7, 0);
3464 try testArgs(i256, u7, 1 << 0);
3465 try testArgs(i256, u7, 1 << 6);
3466 try testArgs(i512, u7, 0);
3467 try testArgs(i512, u7, 1 << 0);
3468 try testArgs(i512, u7, 1 << 6);
3469 try testArgs(i1024, u7, 0);
3470 try testArgs(i1024, u7, 1 << 0);
3471 try testArgs(i1024, u7, 1 << 6);
3472
3473 try testArgs(u8, i8, -1 << 7);
3474 try testArgs(u8, i8, -1);
3475 try testArgs(u8, i8, 0);
3476 try testArgs(u16, i8, -1 << 7);
3477 try testArgs(u16, i8, -1);
3478 try testArgs(u16, i8, 0);
3479 try testArgs(u32, i8, -1 << 7);
3480 try testArgs(u32, i8, -1);
3481 try testArgs(u32, i8, 0);
3482 try testArgs(u64, i8, -1 << 7);
3483 try testArgs(u64, i8, -1);
3484 try testArgs(u64, i8, 0);
3485 try testArgs(u128, i8, -1 << 7);
3486 try testArgs(u128, i8, -1);
3487 try testArgs(u128, i8, 0);
3488 try testArgs(u256, i8, -1 << 7);
3489 try testArgs(u256, i8, -1);
3490 try testArgs(u256, i8, 0);
3491 try testArgs(u512, i8, -1 << 7);
3492 try testArgs(u512, i8, -1);
3493 try testArgs(u512, i8, 0);
3494 try testArgs(u1024, i8, -1 << 7);
3495 try testArgs(u1024, i8, -1);
3496 try testArgs(u1024, i8, 0);
3497 try testArgs(i8, u8, 0);
3498 try testArgs(i8, u8, 1 << 0);
3499 try testArgs(i8, u8, 1 << 7);
3500 try testArgs(i16, u8, 0);
3501 try testArgs(i16, u8, 1 << 0);
3502 try testArgs(i16, u8, 1 << 7);
3503 try testArgs(i32, u8, 0);
3504 try testArgs(i32, u8, 1 << 0);
3505 try testArgs(i32, u8, 1 << 7);
3506 try testArgs(i64, u8, 0);
3507 try testArgs(i64, u8, 1 << 0);
3508 try testArgs(i64, u8, 1 << 7);
3509 try testArgs(i128, u8, 0);
3510 try testArgs(i128, u8, 1 << 0);
3511 try testArgs(i128, u8, 1 << 7);
3512 try testArgs(i256, u8, 0);
3513 try testArgs(i256, u8, 1 << 0);
3514 try testArgs(i256, u8, 1 << 7);
3515 try testArgs(i512, u8, 0);
3516 try testArgs(i512, u8, 1 << 0);
3517 try testArgs(i512, u8, 1 << 7);
3518 try testArgs(i1024, u8, 0);
3519 try testArgs(i1024, u8, 1 << 0);
3520 try testArgs(i1024, u8, 1 << 7);
3521
3522 try testArgs(u8, i9, -1 << 8);
3523 try testArgs(u8, i9, -1);
3524 try testArgs(u8, i9, 0);
3525 try testArgs(u16, i9, -1 << 8);
3526 try testArgs(u16, i9, -1);
3527 try testArgs(u16, i9, 0);
3528 try testArgs(u32, i9, -1 << 8);
3529 try testArgs(u32, i9, -1);
3530 try testArgs(u32, i9, 0);
3531 try testArgs(u64, i9, -1 << 8);
3532 try testArgs(u64, i9, -1);
3533 try testArgs(u64, i9, 0);
3534 try testArgs(u128, i9, -1 << 8);
3535 try testArgs(u128, i9, -1);
3536 try testArgs(u128, i9, 0);
3537 try testArgs(u256, i9, -1 << 8);
3538 try testArgs(u256, i9, -1);
3539 try testArgs(u256, i9, 0);
3540 try testArgs(u512, i9, -1 << 8);
3541 try testArgs(u512, i9, -1);
3542 try testArgs(u512, i9, 0);
3543 try testArgs(u1024, i9, -1 << 8);
3544 try testArgs(u1024, i9, -1);
3545 try testArgs(u1024, i9, 0);
3546 try testArgs(i8, u9, 0);
3547 try testArgs(i8, u9, 1 << 0);
3548 try testArgs(i8, u9, 1 << 8);
3549 try testArgs(i16, u9, 0);
3550 try testArgs(i16, u9, 1 << 0);
3551 try testArgs(i16, u9, 1 << 8);
3552 try testArgs(i32, u9, 0);
3553 try testArgs(i32, u9, 1 << 0);
3554 try testArgs(i32, u9, 1 << 8);
3555 try testArgs(i64, u9, 0);
3556 try testArgs(i64, u9, 1 << 0);
3557 try testArgs(i64, u9, 1 << 8);
3558 try testArgs(i128, u9, 0);
3559 try testArgs(i128, u9, 1 << 0);
3560 try testArgs(i128, u9, 1 << 8);
3561 try testArgs(i256, u9, 0);
3562 try testArgs(i256, u9, 1 << 0);
3563 try testArgs(i256, u9, 1 << 8);
3564 try testArgs(i512, u9, 0);
3565 try testArgs(i512, u9, 1 << 0);
3566 try testArgs(i512, u9, 1 << 8);
3567 try testArgs(i1024, u9, 0);
3568 try testArgs(i1024, u9, 1 << 0);
3569 try testArgs(i1024, u9, 1 << 8);
3570
3571 try testArgs(u8, i15, -1 << 14);
3572 try testArgs(u8, i15, -1);
3573 try testArgs(u8, i15, 0);
3574 try testArgs(u16, i15, -1 << 14);
3575 try testArgs(u16, i15, -1);
3576 try testArgs(u16, i15, 0);
3577 try testArgs(u32, i15, -1 << 14);
3578 try testArgs(u32, i15, -1);
3579 try testArgs(u32, i15, 0);
3580 try testArgs(u64, i15, -1 << 14);
3581 try testArgs(u64, i15, -1);
3582 try testArgs(u64, i15, 0);
3583 try testArgs(u128, i15, -1 << 14);
3584 try testArgs(u128, i15, -1);
3585 try testArgs(u128, i15, 0);
3586 try testArgs(u256, i15, -1 << 14);
3587 try testArgs(u256, i15, -1);
3588 try testArgs(u256, i15, 0);
3589 try testArgs(u512, i15, -1 << 14);
3590 try testArgs(u512, i15, -1);
3591 try testArgs(u512, i15, 0);
3592 try testArgs(u1024, i15, -1 << 14);
3593 try testArgs(u1024, i15, -1);
3594 try testArgs(u1024, i15, 0);
3595 try testArgs(i8, u15, 0);
3596 try testArgs(i8, u15, 1 << 0);
3597 try testArgs(i8, u15, 1 << 14);
3598 try testArgs(i16, u15, 0);
3599 try testArgs(i16, u15, 1 << 0);
3600 try testArgs(i16, u15, 1 << 14);
3601 try testArgs(i32, u15, 0);
3602 try testArgs(i32, u15, 1 << 0);
3603 try testArgs(i32, u15, 1 << 14);
3604 try testArgs(i64, u15, 0);
3605 try testArgs(i64, u15, 1 << 0);
3606 try testArgs(i64, u15, 1 << 14);
3607 try testArgs(i128, u15, 0);
3608 try testArgs(i128, u15, 1 << 0);
3609 try testArgs(i128, u15, 1 << 14);
3610 try testArgs(i256, u15, 0);
3611 try testArgs(i256, u15, 1 << 0);
3612 try testArgs(i256, u15, 1 << 14);
3613 try testArgs(i512, u15, 0);
3614 try testArgs(i512, u15, 1 << 0);
3615 try testArgs(i512, u15, 1 << 14);
3616 try testArgs(i1024, u15, 0);
3617 try testArgs(i1024, u15, 1 << 0);
3618 try testArgs(i1024, u15, 1 << 14);
3619
3620 try testArgs(u8, i16, -1 << 15);
3621 try testArgs(u8, i16, -1);
3622 try testArgs(u8, i16, 0);
3623 try testArgs(u16, i16, -1 << 15);
3624 try testArgs(u16, i16, -1);
3625 try testArgs(u16, i16, 0);
3626 try testArgs(u32, i16, -1 << 15);
3627 try testArgs(u32, i16, -1);
3628 try testArgs(u32, i16, 0);
3629 try testArgs(u64, i16, -1 << 15);
3630 try testArgs(u64, i16, -1);
3631 try testArgs(u64, i16, 0);
3632 try testArgs(u128, i16, -1 << 15);
3633 try testArgs(u128, i16, -1);
3634 try testArgs(u128, i16, 0);
3635 try testArgs(u256, i16, -1 << 15);
3636 try testArgs(u256, i16, -1);
3637 try testArgs(u256, i16, 0);
3638 try testArgs(u512, i16, -1 << 15);
3639 try testArgs(u512, i16, -1);
3640 try testArgs(u512, i16, 0);
3641 try testArgs(u1024, i16, -1 << 15);
3642 try testArgs(u1024, i16, -1);
3643 try testArgs(u1024, i16, 0);
3644 try testArgs(i8, u16, 0);
3645 try testArgs(i8, u16, 1 << 0);
3646 try testArgs(i8, u16, 1 << 15);
3647 try testArgs(i16, u16, 0);
3648 try testArgs(i16, u16, 1 << 0);
3649 try testArgs(i16, u16, 1 << 15);
3650 try testArgs(i32, u16, 0);
3651 try testArgs(i32, u16, 1 << 0);
3652 try testArgs(i32, u16, 1 << 15);
3653 try testArgs(i64, u16, 0);
3654 try testArgs(i64, u16, 1 << 0);
3655 try testArgs(i64, u16, 1 << 15);
3656 try testArgs(i128, u16, 0);
3657 try testArgs(i128, u16, 1 << 0);
3658 try testArgs(i128, u16, 1 << 15);
3659 try testArgs(i256, u16, 0);
3660 try testArgs(i256, u16, 1 << 0);
3661 try testArgs(i256, u16, 1 << 15);
3662 try testArgs(i512, u16, 0);
3663 try testArgs(i512, u16, 1 << 0);
3664 try testArgs(i512, u16, 1 << 15);
3665 try testArgs(i1024, u16, 0);
3666 try testArgs(i1024, u16, 1 << 0);
3667 try testArgs(i1024, u16, 1 << 15);
3668
3669 try testArgs(u8, i17, -1 << 16);
3670 try testArgs(u8, i17, -1);
3671 try testArgs(u8, i17, 0);
3672 try testArgs(u16, i17, -1 << 16);
3673 try testArgs(u16, i17, -1);
3674 try testArgs(u16, i17, 0);
3675 try testArgs(u32, i17, -1 << 16);
3676 try testArgs(u32, i17, -1);
3677 try testArgs(u32, i17, 0);
3678 try testArgs(u64, i17, -1 << 16);
3679 try testArgs(u64, i17, -1);
3680 try testArgs(u64, i17, 0);
3681 try testArgs(u128, i17, -1 << 16);
3682 try testArgs(u128, i17, -1);
3683 try testArgs(u128, i17, 0);
3684 try testArgs(u256, i17, -1 << 16);
3685 try testArgs(u256, i17, -1);
3686 try testArgs(u256, i17, 0);
3687 try testArgs(u512, i17, -1 << 16);
3688 try testArgs(u512, i17, -1);
3689 try testArgs(u512, i17, 0);
3690 try testArgs(u1024, i17, -1 << 16);
3691 try testArgs(u1024, i17, -1);
3692 try testArgs(u1024, i17, 0);
3693 try testArgs(i8, u17, 0);
3694 try testArgs(i8, u17, 1 << 0);
3695 try testArgs(i8, u17, 1 << 16);
3696 try testArgs(i16, u17, 0);
3697 try testArgs(i16, u17, 1 << 0);
3698 try testArgs(i16, u17, 1 << 16);
3699 try testArgs(i32, u17, 0);
3700 try testArgs(i32, u17, 1 << 0);
3701 try testArgs(i32, u17, 1 << 16);
3702 try testArgs(i64, u17, 0);
3703 try testArgs(i64, u17, 1 << 0);
3704 try testArgs(i64, u17, 1 << 16);
3705 try testArgs(i128, u17, 0);
3706 try testArgs(i128, u17, 1 << 0);
3707 try testArgs(i128, u17, 1 << 16);
3708 try testArgs(i256, u17, 0);
3709 try testArgs(i256, u17, 1 << 0);
3710 try testArgs(i256, u17, 1 << 16);
3711 try testArgs(i512, u17, 0);
3712 try testArgs(i512, u17, 1 << 0);
3713 try testArgs(i512, u17, 1 << 16);
3714 try testArgs(i1024, u17, 0);
3715 try testArgs(i1024, u17, 1 << 0);
3716 try testArgs(i1024, u17, 1 << 16);
3717
3718 try testArgs(u8, i31, -1 << 30);
3719 try testArgs(u8, i31, -1);
3720 try testArgs(u8, i31, 0);
3721 try testArgs(u16, i31, -1 << 30);
3722 try testArgs(u16, i31, -1);
3723 try testArgs(u16, i31, 0);
3724 try testArgs(u32, i31, -1 << 30);
3725 try testArgs(u32, i31, -1);
3726 try testArgs(u32, i31, 0);
3727 try testArgs(u64, i31, -1 << 30);
3728 try testArgs(u64, i31, -1);
3729 try testArgs(u64, i31, 0);
3730 try testArgs(u128, i31, -1 << 30);
3731 try testArgs(u128, i31, -1);
3732 try testArgs(u128, i31, 0);
3733 try testArgs(u256, i31, -1 << 30);
3734 try testArgs(u256, i31, -1);
3735 try testArgs(u256, i31, 0);
3736 try testArgs(u512, i31, -1 << 30);
3737 try testArgs(u512, i31, -1);
3738 try testArgs(u512, i31, 0);
3739 try testArgs(u1024, i31, -1 << 30);
3740 try testArgs(u1024, i31, -1);
3741 try testArgs(u1024, i31, 0);
3742 try testArgs(i8, u31, 0);
3743 try testArgs(i8, u31, 1 << 0);
3744 try testArgs(i8, u31, 1 << 30);
3745 try testArgs(i16, u31, 0);
3746 try testArgs(i16, u31, 1 << 0);
3747 try testArgs(i16, u31, 1 << 30);
3748 try testArgs(i32, u31, 0);
3749 try testArgs(i32, u31, 1 << 0);
3750 try testArgs(i32, u31, 1 << 30);
3751 try testArgs(i64, u31, 0);
3752 try testArgs(i64, u31, 1 << 0);
3753 try testArgs(i64, u31, 1 << 30);
3754 try testArgs(i128, u31, 0);
3755 try testArgs(i128, u31, 1 << 0);
3756 try testArgs(i128, u31, 1 << 30);
3757 try testArgs(i256, u31, 0);
3758 try testArgs(i256, u31, 1 << 0);
3759 try testArgs(i256, u31, 1 << 30);
3760 try testArgs(i512, u31, 0);
3761 try testArgs(i512, u31, 1 << 0);
3762 try testArgs(i512, u31, 1 << 30);
3763 try testArgs(i1024, u31, 0);
3764 try testArgs(i1024, u31, 1 << 0);
3765 try testArgs(i1024, u31, 1 << 30);
3766
3767 try testArgs(u8, i32, -1 << 31);
3768 try testArgs(u8, i32, -1);
3769 try testArgs(u8, i32, 0);
3770 try testArgs(u16, i32, -1 << 31);
3771 try testArgs(u16, i32, -1);
3772 try testArgs(u16, i32, 0);
3773 try testArgs(u32, i32, -1 << 31);
3774 try testArgs(u32, i32, -1);
3775 try testArgs(u32, i32, 0);
3776 try testArgs(u64, i32, -1 << 31);
3777 try testArgs(u64, i32, -1);
3778 try testArgs(u64, i32, 0);
3779 try testArgs(u128, i32, -1 << 31);
3780 try testArgs(u128, i32, -1);
3781 try testArgs(u128, i32, 0);
3782 try testArgs(u256, i32, -1 << 31);
3783 try testArgs(u256, i32, -1);
3784 try testArgs(u256, i32, 0);
3785 try testArgs(u512, i32, -1 << 31);
3786 try testArgs(u512, i32, -1);
3787 try testArgs(u512, i32, 0);
3788 try testArgs(u1024, i32, -1 << 31);
3789 try testArgs(u1024, i32, -1);
3790 try testArgs(u1024, i32, 0);
3791 try testArgs(i8, u32, 0);
3792 try testArgs(i8, u32, 1 << 0);
3793 try testArgs(i8, u32, 1 << 31);
3794 try testArgs(i16, u32, 0);
3795 try testArgs(i16, u32, 1 << 0);
3796 try testArgs(i16, u32, 1 << 31);
3797 try testArgs(i32, u32, 0);
3798 try testArgs(i32, u32, 1 << 0);
3799 try testArgs(i32, u32, 1 << 31);
3800 try testArgs(i64, u32, 0);
3801 try testArgs(i64, u32, 1 << 0);
3802 try testArgs(i64, u32, 1 << 31);
3803 try testArgs(i128, u32, 0);
3804 try testArgs(i128, u32, 1 << 0);
3805 try testArgs(i128, u32, 1 << 31);
3806 try testArgs(i256, u32, 0);
3807 try testArgs(i256, u32, 1 << 0);
3808 try testArgs(i256, u32, 1 << 31);
3809 try testArgs(i512, u32, 0);
3810 try testArgs(i512, u32, 1 << 0);
3811 try testArgs(i512, u32, 1 << 31);
3812 try testArgs(i1024, u32, 0);
3813 try testArgs(i1024, u32, 1 << 0);
3814 try testArgs(i1024, u32, 1 << 31);
3815
3816 try testArgs(u8, i33, -1 << 32);
3817 try testArgs(u8, i33, -1);
3818 try testArgs(u8, i33, 0);
3819 try testArgs(u16, i33, -1 << 32);
3820 try testArgs(u16, i33, -1);
3821 try testArgs(u16, i33, 0);
3822 try testArgs(u32, i33, -1 << 32);
3823 try testArgs(u32, i33, -1);
3824 try testArgs(u32, i33, 0);
3825 try testArgs(u64, i33, -1 << 32);
3826 try testArgs(u64, i33, -1);
3827 try testArgs(u64, i33, 0);
3828 try testArgs(u128, i33, -1 << 32);
3829 try testArgs(u128, i33, -1);
3830 try testArgs(u128, i33, 0);
3831 try testArgs(u256, i33, -1 << 32);
3832 try testArgs(u256, i33, -1);
3833 try testArgs(u256, i33, 0);
3834 try testArgs(u512, i33, -1 << 32);
3835 try testArgs(u512, i33, -1);
3836 try testArgs(u512, i33, 0);
3837 try testArgs(u1024, i33, -1 << 32);
3838 try testArgs(u1024, i33, -1);
3839 try testArgs(u1024, i33, 0);
3840 try testArgs(i8, u33, 0);
3841 try testArgs(i8, u33, 1 << 0);
3842 try testArgs(i8, u33, 1 << 32);
3843 try testArgs(i16, u33, 0);
3844 try testArgs(i16, u33, 1 << 0);
3845 try testArgs(i16, u33, 1 << 32);
3846 try testArgs(i32, u33, 0);
3847 try testArgs(i32, u33, 1 << 0);
3848 try testArgs(i32, u33, 1 << 32);
3849 try testArgs(i64, u33, 0);
3850 try testArgs(i64, u33, 1 << 0);
3851 try testArgs(i64, u33, 1 << 32);
3852 try testArgs(i128, u33, 0);
3853 try testArgs(i128, u33, 1 << 0);
3854 try testArgs(i128, u33, 1 << 32);
3855 try testArgs(i256, u33, 0);
3856 try testArgs(i256, u33, 1 << 0);
3857 try testArgs(i256, u33, 1 << 32);
3858 try testArgs(i512, u33, 0);
3859 try testArgs(i512, u33, 1 << 0);
3860 try testArgs(i512, u33, 1 << 32);
3861 try testArgs(i1024, u33, 0);
3862 try testArgs(i1024, u33, 1 << 0);
3863 try testArgs(i1024, u33, 1 << 32);
3864
3865 try testArgs(u8, i63, -1 << 62);
3866 try testArgs(u8, i63, -1);
3867 try testArgs(u8, i63, 0);
3868 try testArgs(u16, i63, -1 << 62);
3869 try testArgs(u16, i63, -1);
3870 try testArgs(u16, i63, 0);
3871 try testArgs(u32, i63, -1 << 62);
3872 try testArgs(u32, i63, -1);
3873 try testArgs(u32, i63, 0);
3874 try testArgs(u64, i63, -1 << 62);
3875 try testArgs(u64, i63, -1);
3876 try testArgs(u64, i63, 0);
3877 try testArgs(u128, i63, -1 << 62);
3878 try testArgs(u128, i63, -1);
3879 try testArgs(u128, i63, 0);
3880 try testArgs(u256, i63, -1 << 62);
3881 try testArgs(u256, i63, -1);
3882 try testArgs(u256, i63, 0);
3883 try testArgs(u512, i63, -1 << 62);
3884 try testArgs(u512, i63, -1);
3885 try testArgs(u512, i63, 0);
3886 try testArgs(u1024, i63, -1 << 62);
3887 try testArgs(u1024, i63, -1);
3888 try testArgs(u1024, i63, 0);
3889 try testArgs(i8, u63, 0);
3890 try testArgs(i8, u63, 1 << 0);
3891 try testArgs(i8, u63, 1 << 62);
3892 try testArgs(i16, u63, 0);
3893 try testArgs(i16, u63, 1 << 0);
3894 try testArgs(i16, u63, 1 << 62);
3895 try testArgs(i32, u63, 0);
3896 try testArgs(i32, u63, 1 << 0);
3897 try testArgs(i32, u63, 1 << 62);
3898 try testArgs(i64, u63, 0);
3899 try testArgs(i64, u63, 1 << 0);
3900 try testArgs(i64, u63, 1 << 62);
3901 try testArgs(i128, u63, 0);
3902 try testArgs(i128, u63, 1 << 0);
3903 try testArgs(i128, u63, 1 << 62);
3904 try testArgs(i256, u63, 0);
3905 try testArgs(i256, u63, 1 << 0);
3906 try testArgs(i256, u63, 1 << 62);
3907 try testArgs(i512, u63, 0);
3908 try testArgs(i512, u63, 1 << 0);
3909 try testArgs(i512, u63, 1 << 62);
3910 try testArgs(i1024, u63, 0);
3911 try testArgs(i1024, u63, 1 << 0);
3912 try testArgs(i1024, u63, 1 << 62);
3913
3914 try testArgs(u8, i64, -1 << 63);
3915 try testArgs(u8, i64, -1);
3916 try testArgs(u8, i64, 0);
3917 try testArgs(u16, i64, -1 << 63);
3918 try testArgs(u16, i64, -1);
3919 try testArgs(u16, i64, 0);
3920 try testArgs(u32, i64, -1 << 63);
3921 try testArgs(u32, i64, -1);
3922 try testArgs(u32, i64, 0);
3923 try testArgs(u64, i64, -1 << 63);
3924 try testArgs(u64, i64, -1);
3925 try testArgs(u64, i64, 0);
3926 try testArgs(u128, i64, -1 << 63);
3927 try testArgs(u128, i64, -1);
3928 try testArgs(u128, i64, 0);
3929 try testArgs(u256, i64, -1 << 63);
3930 try testArgs(u256, i64, -1);
3931 try testArgs(u256, i64, 0);
3932 try testArgs(u512, i64, -1 << 63);
3933 try testArgs(u512, i64, -1);
3934 try testArgs(u512, i64, 0);
3935 try testArgs(u1024, i64, -1 << 63);
3936 try testArgs(u1024, i64, -1);
3937 try testArgs(u1024, i64, 0);
3938 try testArgs(i8, u64, 0);
3939 try testArgs(i8, u64, 1 << 0);
3940 try testArgs(i8, u64, 1 << 63);
3941 try testArgs(i16, u64, 0);
3942 try testArgs(i16, u64, 1 << 0);
3943 try testArgs(i16, u64, 1 << 63);
3944 try testArgs(i32, u64, 0);
3945 try testArgs(i32, u64, 1 << 0);
3946 try testArgs(i32, u64, 1 << 63);
3947 try testArgs(i64, u64, 0);
3948 try testArgs(i64, u64, 1 << 0);
3949 try testArgs(i64, u64, 1 << 63);
3950 try testArgs(i128, u64, 0);
3951 try testArgs(i128, u64, 1 << 0);
3952 try testArgs(i128, u64, 1 << 63);
3953 try testArgs(i256, u64, 0);
3954 try testArgs(i256, u64, 1 << 0);
3955 try testArgs(i256, u64, 1 << 63);
3956 try testArgs(i512, u64, 0);
3957 try testArgs(i512, u64, 1 << 0);
3958 try testArgs(i512, u64, 1 << 63);
3959 try testArgs(i1024, u64, 0);
3960 try testArgs(i1024, u64, 1 << 0);
3961 try testArgs(i1024, u64, 1 << 63);
3962
3963 try testArgs(u8, i65, -1 << 64);
3964 try testArgs(u8, i65, -1);
3965 try testArgs(u8, i65, 0);
3966 try testArgs(u16, i65, -1 << 64);
3967 try testArgs(u16, i65, -1);
3968 try testArgs(u16, i65, 0);
3969 try testArgs(u32, i65, -1 << 64);
3970 try testArgs(u32, i65, -1);
3971 try testArgs(u32, i65, 0);
3972 try testArgs(u64, i65, -1 << 64);
3973 try testArgs(u64, i65, -1);
3974 try testArgs(u64, i65, 0);
3975 try testArgs(u128, i65, -1 << 64);
3976 try testArgs(u128, i65, -1);
3977 try testArgs(u128, i65, 0);
3978 try testArgs(u256, i65, -1 << 64);
3979 try testArgs(u256, i65, -1);
3980 try testArgs(u256, i65, 0);
3981 try testArgs(u512, i65, -1 << 64);
3982 try testArgs(u512, i65, -1);
3983 try testArgs(u512, i65, 0);
3984 try testArgs(u1024, i65, -1 << 64);
3985 try testArgs(u1024, i65, -1);
3986 try testArgs(u1024, i65, 0);
3987 try testArgs(i8, u65, 0);
3988 try testArgs(i8, u65, 1 << 0);
3989 try testArgs(i8, u65, 1 << 64);
3990 try testArgs(i16, u65, 0);
3991 try testArgs(i16, u65, 1 << 0);
3992 try testArgs(i16, u65, 1 << 64);
3993 try testArgs(i32, u65, 0);
3994 try testArgs(i32, u65, 1 << 0);
3995 try testArgs(i32, u65, 1 << 64);
3996 try testArgs(i64, u65, 0);
3997 try testArgs(i64, u65, 1 << 0);
3998 try testArgs(i64, u65, 1 << 64);
3999 try testArgs(i128, u65, 0);
4000 try testArgs(i128, u65, 1 << 0);
4001 try testArgs(i128, u65, 1 << 64);
4002 try testArgs(i256, u65, 0);
4003 try testArgs(i256, u65, 1 << 0);
4004 try testArgs(i256, u65, 1 << 64);
4005 try testArgs(i512, u65, 0);
4006 try testArgs(i512, u65, 1 << 0);
4007 try testArgs(i512, u65, 1 << 64);
4008 try testArgs(i1024, u65, 0);
4009 try testArgs(i1024, u65, 1 << 0);
4010 try testArgs(i1024, u65, 1 << 64);
4011
4012 try testArgs(u8, i95, -1 << 94);
4013 try testArgs(u8, i95, -1);
4014 try testArgs(u8, i95, 0);
4015 try testArgs(u16, i95, -1 << 94);
4016 try testArgs(u16, i95, -1);
4017 try testArgs(u16, i95, 0);
4018 try testArgs(u32, i95, -1 << 94);
4019 try testArgs(u32, i95, -1);
4020 try testArgs(u32, i95, 0);
4021 try testArgs(u64, i95, -1 << 94);
4022 try testArgs(u64, i95, -1);
4023 try testArgs(u64, i95, 0);
4024 try testArgs(u128, i95, -1 << 94);
4025 try testArgs(u128, i95, -1);
4026 try testArgs(u128, i95, 0);
4027 try testArgs(u256, i95, -1 << 94);
4028 try testArgs(u256, i95, -1);
4029 try testArgs(u256, i95, 0);
4030 try testArgs(u512, i95, -1 << 94);
4031 try testArgs(u512, i95, -1);
4032 try testArgs(u512, i95, 0);
4033 try testArgs(u1024, i95, -1 << 94);
4034 try testArgs(u1024, i95, -1);
4035 try testArgs(u1024, i95, 0);
4036 try testArgs(i8, u95, 0);
4037 try testArgs(i8, u95, 1 << 0);
4038 try testArgs(i8, u95, 1 << 94);
4039 try testArgs(i16, u95, 0);
4040 try testArgs(i16, u95, 1 << 0);
4041 try testArgs(i16, u95, 1 << 94);
4042 try testArgs(i32, u95, 0);
4043 try testArgs(i32, u95, 1 << 0);
4044 try testArgs(i32, u95, 1 << 94);
4045 try testArgs(i64, u95, 0);
4046 try testArgs(i64, u95, 1 << 0);
4047 try testArgs(i64, u95, 1 << 94);
4048 try testArgs(i128, u95, 0);
4049 try testArgs(i128, u95, 1 << 0);
4050 try testArgs(i128, u95, 1 << 94);
4051 try testArgs(i256, u95, 0);
4052 try testArgs(i256, u95, 1 << 0);
4053 try testArgs(i256, u95, 1 << 94);
4054 try testArgs(i512, u95, 0);
4055 try testArgs(i512, u95, 1 << 0);
4056 try testArgs(i512, u95, 1 << 94);
4057 try testArgs(i1024, u95, 0);
4058 try testArgs(i1024, u95, 1 << 0);
4059 try testArgs(i1024, u95, 1 << 94);
4060
4061 try testArgs(u8, i96, -1 << 95);
4062 try testArgs(u8, i96, -1);
4063 try testArgs(u8, i96, 0);
4064 try testArgs(u16, i96, -1 << 95);
4065 try testArgs(u16, i96, -1);
4066 try testArgs(u16, i96, 0);
4067 try testArgs(u32, i96, -1 << 95);
4068 try testArgs(u32, i96, -1);
4069 try testArgs(u32, i96, 0);
4070 try testArgs(u64, i96, -1 << 95);
4071 try testArgs(u64, i96, -1);
4072 try testArgs(u64, i96, 0);
4073 try testArgs(u128, i96, -1 << 95);
4074 try testArgs(u128, i96, -1);
4075 try testArgs(u128, i96, 0);
4076 try testArgs(u256, i96, -1 << 95);
4077 try testArgs(u256, i96, -1);
4078 try testArgs(u256, i96, 0);
4079 try testArgs(u512, i96, -1 << 95);
4080 try testArgs(u512, i96, -1);
4081 try testArgs(u512, i96, 0);
4082 try testArgs(u1024, i96, -1 << 95);
4083 try testArgs(u1024, i96, -1);
4084 try testArgs(u1024, i96, 0);
4085 try testArgs(i8, u96, 0);
4086 try testArgs(i8, u96, 1 << 0);
4087 try testArgs(i8, u96, 1 << 95);
4088 try testArgs(i16, u96, 0);
4089 try testArgs(i16, u96, 1 << 0);
4090 try testArgs(i16, u96, 1 << 95);
4091 try testArgs(i32, u96, 0);
4092 try testArgs(i32, u96, 1 << 0);
4093 try testArgs(i32, u96, 1 << 95);
4094 try testArgs(i64, u96, 0);
4095 try testArgs(i64, u96, 1 << 0);
4096 try testArgs(i64, u96, 1 << 95);
4097 try testArgs(i128, u96, 0);
4098 try testArgs(i128, u96, 1 << 0);
4099 try testArgs(i128, u96, 1 << 95);
4100 try testArgs(i256, u96, 0);
4101 try testArgs(i256, u96, 1 << 0);
4102 try testArgs(i256, u96, 1 << 95);
4103 try testArgs(i512, u96, 0);
4104 try testArgs(i512, u96, 1 << 0);
4105 try testArgs(i512, u96, 1 << 95);
4106 try testArgs(i1024, u96, 0);
4107 try testArgs(i1024, u96, 1 << 0);
4108 try testArgs(i1024, u96, 1 << 95);
4109
4110 try testArgs(u8, i97, -1 << 96);
4111 try testArgs(u8, i97, -1);
4112 try testArgs(u8, i97, 0);
4113 try testArgs(u16, i97, -1 << 96);
4114 try testArgs(u16, i97, -1);
4115 try testArgs(u16, i97, 0);
4116 try testArgs(u32, i97, -1 << 96);
4117 try testArgs(u32, i97, -1);
4118 try testArgs(u32, i97, 0);
4119 try testArgs(u64, i97, -1 << 96);
4120 try testArgs(u64, i97, -1);
4121 try testArgs(u64, i97, 0);
4122 try testArgs(u128, i97, -1 << 96);
4123 try testArgs(u128, i97, -1);
4124 try testArgs(u128, i97, 0);
4125 try testArgs(u256, i97, -1 << 96);
4126 try testArgs(u256, i97, -1);
4127 try testArgs(u256, i97, 0);
4128 try testArgs(u512, i97, -1 << 96);
4129 try testArgs(u512, i97, -1);
4130 try testArgs(u512, i97, 0);
4131 try testArgs(u1024, i97, -1 << 96);
4132 try testArgs(u1024, i97, -1);
4133 try testArgs(u1024, i97, 0);
4134 try testArgs(i8, u97, 0);
4135 try testArgs(i8, u97, 1 << 0);
4136 try testArgs(i8, u97, 1 << 96);
4137 try testArgs(i16, u97, 0);
4138 try testArgs(i16, u97, 1 << 0);
4139 try testArgs(i16, u97, 1 << 96);
4140 try testArgs(i32, u97, 0);
4141 try testArgs(i32, u97, 1 << 0);
4142 try testArgs(i32, u97, 1 << 96);
4143 try testArgs(i64, u97, 0);
4144 try testArgs(i64, u97, 1 << 0);
4145 try testArgs(i64, u97, 1 << 96);
4146 try testArgs(i128, u97, 0);
4147 try testArgs(i128, u97, 1 << 0);
4148 try testArgs(i128, u97, 1 << 96);
4149 try testArgs(i256, u97, 0);
4150 try testArgs(i256, u97, 1 << 0);
4151 try testArgs(i256, u97, 1 << 96);
4152 try testArgs(i512, u97, 0);
4153 try testArgs(i512, u97, 1 << 0);
4154 try testArgs(i512, u97, 1 << 96);
4155 try testArgs(i1024, u97, 0);
4156 try testArgs(i1024, u97, 1 << 0);
4157 try testArgs(i1024, u97, 1 << 96);
4158
4159 try testArgs(u8, i127, -1 << 126);
4160 try testArgs(u8, i127, -1);
4161 try testArgs(u8, i127, 0);
4162 try testArgs(u16, i127, -1 << 126);
4163 try testArgs(u16, i127, -1);
4164 try testArgs(u16, i127, 0);
4165 try testArgs(u32, i127, -1 << 126);
4166 try testArgs(u32, i127, -1);
4167 try testArgs(u32, i127, 0);
4168 try testArgs(u64, i127, -1 << 126);
4169 try testArgs(u64, i127, -1);
4170 try testArgs(u64, i127, 0);
4171 try testArgs(u128, i127, -1 << 126);
4172 try testArgs(u128, i127, -1);
4173 try testArgs(u128, i127, 0);
4174 try testArgs(u256, i127, -1 << 126);
4175 try testArgs(u256, i127, -1);
4176 try testArgs(u256, i127, 0);
4177 try testArgs(u512, i127, -1 << 126);
4178 try testArgs(u512, i127, -1);
4179 try testArgs(u512, i127, 0);
4180 try testArgs(u1024, i127, -1 << 126);
4181 try testArgs(u1024, i127, -1);
4182 try testArgs(u1024, i127, 0);
4183 try testArgs(i8, u127, 0);
4184 try testArgs(i8, u127, 1 << 0);
4185 try testArgs(i8, u127, 1 << 126);
4186 try testArgs(i16, u127, 0);
4187 try testArgs(i16, u127, 1 << 0);
4188 try testArgs(i16, u127, 1 << 126);
4189 try testArgs(i32, u127, 0);
4190 try testArgs(i32, u127, 1 << 0);
4191 try testArgs(i32, u127, 1 << 126);
4192 try testArgs(i64, u127, 0);
4193 try testArgs(i64, u127, 1 << 0);
4194 try testArgs(i64, u127, 1 << 126);
4195 try testArgs(i128, u127, 0);
4196 try testArgs(i128, u127, 1 << 0);
4197 try testArgs(i128, u127, 1 << 126);
4198 try testArgs(i256, u127, 0);
4199 try testArgs(i256, u127, 1 << 0);
4200 try testArgs(i256, u127, 1 << 126);
4201 try testArgs(i512, u127, 0);
4202 try testArgs(i512, u127, 1 << 0);
4203 try testArgs(i512, u127, 1 << 126);
4204 try testArgs(i1024, u127, 0);
4205 try testArgs(i1024, u127, 1 << 0);
4206 try testArgs(i1024, u127, 1 << 126);
4207
4208 try testArgs(u8, i128, -1 << 127);
4209 try testArgs(u8, i128, -1);
4210 try testArgs(u8, i128, 0);
4211 try testArgs(u16, i128, -1 << 127);
4212 try testArgs(u16, i128, -1);
4213 try testArgs(u16, i128, 0);
4214 try testArgs(u32, i128, -1 << 127);
4215 try testArgs(u32, i128, -1);
4216 try testArgs(u32, i128, 0);
4217 try testArgs(u64, i128, -1 << 127);
4218 try testArgs(u64, i128, -1);
4219 try testArgs(u64, i128, 0);
4220 try testArgs(u128, i128, -1 << 127);
4221 try testArgs(u128, i128, -1);
4222 try testArgs(u128, i128, 0);
4223 try testArgs(u256, i128, -1 << 127);
4224 try testArgs(u256, i128, -1);
4225 try testArgs(u256, i128, 0);
4226 try testArgs(u512, i128, -1 << 127);
4227 try testArgs(u512, i128, -1);
4228 try testArgs(u512, i128, 0);
4229 try testArgs(u1024, i128, -1 << 127);
4230 try testArgs(u1024, i128, -1);
4231 try testArgs(u1024, i128, 0);
4232 try testArgs(i8, u128, 0);
4233 try testArgs(i8, u128, 1 << 0);
4234 try testArgs(i8, u128, 1 << 127);
4235 try testArgs(i16, u128, 0);
4236 try testArgs(i16, u128, 1 << 0);
4237 try testArgs(i16, u128, 1 << 127);
4238 try testArgs(i32, u128, 0);
4239 try testArgs(i32, u128, 1 << 0);
4240 try testArgs(i32, u128, 1 << 127);
4241 try testArgs(i64, u128, 0);
4242 try testArgs(i64, u128, 1 << 0);
4243 try testArgs(i64, u128, 1 << 127);
4244 try testArgs(i128, u128, 0);
4245 try testArgs(i128, u128, 1 << 0);
4246 try testArgs(i128, u128, 1 << 127);
4247 try testArgs(i256, u128, 0);
4248 try testArgs(i256, u128, 1 << 0);
4249 try testArgs(i256, u128, 1 << 127);
4250 try testArgs(i512, u128, 0);
4251 try testArgs(i512, u128, 1 << 0);
4252 try testArgs(i512, u128, 1 << 127);
4253 try testArgs(i1024, u128, 0);
4254 try testArgs(i1024, u128, 1 << 0);
4255 try testArgs(i1024, u128, 1 << 127);
4256
4257 try testArgs(u8, i129, -1 << 128);
4258 try testArgs(u8, i129, -1);
4259 try testArgs(u8, i129, 0);
4260 try testArgs(u16, i129, -1 << 128);
4261 try testArgs(u16, i129, -1);
4262 try testArgs(u16, i129, 0);
4263 try testArgs(u32, i129, -1 << 128);
4264 try testArgs(u32, i129, -1);
4265 try testArgs(u32, i129, 0);
4266 try testArgs(u64, i129, -1 << 128);
4267 try testArgs(u64, i129, -1);
4268 try testArgs(u64, i129, 0);
4269 try testArgs(u128, i129, -1 << 128);
4270 try testArgs(u128, i129, -1);
4271 try testArgs(u128, i129, 0);
4272 try testArgs(u256, i129, -1 << 128);
4273 try testArgs(u256, i129, -1);
4274 try testArgs(u256, i129, 0);
4275 try testArgs(u512, i129, -1 << 128);
4276 try testArgs(u512, i129, -1);
4277 try testArgs(u512, i129, 0);
4278 try testArgs(u1024, i129, -1 << 128);
4279 try testArgs(u1024, i129, -1);
4280 try testArgs(u1024, i129, 0);
4281 try testArgs(i8, u129, 0);
4282 try testArgs(i8, u129, 1 << 0);
4283 try testArgs(i8, u129, 1 << 128);
4284 try testArgs(i16, u129, 0);
4285 try testArgs(i16, u129, 1 << 0);
4286 try testArgs(i16, u129, 1 << 128);
4287 try testArgs(i32, u129, 0);
4288 try testArgs(i32, u129, 1 << 0);
4289 try testArgs(i32, u129, 1 << 128);
4290 try testArgs(i64, u129, 0);
4291 try testArgs(i64, u129, 1 << 0);
4292 try testArgs(i64, u129, 1 << 128);
4293 try testArgs(i128, u129, 0);
4294 try testArgs(i128, u129, 1 << 0);
4295 try testArgs(i128, u129, 1 << 128);
4296 try testArgs(i256, u129, 0);
4297 try testArgs(i256, u129, 1 << 0);
4298 try testArgs(i256, u129, 1 << 128);
4299 try testArgs(i512, u129, 0);
4300 try testArgs(i512, u129, 1 << 0);
4301 try testArgs(i512, u129, 1 << 128);
4302 try testArgs(i1024, u129, 0);
4303 try testArgs(i1024, u129, 1 << 0);
4304 try testArgs(i1024, u129, 1 << 128);
4305
4306 try testArgs(u8, i255, -1 << 254);
4307 try testArgs(u8, i255, -1);
4308 try testArgs(u8, i255, 0);
4309 try testArgs(u16, i255, -1 << 254);
4310 try testArgs(u16, i255, -1);
4311 try testArgs(u16, i255, 0);
4312 try testArgs(u32, i255, -1 << 254);
4313 try testArgs(u32, i255, -1);
4314 try testArgs(u32, i255, 0);
4315 try testArgs(u64, i255, -1 << 254);
4316 try testArgs(u64, i255, -1);
4317 try testArgs(u64, i255, 0);
4318 try testArgs(u128, i255, -1 << 254);
4319 try testArgs(u128, i255, -1);
4320 try testArgs(u128, i255, 0);
4321 try testArgs(u256, i255, -1 << 254);
4322 try testArgs(u256, i255, -1);
4323 try testArgs(u256, i255, 0);
4324 try testArgs(u512, i255, -1 << 254);
4325 try testArgs(u512, i255, -1);
4326 try testArgs(u512, i255, 0);
4327 try testArgs(u1024, i255, -1 << 254);
4328 try testArgs(u1024, i255, -1);
4329 try testArgs(u1024, i255, 0);
4330 try testArgs(i8, u255, 0);
4331 try testArgs(i8, u255, 1 << 0);
4332 try testArgs(i8, u255, 1 << 254);
4333 try testArgs(i16, u255, 0);
4334 try testArgs(i16, u255, 1 << 0);
4335 try testArgs(i16, u255, 1 << 254);
4336 try testArgs(i32, u255, 0);
4337 try testArgs(i32, u255, 1 << 0);
4338 try testArgs(i32, u255, 1 << 254);
4339 try testArgs(i64, u255, 0);
4340 try testArgs(i64, u255, 1 << 0);
4341 try testArgs(i64, u255, 1 << 254);
4342 try testArgs(i128, u255, 0);
4343 try testArgs(i128, u255, 1 << 0);
4344 try testArgs(i128, u255, 1 << 254);
4345 try testArgs(i256, u255, 0);
4346 try testArgs(i256, u255, 1 << 0);
4347 try testArgs(i256, u255, 1 << 254);
4348 try testArgs(i512, u255, 0);
4349 try testArgs(i512, u255, 1 << 0);
4350 try testArgs(i512, u255, 1 << 254);
4351 try testArgs(i1024, u255, 0);
4352 try testArgs(i1024, u255, 1 << 0);
4353 try testArgs(i1024, u255, 1 << 254);
4354
4355 try testArgs(u8, i256, -1 << 255);
4356 try testArgs(u8, i256, -1);
4357 try testArgs(u8, i256, 0);
4358 try testArgs(u16, i256, -1 << 255);
4359 try testArgs(u16, i256, -1);
4360 try testArgs(u16, i256, 0);
4361 try testArgs(u32, i256, -1 << 255);
4362 try testArgs(u32, i256, -1);
4363 try testArgs(u32, i256, 0);
4364 try testArgs(u64, i256, -1 << 255);
4365 try testArgs(u64, i256, -1);
4366 try testArgs(u64, i256, 0);
4367 try testArgs(u128, i256, -1 << 255);
4368 try testArgs(u128, i256, -1);
4369 try testArgs(u128, i256, 0);
4370 try testArgs(u256, i256, -1 << 255);
4371 try testArgs(u256, i256, -1);
4372 try testArgs(u256, i256, 0);
4373 try testArgs(u512, i256, -1 << 255);
4374 try testArgs(u512, i256, -1);
4375 try testArgs(u512, i256, 0);
4376 try testArgs(u1024, i256, -1 << 255);
4377 try testArgs(u1024, i256, -1);
4378 try testArgs(u1024, i256, 0);
4379 try testArgs(i8, u256, 0);
4380 try testArgs(i8, u256, 1 << 0);
4381 try testArgs(i8, u256, 1 << 255);
4382 try testArgs(i16, u256, 0);
4383 try testArgs(i16, u256, 1 << 0);
4384 try testArgs(i16, u256, 1 << 255);
4385 try testArgs(i32, u256, 0);
4386 try testArgs(i32, u256, 1 << 0);
4387 try testArgs(i32, u256, 1 << 255);
4388 try testArgs(i64, u256, 0);
4389 try testArgs(i64, u256, 1 << 0);
4390 try testArgs(i64, u256, 1 << 255);
4391 try testArgs(i128, u256, 0);
4392 try testArgs(i128, u256, 1 << 0);
4393 try testArgs(i128, u256, 1 << 255);
4394 try testArgs(i256, u256, 0);
4395 try testArgs(i256, u256, 1 << 0);
4396 try testArgs(i256, u256, 1 << 255);
4397 try testArgs(i512, u256, 0);
4398 try testArgs(i512, u256, 1 << 0);
4399 try testArgs(i512, u256, 1 << 255);
4400 try testArgs(i1024, u256, 0);
4401 try testArgs(i1024, u256, 1 << 0);
4402 try testArgs(i1024, u256, 1 << 255);
4403
4404 try testArgs(u8, i257, -1 << 256);
4405 try testArgs(u8, i257, -1);
4406 try testArgs(u8, i257, 0);
4407 try testArgs(u16, i257, -1 << 256);
4408 try testArgs(u16, i257, -1);
4409 try testArgs(u16, i257, 0);
4410 try testArgs(u32, i257, -1 << 256);
4411 try testArgs(u32, i257, -1);
4412 try testArgs(u32, i257, 0);
4413 try testArgs(u64, i257, -1 << 256);
4414 try testArgs(u64, i257, -1);
4415 try testArgs(u64, i257, 0);
4416 try testArgs(u128, i257, -1 << 256);
4417 try testArgs(u128, i257, -1);
4418 try testArgs(u128, i257, 0);
4419 try testArgs(u256, i257, -1 << 256);
4420 try testArgs(u256, i257, -1);
4421 try testArgs(u256, i257, 0);
4422 try testArgs(u512, i257, -1 << 256);
4423 try testArgs(u512, i257, -1);
4424 try testArgs(u512, i257, 0);
4425 try testArgs(u1024, i257, -1 << 256);
4426 try testArgs(u1024, i257, -1);
4427 try testArgs(u1024, i257, 0);
4428 try testArgs(i8, u257, 0);
4429 try testArgs(i8, u257, 1 << 0);
4430 try testArgs(i8, u257, 1 << 256);
4431 try testArgs(i16, u257, 0);
4432 try testArgs(i16, u257, 1 << 0);
4433 try testArgs(i16, u257, 1 << 256);
4434 try testArgs(i32, u257, 0);
4435 try testArgs(i32, u257, 1 << 0);
4436 try testArgs(i32, u257, 1 << 256);
4437 try testArgs(i64, u257, 0);
4438 try testArgs(i64, u257, 1 << 0);
4439 try testArgs(i64, u257, 1 << 256);
4440 try testArgs(i128, u257, 0);
4441 try testArgs(i128, u257, 1 << 0);
4442 try testArgs(i128, u257, 1 << 256);
4443 try testArgs(i256, u257, 0);
4444 try testArgs(i256, u257, 1 << 0);
4445 try testArgs(i256, u257, 1 << 256);
4446 try testArgs(i512, u257, 0);
4447 try testArgs(i512, u257, 1 << 0);
4448 try testArgs(i512, u257, 1 << 256);
4449 try testArgs(i1024, u257, 0);
4450 try testArgs(i1024, u257, 1 << 0);
4451 try testArgs(i1024, u257, 1 << 256);
4452
4453 try testArgs(u8, i511, -1 << 510);
4454 try testArgs(u8, i511, -1);
4455 try testArgs(u8, i511, 0);
4456 try testArgs(u16, i511, -1 << 510);
4457 try testArgs(u16, i511, -1);
4458 try testArgs(u16, i511, 0);
4459 try testArgs(u32, i511, -1 << 510);
4460 try testArgs(u32, i511, -1);
4461 try testArgs(u32, i511, 0);
4462 try testArgs(u64, i511, -1 << 510);
4463 try testArgs(u64, i511, -1);
4464 try testArgs(u64, i511, 0);
4465 try testArgs(u128, i511, -1 << 510);
4466 try testArgs(u128, i511, -1);
4467 try testArgs(u128, i511, 0);
4468 try testArgs(u256, i511, -1 << 510);
4469 try testArgs(u256, i511, -1);
4470 try testArgs(u256, i511, 0);
4471 try testArgs(u512, i511, -1 << 510);
4472 try testArgs(u512, i511, -1);
4473 try testArgs(u512, i511, 0);
4474 try testArgs(u1024, i511, -1 << 510);
4475 try testArgs(u1024, i511, -1);
4476 try testArgs(u1024, i511, 0);
4477 try testArgs(i8, u511, 0);
4478 try testArgs(i8, u511, 1 << 0);
4479 try testArgs(i8, u511, 1 << 510);
4480 try testArgs(i16, u511, 0);
4481 try testArgs(i16, u511, 1 << 0);
4482 try testArgs(i16, u511, 1 << 510);
4483 try testArgs(i32, u511, 0);
4484 try testArgs(i32, u511, 1 << 0);
4485 try testArgs(i32, u511, 1 << 510);
4486 try testArgs(i64, u511, 0);
4487 try testArgs(i64, u511, 1 << 0);
4488 try testArgs(i64, u511, 1 << 510);
4489 try testArgs(i128, u511, 0);
4490 try testArgs(i128, u511, 1 << 0);
4491 try testArgs(i128, u511, 1 << 510);
4492 try testArgs(i256, u511, 0);
4493 try testArgs(i256, u511, 1 << 0);
4494 try testArgs(i256, u511, 1 << 510);
4495 try testArgs(i512, u511, 0);
4496 try testArgs(i512, u511, 1 << 0);
4497 try testArgs(i512, u511, 1 << 510);
4498 try testArgs(i1024, u511, 0);
4499 try testArgs(i1024, u511, 1 << 0);
4500 try testArgs(i1024, u511, 1 << 510);
4501
4502 try testArgs(u8, i512, -1 << 511);
4503 try testArgs(u8, i512, -1);
4504 try testArgs(u8, i512, 0);
4505 try testArgs(u16, i512, -1 << 511);
4506 try testArgs(u16, i512, -1);
4507 try testArgs(u16, i512, 0);
4508 try testArgs(u32, i512, -1 << 511);
4509 try testArgs(u32, i512, -1);
4510 try testArgs(u32, i512, 0);
4511 try testArgs(u64, i512, -1 << 511);
4512 try testArgs(u64, i512, -1);
4513 try testArgs(u64, i512, 0);
4514 try testArgs(u128, i512, -1 << 511);
4515 try testArgs(u128, i512, -1);
4516 try testArgs(u128, i512, 0);
4517 try testArgs(u256, i512, -1 << 511);
4518 try testArgs(u256, i512, -1);
4519 try testArgs(u256, i512, 0);
4520 try testArgs(u512, i512, -1 << 511);
4521 try testArgs(u512, i512, -1);
4522 try testArgs(u512, i512, 0);
4523 try testArgs(u1024, i512, -1 << 511);
4524 try testArgs(u1024, i512, -1);
4525 try testArgs(u1024, i512, 0);
4526 try testArgs(i8, u512, 0);
4527 try testArgs(i8, u512, 1 << 0);
4528 try testArgs(i8, u512, 1 << 511);
4529 try testArgs(i16, u512, 0);
4530 try testArgs(i16, u512, 1 << 0);
4531 try testArgs(i16, u512, 1 << 511);
4532 try testArgs(i32, u512, 0);
4533 try testArgs(i32, u512, 1 << 0);
4534 try testArgs(i32, u512, 1 << 511);
4535 try testArgs(i64, u512, 0);
4536 try testArgs(i64, u512, 1 << 0);
4537 try testArgs(i64, u512, 1 << 511);
4538 try testArgs(i128, u512, 0);
4539 try testArgs(i128, u512, 1 << 0);
4540 try testArgs(i128, u512, 1 << 511);
4541 try testArgs(i256, u512, 0);
4542 try testArgs(i256, u512, 1 << 0);
4543 try testArgs(i256, u512, 1 << 511);
4544 try testArgs(i512, u512, 0);
4545 try testArgs(i512, u512, 1 << 0);
4546 try testArgs(i512, u512, 1 << 511);
4547 try testArgs(i1024, u512, 0);
4548 try testArgs(i1024, u512, 1 << 0);
4549 try testArgs(i1024, u512, 1 << 511);
4550
4551 try testArgs(u8, i513, -1 << 512);
4552 try testArgs(u8, i513, -1);
4553 try testArgs(u8, i513, 0);
4554 try testArgs(u16, i513, -1 << 512);
4555 try testArgs(u16, i513, -1);
4556 try testArgs(u16, i513, 0);
4557 try testArgs(u32, i513, -1 << 512);
4558 try testArgs(u32, i513, -1);
4559 try testArgs(u32, i513, 0);
4560 try testArgs(u64, i513, -1 << 512);
4561 try testArgs(u64, i513, -1);
4562 try testArgs(u64, i513, 0);
4563 try testArgs(u128, i513, -1 << 512);
4564 try testArgs(u128, i513, -1);
4565 try testArgs(u128, i513, 0);
4566 try testArgs(u256, i513, -1 << 512);
4567 try testArgs(u256, i513, -1);
4568 try testArgs(u256, i513, 0);
4569 try testArgs(u512, i513, -1 << 512);
4570 try testArgs(u512, i513, -1);
4571 try testArgs(u512, i513, 0);
4572 try testArgs(u1024, i513, -1 << 512);
4573 try testArgs(u1024, i513, -1);
4574 try testArgs(u1024, i513, 0);
4575 try testArgs(i8, u513, 0);
4576 try testArgs(i8, u513, 1 << 0);
4577 try testArgs(i8, u513, 1 << 512);
4578 try testArgs(i16, u513, 0);
4579 try testArgs(i16, u513, 1 << 0);
4580 try testArgs(i16, u513, 1 << 512);
4581 try testArgs(i32, u513, 0);
4582 try testArgs(i32, u513, 1 << 0);
4583 try testArgs(i32, u513, 1 << 512);
4584 try testArgs(i64, u513, 0);
4585 try testArgs(i64, u513, 1 << 0);
4586 try testArgs(i64, u513, 1 << 512);
4587 try testArgs(i128, u513, 0);
4588 try testArgs(i128, u513, 1 << 0);
4589 try testArgs(i128, u513, 1 << 512);
4590 try testArgs(i256, u513, 0);
4591 try testArgs(i256, u513, 1 << 0);
4592 try testArgs(i256, u513, 1 << 512);
4593 try testArgs(i512, u513, 0);
4594 try testArgs(i512, u513, 1 << 0);
4595 try testArgs(i512, u513, 1 << 512);
4596 try testArgs(i1024, u513, 0);
4597 try testArgs(i1024, u513, 1 << 0);
4598 try testArgs(i1024, u513, 1 << 512);
4599
4600 try testArgs(u8, i1023, -1 << 1022);
4601 try testArgs(u8, i1023, -1);
4602 try testArgs(u8, i1023, 0);
4603 try testArgs(u16, i1023, -1 << 1022);
4604 try testArgs(u16, i1023, -1);
4605 try testArgs(u16, i1023, 0);
4606 try testArgs(u32, i1023, -1 << 1022);
4607 try testArgs(u32, i1023, -1);
4608 try testArgs(u32, i1023, 0);
4609 try testArgs(u64, i1023, -1 << 1022);
4610 try testArgs(u64, i1023, -1);
4611 try testArgs(u64, i1023, 0);
4612 try testArgs(u128, i1023, -1 << 1022);
4613 try testArgs(u128, i1023, -1);
4614 try testArgs(u128, i1023, 0);
4615 try testArgs(u256, i1023, -1 << 1022);
4616 try testArgs(u256, i1023, -1);
4617 try testArgs(u256, i1023, 0);
4618 try testArgs(u512, i1023, -1 << 1022);
4619 try testArgs(u512, i1023, -1);
4620 try testArgs(u512, i1023, 0);
4621 try testArgs(u1024, i1023, -1 << 1022);
4622 try testArgs(u1024, i1023, -1);
4623 try testArgs(u1024, i1023, 0);
4624 try testArgs(i8, u1023, 0);
4625 try testArgs(i8, u1023, 1 << 0);
4626 try testArgs(i8, u1023, 1 << 1022);
4627 try testArgs(i16, u1023, 0);
4628 try testArgs(i16, u1023, 1 << 0);
4629 try testArgs(i16, u1023, 1 << 1022);
4630 try testArgs(i32, u1023, 0);
4631 try testArgs(i32, u1023, 1 << 0);
4632 try testArgs(i32, u1023, 1 << 1022);
4633 try testArgs(i64, u1023, 0);
4634 try testArgs(i64, u1023, 1 << 0);
4635 try testArgs(i64, u1023, 1 << 1022);
4636 try testArgs(i128, u1023, 0);
4637 try testArgs(i128, u1023, 1 << 0);
4638 try testArgs(i128, u1023, 1 << 1022);
4639 try testArgs(i256, u1023, 0);
4640 try testArgs(i256, u1023, 1 << 0);
4641 try testArgs(i256, u1023, 1 << 1022);
4642 try testArgs(i512, u1023, 0);
4643 try testArgs(i512, u1023, 1 << 0);
4644 try testArgs(i512, u1023, 1 << 1022);
4645 try testArgs(i1024, u1023, 0);
4646 try testArgs(i1024, u1023, 1 << 0);
4647 try testArgs(i1024, u1023, 1 << 1022);
4648
4649 try testArgs(u8, i1024, -1 << 1023);
4650 try testArgs(u8, i1024, -1);
4651 try testArgs(u8, i1024, 0);
4652 try testArgs(u16, i1024, -1 << 1023);
4653 try testArgs(u16, i1024, -1);
4654 try testArgs(u16, i1024, 0);
4655 try testArgs(u32, i1024, -1 << 1023);
4656 try testArgs(u32, i1024, -1);
4657 try testArgs(u32, i1024, 0);
4658 try testArgs(u64, i1024, -1 << 1023);
4659 try testArgs(u64, i1024, -1);
4660 try testArgs(u64, i1024, 0);
4661 try testArgs(u128, i1024, -1 << 1023);
4662 try testArgs(u128, i1024, -1);
4663 try testArgs(u128, i1024, 0);
4664 try testArgs(u256, i1024, -1 << 1023);
4665 try testArgs(u256, i1024, -1);
4666 try testArgs(u256, i1024, 0);
4667 try testArgs(u512, i1024, -1 << 1023);
4668 try testArgs(u512, i1024, -1);
4669 try testArgs(u512, i1024, 0);
4670 try testArgs(u1024, i1024, -1 << 1023);
4671 try testArgs(u1024, i1024, -1);
4672 try testArgs(u1024, i1024, 0);
4673 try testArgs(i8, u1024, 0);
4674 try testArgs(i8, u1024, 1 << 0);
4675 try testArgs(i8, u1024, 1 << 1023);
4676 try testArgs(i16, u1024, 0);
4677 try testArgs(i16, u1024, 1 << 0);
4678 try testArgs(i16, u1024, 1 << 1023);
4679 try testArgs(i32, u1024, 0);
4680 try testArgs(i32, u1024, 1 << 0);
4681 try testArgs(i32, u1024, 1 << 1023);
4682 try testArgs(i64, u1024, 0);
4683 try testArgs(i64, u1024, 1 << 0);
4684 try testArgs(i64, u1024, 1 << 1023);
4685 try testArgs(i128, u1024, 0);
4686 try testArgs(i128, u1024, 1 << 0);
4687 try testArgs(i128, u1024, 1 << 1023);
4688 try testArgs(i256, u1024, 0);
4689 try testArgs(i256, u1024, 1 << 0);
4690 try testArgs(i256, u1024, 1 << 1023);
4691 try testArgs(i512, u1024, 0);
4692 try testArgs(i512, u1024, 1 << 0);
4693 try testArgs(i512, u1024, 1 << 1023);
4694 try testArgs(i1024, u1024, 0);
4695 try testArgs(i1024, u1024, 1 << 0);
4696 try testArgs(i1024, u1024, 1 << 1023);
4697
4698 try testArgs(u8, i1025, -1 << 1024);
4699 try testArgs(u8, i1025, -1);
4700 try testArgs(u8, i1025, 0);
4701 try testArgs(u16, i1025, -1 << 1024);
4702 try testArgs(u16, i1025, -1);
4703 try testArgs(u16, i1025, 0);
4704 try testArgs(u32, i1025, -1 << 1024);
4705 try testArgs(u32, i1025, -1);
4706 try testArgs(u32, i1025, 0);
4707 try testArgs(u64, i1025, -1 << 1024);
4708 try testArgs(u64, i1025, -1);
4709 try testArgs(u64, i1025, 0);
4710 try testArgs(u128, i1025, -1 << 1024);
4711 try testArgs(u128, i1025, -1);
4712 try testArgs(u128, i1025, 0);
4713 try testArgs(u256, i1025, -1 << 1024);
4714 try testArgs(u256, i1025, -1);
4715 try testArgs(u256, i1025, 0);
4716 try testArgs(u512, i1025, -1 << 1024);
4717 try testArgs(u512, i1025, -1);
4718 try testArgs(u512, i1025, 0);
4719 try testArgs(u1024, i1025, -1 << 1024);
4720 try testArgs(u1024, i1025, -1);
4721 try testArgs(u1024, i1025, 0);
4722 try testArgs(i8, u1025, 0);
4723 try testArgs(i8, u1025, 1 << 0);
4724 try testArgs(i8, u1025, 1 << 1024);
4725 try testArgs(i16, u1025, 0);
4726 try testArgs(i16, u1025, 1 << 0);
4727 try testArgs(i16, u1025, 1 << 1024);
4728 try testArgs(i32, u1025, 0);
4729 try testArgs(i32, u1025, 1 << 0);
4730 try testArgs(i32, u1025, 1 << 1024);
4731 try testArgs(i64, u1025, 0);
4732 try testArgs(i64, u1025, 1 << 0);
4733 try testArgs(i64, u1025, 1 << 1024);
4734 try testArgs(i128, u1025, 0);
4735 try testArgs(i128, u1025, 1 << 0);
4736 try testArgs(i128, u1025, 1 << 1024);
4737 try testArgs(i256, u1025, 0);
4738 try testArgs(i256, u1025, 1 << 0);
4739 try testArgs(i256, u1025, 1 << 1024);
4740 try testArgs(i512, u1025, 0);
4741 try testArgs(i512, u1025, 1 << 0);
4742 try testArgs(i512, u1025, 1 << 1024);
4743 try testArgs(i1024, u1025, 0);
4744 try testArgs(i1024, u1025, 1 << 0);
4745 try testArgs(i1024, u1025, 1 << 1024);
4746 }
4747 fn testFloats() !void {
4748 @setEvalBranchQuota(3_100);
4749
4750 try testArgs(f16, f16, -nan(f16));
4751 try testArgs(f16, f16, -inf(f16));
4752 try testArgs(f16, f16, -fmax(f16));
4753 try testArgs(f16, f16, -1e1);
4754 try testArgs(f16, f16, -1e0);
4755 try testArgs(f16, f16, -1e-1);
4756 try testArgs(f16, f16, -fmin(f16));
4757 try testArgs(f16, f16, -tmin(f16));
4758 try testArgs(f16, f16, -0.0);
4759 try testArgs(f16, f16, 0.0);
4760 try testArgs(f16, f16, tmin(f16));
4761 try testArgs(f16, f16, fmin(f16));
4762 try testArgs(f16, f16, 1e-1);
4763 try testArgs(f16, f16, 1e0);
4764 try testArgs(f16, f16, 1e1);
4765 try testArgs(f16, f16, fmax(f16));
4766 try testArgs(f16, f16, inf(f16));
4767 try testArgs(f16, f16, nan(f16));
4768
4769 try testArgs(f32, f16, -nan(f16));
4770 try testArgs(f32, f16, -inf(f16));
4771 try testArgs(f32, f16, -fmax(f16));
4772 try testArgs(f32, f16, -1e1);
4773 try testArgs(f32, f16, -1e0);
4774 try testArgs(f32, f16, -1e-1);
4775 try testArgs(f32, f16, -fmin(f16));
4776 try testArgs(f32, f16, -tmin(f16));
4777 try testArgs(f32, f16, -0.0);
4778 try testArgs(f32, f16, 0.0);
4779 try testArgs(f32, f16, tmin(f16));
4780 try testArgs(f32, f16, fmin(f16));
4781 try testArgs(f32, f16, 1e-1);
4782 try testArgs(f32, f16, 1e0);
4783 try testArgs(f32, f16, 1e1);
4784 try testArgs(f32, f16, fmax(f16));
4785 try testArgs(f32, f16, inf(f16));
4786 try testArgs(f32, f16, nan(f16));
4787
4788 try testArgs(f64, f16, -nan(f16));
4789 try testArgs(f64, f16, -inf(f16));
4790 try testArgs(f64, f16, -fmax(f16));
4791 try testArgs(f64, f16, -1e1);
4792 try testArgs(f64, f16, -1e0);
4793 try testArgs(f64, f16, -1e-1);
4794 try testArgs(f64, f16, -fmin(f16));
4795 try testArgs(f64, f16, -tmin(f16));
4796 try testArgs(f64, f16, -0.0);
4797 try testArgs(f64, f16, 0.0);
4798 try testArgs(f64, f16, tmin(f16));
4799 try testArgs(f64, f16, fmin(f16));
4800 try testArgs(f64, f16, 1e-1);
4801 try testArgs(f64, f16, 1e0);
4802 try testArgs(f64, f16, 1e1);
4803 try testArgs(f64, f16, fmax(f16));
4804 try testArgs(f64, f16, inf(f16));
4805 try testArgs(f64, f16, nan(f16));
4806
4807 try testArgs(f80, f16, -nan(f16));
4808 try testArgs(f80, f16, -inf(f16));
4809 try testArgs(f80, f16, -fmax(f16));
4810 try testArgs(f80, f16, -1e1);
4811 try testArgs(f80, f16, -1e0);
4812 try testArgs(f80, f16, -1e-1);
4813 try testArgs(f80, f16, -fmin(f16));
4814 try testArgs(f80, f16, -tmin(f16));
4815 try testArgs(f80, f16, -0.0);
4816 try testArgs(f80, f16, 0.0);
4817 try testArgs(f80, f16, tmin(f16));
4818 try testArgs(f80, f16, fmin(f16));
4819 try testArgs(f80, f16, 1e-1);
4820 try testArgs(f80, f16, 1e0);
4821 try testArgs(f80, f16, 1e1);
4822 try testArgs(f80, f16, fmax(f16));
4823 try testArgs(f80, f16, inf(f16));
4824 try testArgs(f80, f16, nan(f16));
4825
4826 try testArgs(f128, f16, -nan(f16));
4827 try testArgs(f128, f16, -inf(f16));
4828 try testArgs(f128, f16, -fmax(f16));
4829 try testArgs(f128, f16, -1e1);
4830 try testArgs(f128, f16, -1e0);
4831 try testArgs(f128, f16, -1e-1);
4832 try testArgs(f128, f16, -fmin(f16));
4833 try testArgs(f128, f16, -tmin(f16));
4834 try testArgs(f128, f16, -0.0);
4835 try testArgs(f128, f16, 0.0);
4836 try testArgs(f128, f16, tmin(f16));
4837 try testArgs(f128, f16, fmin(f16));
4838 try testArgs(f128, f16, 1e-1);
4839 try testArgs(f128, f16, 1e0);
4840 try testArgs(f128, f16, 1e1);
4841 try testArgs(f128, f16, fmax(f16));
4842 try testArgs(f128, f16, inf(f16));
4843 try testArgs(f128, f16, nan(f16));
4844
4845 try testArgs(f16, f32, -nan(f32));
4846 try testArgs(f16, f32, -inf(f32));
4847 try testArgs(f16, f32, -fmax(f32));
4848 try testArgs(f16, f32, -1e1);
4849 try testArgs(f16, f32, -1e0);
4850 try testArgs(f16, f32, -1e-1);
4851 try testArgs(f16, f32, -fmin(f32));
4852 try testArgs(f16, f32, -tmin(f32));
4853 try testArgs(f16, f32, -0.0);
4854 try testArgs(f16, f32, 0.0);
4855 try testArgs(f16, f32, tmin(f32));
4856 try testArgs(f16, f32, fmin(f32));
4857 try testArgs(f16, f32, 1e-1);
4858 try testArgs(f16, f32, 1e0);
4859 try testArgs(f16, f32, 1e1);
4860 try testArgs(f16, f32, fmax(f32));
4861 try testArgs(f16, f32, inf(f32));
4862 try testArgs(f16, f32, nan(f32));
4863
4864 try testArgs(f32, f32, -nan(f32));
4865 try testArgs(f32, f32, -inf(f32));
4866 try testArgs(f32, f32, -fmax(f32));
4867 try testArgs(f32, f32, -1e1);
4868 try testArgs(f32, f32, -1e0);
4869 try testArgs(f32, f32, -1e-1);
4870 try testArgs(f32, f32, -fmin(f32));
4871 try testArgs(f32, f32, -tmin(f32));
4872 try testArgs(f32, f32, -0.0);
4873 try testArgs(f32, f32, 0.0);
4874 try testArgs(f32, f32, tmin(f32));
4875 try testArgs(f32, f32, fmin(f32));
4876 try testArgs(f32, f32, 1e-1);
4877 try testArgs(f32, f32, 1e0);
4878 try testArgs(f32, f32, 1e1);
4879 try testArgs(f32, f32, fmax(f32));
4880 try testArgs(f32, f32, inf(f32));
4881 try testArgs(f32, f32, nan(f32));
4882
4883 try testArgs(f64, f32, -nan(f32));
4884 try testArgs(f64, f32, -inf(f32));
4885 try testArgs(f64, f32, -fmax(f32));
4886 try testArgs(f64, f32, -1e1);
4887 try testArgs(f64, f32, -1e0);
4888 try testArgs(f64, f32, -1e-1);
4889 try testArgs(f64, f32, -fmin(f32));
4890 try testArgs(f64, f32, -tmin(f32));
4891 try testArgs(f64, f32, -0.0);
4892 try testArgs(f64, f32, 0.0);
4893 try testArgs(f64, f32, tmin(f32));
4894 try testArgs(f64, f32, fmin(f32));
4895 try testArgs(f64, f32, 1e-1);
4896 try testArgs(f64, f32, 1e0);
4897 try testArgs(f64, f32, 1e1);
4898 try testArgs(f64, f32, fmax(f32));
4899 try testArgs(f64, f32, inf(f32));
4900 try testArgs(f64, f32, nan(f32));
4901
4902 try testArgs(f80, f32, -nan(f32));
4903 try testArgs(f80, f32, -inf(f32));
4904 try testArgs(f80, f32, -fmax(f32));
4905 try testArgs(f80, f32, -1e1);
4906 try testArgs(f80, f32, -1e0);
4907 try testArgs(f80, f32, -1e-1);
4908 try testArgs(f80, f32, -fmin(f32));
4909 try testArgs(f80, f32, -tmin(f32));
4910 try testArgs(f80, f32, -0.0);
4911 try testArgs(f80, f32, 0.0);
4912 try testArgs(f80, f32, tmin(f32));
4913 try testArgs(f80, f32, fmin(f32));
4914 try testArgs(f80, f32, 1e-1);
4915 try testArgs(f80, f32, 1e0);
4916 try testArgs(f80, f32, 1e1);
4917 try testArgs(f80, f32, fmax(f32));
4918 try testArgs(f80, f32, inf(f32));
4919 try testArgs(f80, f32, nan(f32));
4920
4921 try testArgs(f128, f32, -nan(f32));
4922 try testArgs(f128, f32, -inf(f32));
4923 try testArgs(f128, f32, -fmax(f32));
4924 try testArgs(f128, f32, -1e1);
4925 try testArgs(f128, f32, -1e0);
4926 try testArgs(f128, f32, -1e-1);
4927 try testArgs(f128, f32, -fmin(f32));
4928 try testArgs(f128, f32, -tmin(f32));
4929 try testArgs(f128, f32, -0.0);
4930 try testArgs(f128, f32, 0.0);
4931 try testArgs(f128, f32, tmin(f32));
4932 try testArgs(f128, f32, fmin(f32));
4933 try testArgs(f128, f32, 1e-1);
4934 try testArgs(f128, f32, 1e0);
4935 try testArgs(f128, f32, 1e1);
4936 try testArgs(f128, f32, fmax(f32));
4937 try testArgs(f128, f32, inf(f32));
4938 try testArgs(f128, f32, nan(f32));
4939
4940 try testArgs(f16, f64, -nan(f64));
4941 try testArgs(f16, f64, -inf(f64));
4942 try testArgs(f16, f64, -fmax(f64));
4943 try testArgs(f16, f64, -1e1);
4944 try testArgs(f16, f64, -1e0);
4945 try testArgs(f16, f64, -1e-1);
4946 try testArgs(f16, f64, -fmin(f64));
4947 try testArgs(f16, f64, -tmin(f64));
4948 try testArgs(f16, f64, -0.0);
4949 try testArgs(f16, f64, 0.0);
4950 try testArgs(f16, f64, tmin(f64));
4951 try testArgs(f16, f64, fmin(f64));
4952 try testArgs(f16, f64, 1e-1);
4953 try testArgs(f16, f64, 1e0);
4954 try testArgs(f16, f64, 1e1);
4955 try testArgs(f16, f64, fmax(f64));
4956 try testArgs(f16, f64, inf(f64));
4957 try testArgs(f16, f64, nan(f64));
4958
4959 try testArgs(f32, f64, -nan(f64));
4960 try testArgs(f32, f64, -inf(f64));
4961 try testArgs(f32, f64, -fmax(f64));
4962 try testArgs(f32, f64, -1e1);
4963 try testArgs(f32, f64, -1e0);
4964 try testArgs(f32, f64, -1e-1);
4965 try testArgs(f32, f64, -fmin(f64));
4966 try testArgs(f32, f64, -tmin(f64));
4967 try testArgs(f32, f64, -0.0);
4968 try testArgs(f32, f64, 0.0);
4969 try testArgs(f32, f64, tmin(f64));
4970 try testArgs(f32, f64, fmin(f64));
4971 try testArgs(f32, f64, 1e-1);
4972 try testArgs(f32, f64, 1e0);
4973 try testArgs(f32, f64, 1e1);
4974 try testArgs(f32, f64, fmax(f64));
4975 try testArgs(f32, f64, inf(f64));
4976 try testArgs(f32, f64, nan(f64));
4977
4978 try testArgs(f64, f64, -nan(f64));
4979 try testArgs(f64, f64, -inf(f64));
4980 try testArgs(f64, f64, -fmax(f64));
4981 try testArgs(f64, f64, -1e1);
4982 try testArgs(f64, f64, -1e0);
4983 try testArgs(f64, f64, -1e-1);
4984 try testArgs(f64, f64, -fmin(f64));
4985 try testArgs(f64, f64, -tmin(f64));
4986 try testArgs(f64, f64, -0.0);
4987 try testArgs(f64, f64, 0.0);
4988 try testArgs(f64, f64, tmin(f64));
4989 try testArgs(f64, f64, fmin(f64));
4990 try testArgs(f64, f64, 1e-1);
4991 try testArgs(f64, f64, 1e0);
4992 try testArgs(f64, f64, 1e1);
4993 try testArgs(f64, f64, fmax(f64));
4994 try testArgs(f64, f64, inf(f64));
4995 try testArgs(f64, f64, nan(f64));
4996
4997 try testArgs(f80, f64, -nan(f64));
4998 try testArgs(f80, f64, -inf(f64));
4999 try testArgs(f80, f64, -fmax(f64));
5000 try testArgs(f80, f64, -1e1);
5001 try testArgs(f80, f64, -1e0);
5002 try testArgs(f80, f64, -1e-1);
5003 try testArgs(f80, f64, -fmin(f64));
5004 try testArgs(f80, f64, -tmin(f64));
5005 try testArgs(f80, f64, -0.0);
5006 try testArgs(f80, f64, 0.0);
5007 try testArgs(f80, f64, tmin(f64));
5008 try testArgs(f80, f64, fmin(f64));
5009 try testArgs(f80, f64, 1e-1);
5010 try testArgs(f80, f64, 1e0);
5011 try testArgs(f80, f64, 1e1);
5012 try testArgs(f80, f64, fmax(f64));
5013 try testArgs(f80, f64, inf(f64));
5014 try testArgs(f80, f64, nan(f64));
5015
5016 try testArgs(f128, f64, -nan(f64));
5017 try testArgs(f128, f64, -inf(f64));
5018 try testArgs(f128, f64, -fmax(f64));
5019 try testArgs(f128, f64, -1e1);
5020 try testArgs(f128, f64, -1e0);
5021 try testArgs(f128, f64, -1e-1);
5022 try testArgs(f128, f64, -fmin(f64));
5023 try testArgs(f128, f64, -tmin(f64));
5024 try testArgs(f128, f64, -0.0);
5025 try testArgs(f128, f64, 0.0);
5026 try testArgs(f128, f64, tmin(f64));
5027 try testArgs(f128, f64, fmin(f64));
5028 try testArgs(f128, f64, 1e-1);
5029 try testArgs(f128, f64, 1e0);
5030 try testArgs(f128, f64, 1e1);
5031 try testArgs(f128, f64, fmax(f64));
5032 try testArgs(f128, f64, inf(f64));
5033 try testArgs(f128, f64, nan(f64));
5034
5035 try testArgs(f16, f80, -nan(f80));
5036 try testArgs(f16, f80, -inf(f80));
5037 try testArgs(f16, f80, -fmax(f80));
5038 try testArgs(f16, f80, -1e1);
5039 try testArgs(f16, f80, -1e0);
5040 try testArgs(f16, f80, -1e-1);
5041 try testArgs(f16, f80, -fmin(f80));
5042 try testArgs(f16, f80, -tmin(f80));
5043 try testArgs(f16, f80, -0.0);
5044 try testArgs(f16, f80, 0.0);
5045 try testArgs(f16, f80, tmin(f80));
5046 try testArgs(f16, f80, fmin(f80));
5047 try testArgs(f16, f80, 1e-1);
5048 try testArgs(f16, f80, 1e0);
5049 try testArgs(f16, f80, 1e1);
5050 try testArgs(f16, f80, fmax(f80));
5051 try testArgs(f16, f80, inf(f80));
5052 try testArgs(f16, f80, nan(f80));
5053
5054 try testArgs(f32, f80, -nan(f80));
5055 try testArgs(f32, f80, -inf(f80));
5056 try testArgs(f32, f80, -fmax(f80));
5057 try testArgs(f32, f80, -1e1);
5058 try testArgs(f32, f80, -1e0);
5059 try testArgs(f32, f80, -1e-1);
5060 try testArgs(f32, f80, -fmin(f80));
5061 try testArgs(f32, f80, -tmin(f80));
5062 try testArgs(f32, f80, -0.0);
5063 try testArgs(f32, f80, 0.0);
5064 try testArgs(f32, f80, tmin(f80));
5065 try testArgs(f32, f80, fmin(f80));
5066 try testArgs(f32, f80, 1e-1);
5067 try testArgs(f32, f80, 1e0);
5068 try testArgs(f32, f80, 1e1);
5069 try testArgs(f32, f80, fmax(f80));
5070 try testArgs(f32, f80, inf(f80));
5071 try testArgs(f32, f80, nan(f80));
5072
5073 try testArgs(f64, f80, -nan(f80));
5074 try testArgs(f64, f80, -inf(f80));
5075 try testArgs(f64, f80, -fmax(f80));
5076 try testArgs(f64, f80, -1e1);
5077 try testArgs(f64, f80, -1e0);
5078 try testArgs(f64, f80, -1e-1);
5079 try testArgs(f64, f80, -fmin(f80));
5080 try testArgs(f64, f80, -tmin(f80));
5081 try testArgs(f64, f80, -0.0);
5082 try testArgs(f64, f80, 0.0);
5083 try testArgs(f64, f80, tmin(f80));
5084 try testArgs(f64, f80, fmin(f80));
5085 try testArgs(f64, f80, 1e-1);
5086 try testArgs(f64, f80, 1e0);
5087 try testArgs(f64, f80, 1e1);
5088 try testArgs(f64, f80, fmax(f80));
5089 try testArgs(f64, f80, inf(f80));
5090 try testArgs(f64, f80, nan(f80));
5091
5092 try testArgs(f80, f80, -nan(f80));
5093 try testArgs(f80, f80, -inf(f80));
5094 try testArgs(f80, f80, -fmax(f80));
5095 try testArgs(f80, f80, -1e1);
5096 try testArgs(f80, f80, -1e0);
5097 try testArgs(f80, f80, -1e-1);
5098 try testArgs(f80, f80, -fmin(f80));
5099 try testArgs(f80, f80, -tmin(f80));
5100 try testArgs(f80, f80, -0.0);
5101 try testArgs(f80, f80, 0.0);
5102 try testArgs(f80, f80, tmin(f80));
5103 try testArgs(f80, f80, fmin(f80));
5104 try testArgs(f80, f80, 1e-1);
5105 try testArgs(f80, f80, 1e0);
5106 try testArgs(f80, f80, 1e1);
5107 try testArgs(f80, f80, fmax(f80));
5108 try testArgs(f80, f80, inf(f80));
5109 try testArgs(f80, f80, nan(f80));
5110
5111 try testArgs(f128, f80, -nan(f80));
5112 try testArgs(f128, f80, -inf(f80));
5113 try testArgs(f128, f80, -fmax(f80));
5114 try testArgs(f128, f80, -1e1);
5115 try testArgs(f128, f80, -1e0);
5116 try testArgs(f128, f80, -1e-1);
5117 try testArgs(f128, f80, -fmin(f80));
5118 try testArgs(f128, f80, -tmin(f80));
5119 try testArgs(f128, f80, -0.0);
5120 try testArgs(f128, f80, 0.0);
5121 try testArgs(f128, f80, tmin(f80));
5122 try testArgs(f128, f80, fmin(f80));
5123 try testArgs(f128, f80, 1e-1);
5124 try testArgs(f128, f80, 1e0);
5125 try testArgs(f128, f80, 1e1);
5126 try testArgs(f128, f80, fmax(f80));
5127 try testArgs(f128, f80, inf(f80));
5128 try testArgs(f128, f80, nan(f80));
5129
5130 try testArgs(f16, f128, -nan(f128));
5131 try testArgs(f16, f128, -inf(f128));
5132 try testArgs(f16, f128, -fmax(f128));
5133 try testArgs(f16, f128, -1e1);
5134 try testArgs(f16, f128, -1e0);
5135 try testArgs(f16, f128, -1e-1);
5136 try testArgs(f16, f128, -fmin(f128));
5137 try testArgs(f16, f128, -tmin(f128));
5138 try testArgs(f16, f128, -0.0);
5139 try testArgs(f16, f128, 0.0);
5140 try testArgs(f16, f128, tmin(f128));
5141 try testArgs(f16, f128, fmin(f128));
5142 try testArgs(f16, f128, 1e-1);
5143 try testArgs(f16, f128, 1e0);
5144 try testArgs(f16, f128, 1e1);
5145 try testArgs(f16, f128, fmax(f128));
5146 try testArgs(f16, f128, inf(f128));
5147 try testArgs(f16, f128, nan(f128));
5148
5149 try testArgs(f32, f128, -nan(f128));
5150 try testArgs(f32, f128, -inf(f128));
5151 try testArgs(f32, f128, -fmax(f128));
5152 try testArgs(f32, f128, -1e1);
5153 try testArgs(f32, f128, -1e0);
5154 try testArgs(f32, f128, -1e-1);
5155 try testArgs(f32, f128, -fmin(f128));
5156 try testArgs(f32, f128, -tmin(f128));
5157 try testArgs(f32, f128, -0.0);
5158 try testArgs(f32, f128, 0.0);
5159 try testArgs(f32, f128, tmin(f128));
5160 try testArgs(f32, f128, fmin(f128));
5161 try testArgs(f32, f128, 1e-1);
5162 try testArgs(f32, f128, 1e0);
5163 try testArgs(f32, f128, 1e1);
5164 try testArgs(f32, f128, fmax(f128));
5165 try testArgs(f32, f128, inf(f128));
5166 try testArgs(f32, f128, nan(f128));
5167
5168 try testArgs(f64, f128, -nan(f128));
5169 try testArgs(f64, f128, -inf(f128));
5170 try testArgs(f64, f128, -fmax(f128));
5171 try testArgs(f64, f128, -1e1);
5172 try testArgs(f64, f128, -1e0);
5173 try testArgs(f64, f128, -1e-1);
5174 try testArgs(f64, f128, -fmin(f128));
5175 try testArgs(f64, f128, -tmin(f128));
5176 try testArgs(f64, f128, -0.0);
5177 try testArgs(f64, f128, 0.0);
5178 try testArgs(f64, f128, tmin(f128));
5179 try testArgs(f64, f128, fmin(f128));
5180 try testArgs(f64, f128, 1e-1);
5181 try testArgs(f64, f128, 1e0);
5182 try testArgs(f64, f128, 1e1);
5183 try testArgs(f64, f128, fmax(f128));
5184 try testArgs(f64, f128, inf(f128));
5185 try testArgs(f64, f128, nan(f128));
5186
5187 try testArgs(f80, f128, -nan(f128));
5188 try testArgs(f80, f128, -inf(f128));
5189 try testArgs(f80, f128, -fmax(f128));
5190 try testArgs(f80, f128, -1e1);
5191 try testArgs(f80, f128, -1e0);
5192 try testArgs(f80, f128, -1e-1);
5193 try testArgs(f80, f128, -fmin(f128));
5194 try testArgs(f80, f128, -tmin(f128));
5195 try testArgs(f80, f128, -0.0);
5196 try testArgs(f80, f128, 0.0);
5197 try testArgs(f80, f128, tmin(f128));
5198 try testArgs(f80, f128, fmin(f128));
5199 try testArgs(f80, f128, 1e-1);
5200 try testArgs(f80, f128, 1e0);
5201 try testArgs(f80, f128, 1e1);
5202 try testArgs(f80, f128, fmax(f128));
5203 try testArgs(f80, f128, inf(f128));
5204 try testArgs(f80, f128, nan(f128));
5205
5206 try testArgs(f128, f128, -nan(f128));
5207 try testArgs(f128, f128, -inf(f128));
5208 try testArgs(f128, f128, -fmax(f128));
5209 try testArgs(f128, f128, -1e1);
5210 try testArgs(f128, f128, -1e0);
5211 try testArgs(f128, f128, -1e-1);
5212 try testArgs(f128, f128, -fmin(f128));
5213 try testArgs(f128, f128, -tmin(f128));
5214 try testArgs(f128, f128, -0.0);
5215 try testArgs(f128, f128, 0.0);
5216 try testArgs(f128, f128, tmin(f128));
5217 try testArgs(f128, f128, fmin(f128));
5218 try testArgs(f128, f128, 1e-1);
5219 try testArgs(f128, f128, 1e0);
5220 try testArgs(f128, f128, 1e1);
5221 try testArgs(f128, f128, fmax(f128));
5222 try testArgs(f128, f128, inf(f128));
5223 try testArgs(f128, f128, nan(f128));
5224 }
5225 fn testIntVectors() !void {
5226 try testArgs(@Vector(1, i8), @Vector(1, i1), .{-1});
5227 try testArgs(@Vector(1, u8), @Vector(1, i1), .{-1});
5228 try testArgs(@Vector(1, i16), @Vector(1, i1), .{-1});
5229 try testArgs(@Vector(1, u16), @Vector(1, i1), .{-1});
5230 try testArgs(@Vector(1, i32), @Vector(1, i1), .{-1});
5231 try testArgs(@Vector(1, u32), @Vector(1, i1), .{-1});
5232 try testArgs(@Vector(1, i64), @Vector(1, i1), .{-1});
5233 try testArgs(@Vector(1, u64), @Vector(1, i1), .{-1});
5234 try testArgs(@Vector(1, i128), @Vector(1, i1), .{-1});
5235 try testArgs(@Vector(1, u128), @Vector(1, i1), .{-1});
5236 try testArgs(@Vector(1, i256), @Vector(1, i1), .{-1});
5237 try testArgs(@Vector(1, u256), @Vector(1, i1), .{-1});
5238 try testArgs(@Vector(1, i512), @Vector(1, i1), .{-1});
5239 try testArgs(@Vector(1, u512), @Vector(1, i1), .{-1});
5240 try testArgs(@Vector(1, i1024), @Vector(1, i1), .{-1});
5241 try testArgs(@Vector(1, u1024), @Vector(1, i1), .{-1});
5242 try testArgs(@Vector(1, i8), @Vector(1, u1), .{1});
5243 try testArgs(@Vector(1, u8), @Vector(1, u1), .{1});
5244 try testArgs(@Vector(1, i16), @Vector(1, u1), .{1});
5245 try testArgs(@Vector(1, u16), @Vector(1, u1), .{1});
5246 try testArgs(@Vector(1, i32), @Vector(1, u1), .{1});
5247 try testArgs(@Vector(1, u32), @Vector(1, u1), .{1});
5248 try testArgs(@Vector(1, i64), @Vector(1, u1), .{1});
5249 try testArgs(@Vector(1, u64), @Vector(1, u1), .{1});
5250 try testArgs(@Vector(1, i128), @Vector(1, u1), .{1});
5251 try testArgs(@Vector(1, u128), @Vector(1, u1), .{1});
5252 try testArgs(@Vector(1, i256), @Vector(1, u1), .{1});
5253 try testArgs(@Vector(1, u256), @Vector(1, u1), .{1});
5254 try testArgs(@Vector(1, i512), @Vector(1, u1), .{1});
5255 try testArgs(@Vector(1, u512), @Vector(1, u1), .{1});
5256 try testArgs(@Vector(1, i1024), @Vector(1, u1), .{1});
5257 try testArgs(@Vector(1, u1024), @Vector(1, u1), .{1});
5258
5259 try testArgs(@Vector(2, i8), @Vector(2, i1), .{ -1, 0 });
5260 try testArgs(@Vector(2, u8), @Vector(2, i1), .{ -1, 0 });
5261 try testArgs(@Vector(2, i16), @Vector(2, i1), .{ -1, 0 });
5262 try testArgs(@Vector(2, u16), @Vector(2, i1), .{ -1, 0 });
5263 try testArgs(@Vector(2, i32), @Vector(2, i1), .{ -1, 0 });
5264 try testArgs(@Vector(2, u32), @Vector(2, i1), .{ -1, 0 });
5265 try testArgs(@Vector(2, i64), @Vector(2, i1), .{ -1, 0 });
5266 try testArgs(@Vector(2, u64), @Vector(2, i1), .{ -1, 0 });
5267 try testArgs(@Vector(2, i128), @Vector(2, i1), .{ -1, 0 });
5268 try testArgs(@Vector(2, u128), @Vector(2, i1), .{ -1, 0 });
5269 try testArgs(@Vector(2, i256), @Vector(2, i1), .{ -1, 0 });
5270 try testArgs(@Vector(2, u256), @Vector(2, i1), .{ -1, 0 });
5271 try testArgs(@Vector(2, i512), @Vector(2, i1), .{ -1, 0 });
5272 try testArgs(@Vector(2, u512), @Vector(2, i1), .{ -1, 0 });
5273 try testArgs(@Vector(2, i1024), @Vector(2, i1), .{ -1, 0 });
5274 try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 });
5275 try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 });
5276 try testArgs(@Vector(2, u8), @Vector(2, u1), .{ 0, 1 });
5277 try testArgs(@Vector(2, i16), @Vector(2, u1), .{ 0, 1 });
5278 try testArgs(@Vector(2, u16), @Vector(2, u1), .{ 0, 1 });
5279 try testArgs(@Vector(2, i32), @Vector(2, u1), .{ 0, 1 });
5280 try testArgs(@Vector(2, u32), @Vector(2, u1), .{ 0, 1 });
5281 try testArgs(@Vector(2, i64), @Vector(2, u1), .{ 0, 1 });
5282 try testArgs(@Vector(2, u64), @Vector(2, u1), .{ 0, 1 });
5283 try testArgs(@Vector(2, i128), @Vector(2, u1), .{ 0, 1 });
5284 try testArgs(@Vector(2, u128), @Vector(2, u1), .{ 0, 1 });
5285 try testArgs(@Vector(2, i256), @Vector(2, u1), .{ 0, 1 });
5286 try testArgs(@Vector(2, u256), @Vector(2, u1), .{ 0, 1 });
5287 try testArgs(@Vector(2, i512), @Vector(2, u1), .{ 0, 1 });
5288 try testArgs(@Vector(2, u512), @Vector(2, u1), .{ 0, 1 });
5289 try testArgs(@Vector(2, i1024), @Vector(2, u1), .{ 0, 1 });
5290 try testArgs(@Vector(2, u1024), @Vector(2, u1), .{ 0, 1 });
5291
5292 try testArgs(@Vector(3, i8), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5293 try testArgs(@Vector(3, u8), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5294 try testArgs(@Vector(3, i16), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5295 try testArgs(@Vector(3, u16), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5296 try testArgs(@Vector(3, i32), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5297 try testArgs(@Vector(3, u32), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5298 try testArgs(@Vector(3, i64), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5299 try testArgs(@Vector(3, u64), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5300 try testArgs(@Vector(3, i128), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5301 try testArgs(@Vector(3, u128), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5302 try testArgs(@Vector(3, i256), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5303 try testArgs(@Vector(3, u256), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5304 try testArgs(@Vector(3, i512), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5305 try testArgs(@Vector(3, u512), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5306 try testArgs(@Vector(3, i1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5307 try testArgs(@Vector(3, u1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });
5308 try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5309 try testArgs(@Vector(3, u8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5310 try testArgs(@Vector(3, i16), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5311 try testArgs(@Vector(3, u16), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5312 try testArgs(@Vector(3, i32), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5313 try testArgs(@Vector(3, u32), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5314 try testArgs(@Vector(3, i64), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5315 try testArgs(@Vector(3, u64), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5316 try testArgs(@Vector(3, i128), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5317 try testArgs(@Vector(3, u128), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5318 try testArgs(@Vector(3, i256), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5319 try testArgs(@Vector(3, u256), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5320 try testArgs(@Vector(3, i512), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5321 try testArgs(@Vector(3, u512), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5322 try testArgs(@Vector(3, i1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5323 try testArgs(@Vector(3, u1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });
5324
5325 try testArgs(@Vector(3, i8), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5326 try testArgs(@Vector(3, u8), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5327 try testArgs(@Vector(3, i16), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5328 try testArgs(@Vector(3, u16), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5329 try testArgs(@Vector(3, i32), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5330 try testArgs(@Vector(3, u32), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5331 try testArgs(@Vector(3, i64), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5332 try testArgs(@Vector(3, u64), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5333 try testArgs(@Vector(3, i128), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5334 try testArgs(@Vector(3, u128), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5335 try testArgs(@Vector(3, i256), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5336 try testArgs(@Vector(3, u256), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5337 try testArgs(@Vector(3, i512), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5338 try testArgs(@Vector(3, u512), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5339 try testArgs(@Vector(3, i1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5340 try testArgs(@Vector(3, u1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });
5341 try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5342 try testArgs(@Vector(3, u8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5343 try testArgs(@Vector(3, i16), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5344 try testArgs(@Vector(3, u16), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5345 try testArgs(@Vector(3, i32), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5346 try testArgs(@Vector(3, u32), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5347 try testArgs(@Vector(3, i64), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5348 try testArgs(@Vector(3, u64), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5349 try testArgs(@Vector(3, i128), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5350 try testArgs(@Vector(3, u128), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5351 try testArgs(@Vector(3, i256), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5352 try testArgs(@Vector(3, u256), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5353 try testArgs(@Vector(3, i512), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5354 try testArgs(@Vector(3, u512), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5355 try testArgs(@Vector(3, i1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5356 try testArgs(@Vector(3, u1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });
5357
5358 try testArgs(@Vector(3, i8), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5359 try testArgs(@Vector(3, u8), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5360 try testArgs(@Vector(3, i16), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5361 try testArgs(@Vector(3, u16), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5362 try testArgs(@Vector(3, i32), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5363 try testArgs(@Vector(3, u32), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5364 try testArgs(@Vector(3, i64), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5365 try testArgs(@Vector(3, u64), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5366 try testArgs(@Vector(3, i128), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5367 try testArgs(@Vector(3, u128), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5368 try testArgs(@Vector(3, i256), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5369 try testArgs(@Vector(3, u256), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5370 try testArgs(@Vector(3, i512), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5371 try testArgs(@Vector(3, u512), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5372 try testArgs(@Vector(3, i1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5373 try testArgs(@Vector(3, u1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });
5374 try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5375 try testArgs(@Vector(3, u8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5376 try testArgs(@Vector(3, i16), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5377 try testArgs(@Vector(3, u16), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5378 try testArgs(@Vector(3, i32), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5379 try testArgs(@Vector(3, u32), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5380 try testArgs(@Vector(3, i64), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5381 try testArgs(@Vector(3, u64), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5382 try testArgs(@Vector(3, i128), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5383 try testArgs(@Vector(3, u128), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5384 try testArgs(@Vector(3, i256), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5385 try testArgs(@Vector(3, u256), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5386 try testArgs(@Vector(3, i512), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5387 try testArgs(@Vector(3, u512), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5388 try testArgs(@Vector(3, i1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5389 try testArgs(@Vector(3, u1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });
5390
5391 try testArgs(@Vector(3, i8), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5392 try testArgs(@Vector(3, u8), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5393 try testArgs(@Vector(3, i16), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5394 try testArgs(@Vector(3, u16), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5395 try testArgs(@Vector(3, i32), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5396 try testArgs(@Vector(3, u32), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5397 try testArgs(@Vector(3, i64), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5398 try testArgs(@Vector(3, u64), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5399 try testArgs(@Vector(3, i128), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5400 try testArgs(@Vector(3, u128), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5401 try testArgs(@Vector(3, i256), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5402 try testArgs(@Vector(3, u256), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5403 try testArgs(@Vector(3, i512), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5404 try testArgs(@Vector(3, u512), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5405 try testArgs(@Vector(3, i1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5406 try testArgs(@Vector(3, u1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });
5407 try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5408 try testArgs(@Vector(3, u8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5409 try testArgs(@Vector(3, i16), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5410 try testArgs(@Vector(3, u16), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5411 try testArgs(@Vector(3, i32), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5412 try testArgs(@Vector(3, u32), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5413 try testArgs(@Vector(3, i64), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5414 try testArgs(@Vector(3, u64), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5415 try testArgs(@Vector(3, i128), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5416 try testArgs(@Vector(3, u128), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5417 try testArgs(@Vector(3, i256), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5418 try testArgs(@Vector(3, u256), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5419 try testArgs(@Vector(3, i512), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5420 try testArgs(@Vector(3, u512), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5421 try testArgs(@Vector(3, i1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5422 try testArgs(@Vector(3, u1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });
5423
5424 try testArgs(@Vector(3, i8), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5425 try testArgs(@Vector(3, u8), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5426 try testArgs(@Vector(3, i16), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5427 try testArgs(@Vector(3, u16), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5428 try testArgs(@Vector(3, i32), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5429 try testArgs(@Vector(3, u32), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5430 try testArgs(@Vector(3, i64), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5431 try testArgs(@Vector(3, u64), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5432 try testArgs(@Vector(3, i128), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5433 try testArgs(@Vector(3, u128), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5434 try testArgs(@Vector(3, i256), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5435 try testArgs(@Vector(3, u256), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5436 try testArgs(@Vector(3, i512), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5437 try testArgs(@Vector(3, u512), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5438 try testArgs(@Vector(3, i1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5439 try testArgs(@Vector(3, u1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });
5440 try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5441 try testArgs(@Vector(3, u8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5442 try testArgs(@Vector(3, i16), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5443 try testArgs(@Vector(3, u16), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5444 try testArgs(@Vector(3, i32), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5445 try testArgs(@Vector(3, u32), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5446 try testArgs(@Vector(3, i64), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5447 try testArgs(@Vector(3, u64), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5448 try testArgs(@Vector(3, i128), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5449 try testArgs(@Vector(3, u128), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5450 try testArgs(@Vector(3, i256), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5451 try testArgs(@Vector(3, u256), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5452 try testArgs(@Vector(3, i512), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5453 try testArgs(@Vector(3, u512), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5454 try testArgs(@Vector(3, i1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5455 try testArgs(@Vector(3, u1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });
5456
5457 try testArgs(@Vector(3, i8), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5458 try testArgs(@Vector(3, u8), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5459 try testArgs(@Vector(3, i16), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5460 try testArgs(@Vector(3, u16), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5461 try testArgs(@Vector(3, i32), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5462 try testArgs(@Vector(3, u32), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5463 try testArgs(@Vector(3, i64), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5464 try testArgs(@Vector(3, u64), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5465 try testArgs(@Vector(3, i128), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5466 try testArgs(@Vector(3, u128), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5467 try testArgs(@Vector(3, i256), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5468 try testArgs(@Vector(3, u256), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5469 try testArgs(@Vector(3, i512), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5470 try testArgs(@Vector(3, u512), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5471 try testArgs(@Vector(3, i1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5472 try testArgs(@Vector(3, u1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });
5473 try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5474 try testArgs(@Vector(3, u8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5475 try testArgs(@Vector(3, i16), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5476 try testArgs(@Vector(3, u16), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5477 try testArgs(@Vector(3, i32), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5478 try testArgs(@Vector(3, u32), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5479 try testArgs(@Vector(3, i64), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5480 try testArgs(@Vector(3, u64), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5481 try testArgs(@Vector(3, i128), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5482 try testArgs(@Vector(3, u128), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5483 try testArgs(@Vector(3, i256), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5484 try testArgs(@Vector(3, u256), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5485 try testArgs(@Vector(3, i512), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5486 try testArgs(@Vector(3, u512), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5487 try testArgs(@Vector(3, i1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5488 try testArgs(@Vector(3, u1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });
5489
5490 try testArgs(@Vector(3, i8), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5491 try testArgs(@Vector(3, u8), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5492 try testArgs(@Vector(3, i16), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5493 try testArgs(@Vector(3, u16), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5494 try testArgs(@Vector(3, i32), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5495 try testArgs(@Vector(3, u32), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5496 try testArgs(@Vector(3, i64), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5497 try testArgs(@Vector(3, u64), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5498 try testArgs(@Vector(3, i128), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5499 try testArgs(@Vector(3, u128), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5500 try testArgs(@Vector(3, i256), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5501 try testArgs(@Vector(3, u256), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5502 try testArgs(@Vector(3, i512), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5503 try testArgs(@Vector(3, u512), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5504 try testArgs(@Vector(3, i1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5505 try testArgs(@Vector(3, u1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });
5506 try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5507 try testArgs(@Vector(3, u8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5508 try testArgs(@Vector(3, i16), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5509 try testArgs(@Vector(3, u16), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5510 try testArgs(@Vector(3, i32), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5511 try testArgs(@Vector(3, u32), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5512 try testArgs(@Vector(3, i64), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5513 try testArgs(@Vector(3, u64), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5514 try testArgs(@Vector(3, i128), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5515 try testArgs(@Vector(3, u128), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5516 try testArgs(@Vector(3, i256), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5517 try testArgs(@Vector(3, u256), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5518 try testArgs(@Vector(3, i512), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5519 try testArgs(@Vector(3, u512), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5520 try testArgs(@Vector(3, i1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5521 try testArgs(@Vector(3, u1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });
5522
5523 try testArgs(@Vector(3, i8), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5524 try testArgs(@Vector(3, u8), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5525 try testArgs(@Vector(3, i16), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5526 try testArgs(@Vector(3, u16), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5527 try testArgs(@Vector(3, i32), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5528 try testArgs(@Vector(3, u32), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5529 try testArgs(@Vector(3, i64), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5530 try testArgs(@Vector(3, u64), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5531 try testArgs(@Vector(3, i128), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5532 try testArgs(@Vector(3, u128), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5533 try testArgs(@Vector(3, i256), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5534 try testArgs(@Vector(3, u256), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5535 try testArgs(@Vector(3, i512), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5536 try testArgs(@Vector(3, u512), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5537 try testArgs(@Vector(3, i1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5538 try testArgs(@Vector(3, u1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });
5539 try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5540 try testArgs(@Vector(3, u8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5541 try testArgs(@Vector(3, i16), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5542 try testArgs(@Vector(3, u16), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5543 try testArgs(@Vector(3, i32), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5544 try testArgs(@Vector(3, u32), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5545 try testArgs(@Vector(3, i64), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5546 try testArgs(@Vector(3, u64), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5547 try testArgs(@Vector(3, i128), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5548 try testArgs(@Vector(3, u128), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5549 try testArgs(@Vector(3, i256), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5550 try testArgs(@Vector(3, u256), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5551 try testArgs(@Vector(3, i512), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5552 try testArgs(@Vector(3, u512), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5553 try testArgs(@Vector(3, i1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5554 try testArgs(@Vector(3, u1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });
5555
5556 try testArgs(@Vector(3, i8), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5557 try testArgs(@Vector(3, u8), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5558 try testArgs(@Vector(3, i16), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5559 try testArgs(@Vector(3, u16), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5560 try testArgs(@Vector(3, i32), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5561 try testArgs(@Vector(3, u32), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5562 try testArgs(@Vector(3, i64), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5563 try testArgs(@Vector(3, u64), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5564 try testArgs(@Vector(3, i128), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5565 try testArgs(@Vector(3, u128), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5566 try testArgs(@Vector(3, i256), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5567 try testArgs(@Vector(3, u256), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5568 try testArgs(@Vector(3, i512), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5569 try testArgs(@Vector(3, u512), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5570 try testArgs(@Vector(3, i1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5571 try testArgs(@Vector(3, u1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });
5572 try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5573 try testArgs(@Vector(3, u8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5574 try testArgs(@Vector(3, i16), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5575 try testArgs(@Vector(3, u16), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5576 try testArgs(@Vector(3, i32), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5577 try testArgs(@Vector(3, u32), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5578 try testArgs(@Vector(3, i64), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5579 try testArgs(@Vector(3, u64), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5580 try testArgs(@Vector(3, i128), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5581 try testArgs(@Vector(3, u128), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5582 try testArgs(@Vector(3, i256), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5583 try testArgs(@Vector(3, u256), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5584 try testArgs(@Vector(3, i512), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5585 try testArgs(@Vector(3, u512), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5586 try testArgs(@Vector(3, i1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5587 try testArgs(@Vector(3, u1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });
5588
5589 try testArgs(@Vector(3, i8), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5590 try testArgs(@Vector(3, u8), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5591 try testArgs(@Vector(3, i16), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5592 try testArgs(@Vector(3, u16), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5593 try testArgs(@Vector(3, i32), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5594 try testArgs(@Vector(3, u32), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5595 try testArgs(@Vector(3, i64), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5596 try testArgs(@Vector(3, u64), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5597 try testArgs(@Vector(3, i128), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5598 try testArgs(@Vector(3, u128), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5599 try testArgs(@Vector(3, i256), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5600 try testArgs(@Vector(3, u256), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5601 try testArgs(@Vector(3, i512), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5602 try testArgs(@Vector(3, u512), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5603 try testArgs(@Vector(3, i1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5604 try testArgs(@Vector(3, u1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });
5605 try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5606 try testArgs(@Vector(3, u8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5607 try testArgs(@Vector(3, i16), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5608 try testArgs(@Vector(3, u16), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5609 try testArgs(@Vector(3, i32), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5610 try testArgs(@Vector(3, u32), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5611 try testArgs(@Vector(3, i64), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5612 try testArgs(@Vector(3, u64), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5613 try testArgs(@Vector(3, i128), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5614 try testArgs(@Vector(3, u128), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5615 try testArgs(@Vector(3, i256), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5616 try testArgs(@Vector(3, u256), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5617 try testArgs(@Vector(3, i512), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5618 try testArgs(@Vector(3, u512), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5619 try testArgs(@Vector(3, i1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5620 try testArgs(@Vector(3, u1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });
5621
5622 try testArgs(@Vector(3, i8), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5623 try testArgs(@Vector(3, u8), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5624 try testArgs(@Vector(3, i16), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5625 try testArgs(@Vector(3, u16), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5626 try testArgs(@Vector(3, i32), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5627 try testArgs(@Vector(3, u32), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5628 try testArgs(@Vector(3, i64), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5629 try testArgs(@Vector(3, u64), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5630 try testArgs(@Vector(3, i128), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5631 try testArgs(@Vector(3, u128), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5632 try testArgs(@Vector(3, i256), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5633 try testArgs(@Vector(3, u256), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5634 try testArgs(@Vector(3, i512), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5635 try testArgs(@Vector(3, u512), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5636 try testArgs(@Vector(3, i1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5637 try testArgs(@Vector(3, u1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });
5638 try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5639 try testArgs(@Vector(3, u8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5640 try testArgs(@Vector(3, i16), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5641 try testArgs(@Vector(3, u16), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5642 try testArgs(@Vector(3, i32), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5643 try testArgs(@Vector(3, u32), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5644 try testArgs(@Vector(3, i64), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5645 try testArgs(@Vector(3, u64), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5646 try testArgs(@Vector(3, i128), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5647 try testArgs(@Vector(3, u128), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5648 try testArgs(@Vector(3, i256), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5649 try testArgs(@Vector(3, u256), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5650 try testArgs(@Vector(3, i512), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5651 try testArgs(@Vector(3, u512), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5652 try testArgs(@Vector(3, i1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5653 try testArgs(@Vector(3, u1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });
5654
5655 try testArgs(@Vector(3, i8), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5656 try testArgs(@Vector(3, u8), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5657 try testArgs(@Vector(3, i16), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5658 try testArgs(@Vector(3, u16), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5659 try testArgs(@Vector(3, i32), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5660 try testArgs(@Vector(3, u32), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5661 try testArgs(@Vector(3, i64), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5662 try testArgs(@Vector(3, u64), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5663 try testArgs(@Vector(3, i128), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5664 try testArgs(@Vector(3, u128), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5665 try testArgs(@Vector(3, i256), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5666 try testArgs(@Vector(3, u256), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5667 try testArgs(@Vector(3, i512), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5668 try testArgs(@Vector(3, u512), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5669 try testArgs(@Vector(3, i1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5670 try testArgs(@Vector(3, u1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });
5671 try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5672 try testArgs(@Vector(3, u8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5673 try testArgs(@Vector(3, i16), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5674 try testArgs(@Vector(3, u16), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5675 try testArgs(@Vector(3, i32), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5676 try testArgs(@Vector(3, u32), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5677 try testArgs(@Vector(3, i64), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5678 try testArgs(@Vector(3, u64), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5679 try testArgs(@Vector(3, i128), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5680 try testArgs(@Vector(3, u128), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5681 try testArgs(@Vector(3, i256), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5682 try testArgs(@Vector(3, u256), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5683 try testArgs(@Vector(3, i512), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5684 try testArgs(@Vector(3, u512), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5685 try testArgs(@Vector(3, i1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5686 try testArgs(@Vector(3, u1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });
5687
5688 try testArgs(@Vector(3, i8), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5689 try testArgs(@Vector(3, u8), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5690 try testArgs(@Vector(3, i16), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5691 try testArgs(@Vector(3, u16), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5692 try testArgs(@Vector(3, i32), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5693 try testArgs(@Vector(3, u32), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5694 try testArgs(@Vector(3, i64), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5695 try testArgs(@Vector(3, u64), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5696 try testArgs(@Vector(3, i128), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5697 try testArgs(@Vector(3, u128), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5698 try testArgs(@Vector(3, i256), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5699 try testArgs(@Vector(3, u256), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5700 try testArgs(@Vector(3, i512), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5701 try testArgs(@Vector(3, u512), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5702 try testArgs(@Vector(3, i1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5703 try testArgs(@Vector(3, u1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });
5704 try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5705 try testArgs(@Vector(3, u8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5706 try testArgs(@Vector(3, i16), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5707 try testArgs(@Vector(3, u16), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5708 try testArgs(@Vector(3, i32), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5709 try testArgs(@Vector(3, u32), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5710 try testArgs(@Vector(3, i64), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5711 try testArgs(@Vector(3, u64), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5712 try testArgs(@Vector(3, i128), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5713 try testArgs(@Vector(3, u128), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5714 try testArgs(@Vector(3, i256), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5715 try testArgs(@Vector(3, u256), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5716 try testArgs(@Vector(3, i512), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5717 try testArgs(@Vector(3, u512), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5718 try testArgs(@Vector(3, i1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5719 try testArgs(@Vector(3, u1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });
5720
5721 try testArgs(@Vector(3, i8), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5722 try testArgs(@Vector(3, u8), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5723 try testArgs(@Vector(3, i16), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5724 try testArgs(@Vector(3, u16), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5725 try testArgs(@Vector(3, i32), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5726 try testArgs(@Vector(3, u32), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5727 try testArgs(@Vector(3, i64), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5728 try testArgs(@Vector(3, u64), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5729 try testArgs(@Vector(3, i128), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5730 try testArgs(@Vector(3, u128), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5731 try testArgs(@Vector(3, i256), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5732 try testArgs(@Vector(3, u256), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5733 try testArgs(@Vector(3, i512), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5734 try testArgs(@Vector(3, u512), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5735 try testArgs(@Vector(3, i1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5736 try testArgs(@Vector(3, u1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });
5737 try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5738 try testArgs(@Vector(3, u8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5739 try testArgs(@Vector(3, i16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5740 try testArgs(@Vector(3, u16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5741 try testArgs(@Vector(3, i32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5742 try testArgs(@Vector(3, u32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5743 try testArgs(@Vector(3, i64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5744 try testArgs(@Vector(3, u64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5745 try testArgs(@Vector(3, i128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5746 try testArgs(@Vector(3, u128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5747 try testArgs(@Vector(3, i256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5748 try testArgs(@Vector(3, u256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5749 try testArgs(@Vector(3, i512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5750 try testArgs(@Vector(3, u512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5751 try testArgs(@Vector(3, i1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5752 try testArgs(@Vector(3, u1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
5753
5754 try testArgs(@Vector(3, i8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5755 try testArgs(@Vector(3, u8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5756 try testArgs(@Vector(3, i16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5757 try testArgs(@Vector(3, u16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5758 try testArgs(@Vector(3, i32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5759 try testArgs(@Vector(3, u32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5760 try testArgs(@Vector(3, i64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5761 try testArgs(@Vector(3, u64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5762 try testArgs(@Vector(3, i128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5763 try testArgs(@Vector(3, u128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5764 try testArgs(@Vector(3, i256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5765 try testArgs(@Vector(3, u256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5766 try testArgs(@Vector(3, i512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5767 try testArgs(@Vector(3, u512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5768 try testArgs(@Vector(3, i1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5769 try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
5770 try testArgs(@Vector(3, i8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5771 try testArgs(@Vector(3, u8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5772 try testArgs(@Vector(3, i16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5773 try testArgs(@Vector(3, u16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5774 try testArgs(@Vector(3, i32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5775 try testArgs(@Vector(3, u32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5776 try testArgs(@Vector(3, i64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5777 try testArgs(@Vector(3, u64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5778 try testArgs(@Vector(3, i128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5779 try testArgs(@Vector(3, u128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5780 try testArgs(@Vector(3, i256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5781 try testArgs(@Vector(3, u256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5782 try testArgs(@Vector(3, i512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5783 try testArgs(@Vector(3, u512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5784 try testArgs(@Vector(3, i1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5785 try testArgs(@Vector(3, u1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
5786
5787 try testArgs(@Vector(3, i8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5788 try testArgs(@Vector(3, u8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5789 try testArgs(@Vector(3, i16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5790 try testArgs(@Vector(3, u16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5791 try testArgs(@Vector(3, i32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5792 try testArgs(@Vector(3, u32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5793 try testArgs(@Vector(3, i64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5794 try testArgs(@Vector(3, u64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5795 try testArgs(@Vector(3, i128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5796 try testArgs(@Vector(3, u128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5797 try testArgs(@Vector(3, i256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5798 try testArgs(@Vector(3, u256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5799 try testArgs(@Vector(3, i512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5800 try testArgs(@Vector(3, u512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5801 try testArgs(@Vector(3, i1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5802 try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
5803 try testArgs(@Vector(3, i8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5804 try testArgs(@Vector(3, u8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5805 try testArgs(@Vector(3, i16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5806 try testArgs(@Vector(3, u16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5807 try testArgs(@Vector(3, i32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5808 try testArgs(@Vector(3, u32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5809 try testArgs(@Vector(3, i64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5810 try testArgs(@Vector(3, u64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5811 try testArgs(@Vector(3, i128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5812 try testArgs(@Vector(3, u128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5813 try testArgs(@Vector(3, i256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5814 try testArgs(@Vector(3, u256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5815 try testArgs(@Vector(3, i512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5816 try testArgs(@Vector(3, u512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5817 try testArgs(@Vector(3, i1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5818 try testArgs(@Vector(3, u1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
5819
5820 try testArgs(@Vector(3, i8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5821 try testArgs(@Vector(3, u8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5822 try testArgs(@Vector(3, i16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5823 try testArgs(@Vector(3, u16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5824 try testArgs(@Vector(3, i32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5825 try testArgs(@Vector(3, u32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5826 try testArgs(@Vector(3, i64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5827 try testArgs(@Vector(3, u64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5828 try testArgs(@Vector(3, i128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5829 try testArgs(@Vector(3, u128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5830 try testArgs(@Vector(3, i256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5831 try testArgs(@Vector(3, u256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5832 try testArgs(@Vector(3, i512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5833 try testArgs(@Vector(3, u512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5834 try testArgs(@Vector(3, i1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5835 try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
5836 try testArgs(@Vector(3, i8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5837 try testArgs(@Vector(3, u8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5838 try testArgs(@Vector(3, i16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5839 try testArgs(@Vector(3, u16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5840 try testArgs(@Vector(3, i32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5841 try testArgs(@Vector(3, u32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5842 try testArgs(@Vector(3, i64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5843 try testArgs(@Vector(3, u64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5844 try testArgs(@Vector(3, i128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5845 try testArgs(@Vector(3, u128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5846 try testArgs(@Vector(3, i256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5847 try testArgs(@Vector(3, u256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5848 try testArgs(@Vector(3, i512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5849 try testArgs(@Vector(3, u512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5850 try testArgs(@Vector(3, i1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5851 try testArgs(@Vector(3, u1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
5852
5853 try testArgs(@Vector(3, i8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5854 try testArgs(@Vector(3, u8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5855 try testArgs(@Vector(3, i16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5856 try testArgs(@Vector(3, u16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5857 try testArgs(@Vector(3, i32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5858 try testArgs(@Vector(3, u32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5859 try testArgs(@Vector(3, i64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5860 try testArgs(@Vector(3, u64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5861 try testArgs(@Vector(3, i128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5862 try testArgs(@Vector(3, u128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5863 try testArgs(@Vector(3, i256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5864 try testArgs(@Vector(3, u256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5865 try testArgs(@Vector(3, i512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5866 try testArgs(@Vector(3, u512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5867 try testArgs(@Vector(3, i1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5868 try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
5869 try testArgs(@Vector(3, i8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5870 try testArgs(@Vector(3, u8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5871 try testArgs(@Vector(3, i16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5872 try testArgs(@Vector(3, u16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5873 try testArgs(@Vector(3, i32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5874 try testArgs(@Vector(3, u32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5875 try testArgs(@Vector(3, i64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5876 try testArgs(@Vector(3, u64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5877 try testArgs(@Vector(3, i128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5878 try testArgs(@Vector(3, u128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5879 try testArgs(@Vector(3, i256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5880 try testArgs(@Vector(3, u256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5881 try testArgs(@Vector(3, i512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5882 try testArgs(@Vector(3, u512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5883 try testArgs(@Vector(3, i1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5884 try testArgs(@Vector(3, u1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
5885
5886 try testArgs(@Vector(3, i8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5887 try testArgs(@Vector(3, u8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5888 try testArgs(@Vector(3, i16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5889 try testArgs(@Vector(3, u16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5890 try testArgs(@Vector(3, i32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5891 try testArgs(@Vector(3, u32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5892 try testArgs(@Vector(3, i64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5893 try testArgs(@Vector(3, u64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5894 try testArgs(@Vector(3, i128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5895 try testArgs(@Vector(3, u128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5896 try testArgs(@Vector(3, i256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5897 try testArgs(@Vector(3, u256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5898 try testArgs(@Vector(3, i512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5899 try testArgs(@Vector(3, u512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5900 try testArgs(@Vector(3, i1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5901 try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
5902 try testArgs(@Vector(3, i8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5903 try testArgs(@Vector(3, u8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5904 try testArgs(@Vector(3, i16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5905 try testArgs(@Vector(3, u16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5906 try testArgs(@Vector(3, i32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5907 try testArgs(@Vector(3, u32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5908 try testArgs(@Vector(3, i64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5909 try testArgs(@Vector(3, u64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5910 try testArgs(@Vector(3, i128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5911 try testArgs(@Vector(3, u128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5912 try testArgs(@Vector(3, i256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5913 try testArgs(@Vector(3, u256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5914 try testArgs(@Vector(3, i512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5915 try testArgs(@Vector(3, u512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5916 try testArgs(@Vector(3, i1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5917 try testArgs(@Vector(3, u1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
5918
5919 try testArgs(@Vector(3, i8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5920 try testArgs(@Vector(3, u8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5921 try testArgs(@Vector(3, i16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5922 try testArgs(@Vector(3, u16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5923 try testArgs(@Vector(3, i32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5924 try testArgs(@Vector(3, u32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5925 try testArgs(@Vector(3, i64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5926 try testArgs(@Vector(3, u64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5927 try testArgs(@Vector(3, i128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5928 try testArgs(@Vector(3, u128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5929 try testArgs(@Vector(3, i256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5930 try testArgs(@Vector(3, u256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5931 try testArgs(@Vector(3, i512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5932 try testArgs(@Vector(3, u512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5933 try testArgs(@Vector(3, i1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5934 try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
5935 try testArgs(@Vector(3, i8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5936 try testArgs(@Vector(3, u8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5937 try testArgs(@Vector(3, i16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5938 try testArgs(@Vector(3, u16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5939 try testArgs(@Vector(3, i32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5940 try testArgs(@Vector(3, u32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5941 try testArgs(@Vector(3, i64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5942 try testArgs(@Vector(3, u64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5943 try testArgs(@Vector(3, i128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5944 try testArgs(@Vector(3, u128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5945 try testArgs(@Vector(3, i256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5946 try testArgs(@Vector(3, u256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5947 try testArgs(@Vector(3, i512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5948 try testArgs(@Vector(3, u512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5949 try testArgs(@Vector(3, i1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5950 try testArgs(@Vector(3, u1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
5951
5952 try testArgs(@Vector(3, i8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5953 try testArgs(@Vector(3, u8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5954 try testArgs(@Vector(3, i16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5955 try testArgs(@Vector(3, u16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5956 try testArgs(@Vector(3, i32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5957 try testArgs(@Vector(3, u32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5958 try testArgs(@Vector(3, i64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5959 try testArgs(@Vector(3, u64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5960 try testArgs(@Vector(3, i128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5961 try testArgs(@Vector(3, u128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5962 try testArgs(@Vector(3, i256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5963 try testArgs(@Vector(3, u256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5964 try testArgs(@Vector(3, i512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5965 try testArgs(@Vector(3, u512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5966 try testArgs(@Vector(3, i1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5967 try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
5968 try testArgs(@Vector(3, i8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5969 try testArgs(@Vector(3, u8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5970 try testArgs(@Vector(3, i16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5971 try testArgs(@Vector(3, u16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5972 try testArgs(@Vector(3, i32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5973 try testArgs(@Vector(3, u32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5974 try testArgs(@Vector(3, i64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5975 try testArgs(@Vector(3, u64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5976 try testArgs(@Vector(3, i128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5977 try testArgs(@Vector(3, u128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5978 try testArgs(@Vector(3, i256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5979 try testArgs(@Vector(3, u256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5980 try testArgs(@Vector(3, i512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5981 try testArgs(@Vector(3, u512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5982 try testArgs(@Vector(3, i1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5983 try testArgs(@Vector(3, u1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
5984
5985 try testArgs(@Vector(3, i8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5986 try testArgs(@Vector(3, u8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5987 try testArgs(@Vector(3, i16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5988 try testArgs(@Vector(3, u16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5989 try testArgs(@Vector(3, i32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5990 try testArgs(@Vector(3, u32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5991 try testArgs(@Vector(3, i64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5992 try testArgs(@Vector(3, u64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5993 try testArgs(@Vector(3, i128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5994 try testArgs(@Vector(3, u128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5995 try testArgs(@Vector(3, i256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5996 try testArgs(@Vector(3, u256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5997 try testArgs(@Vector(3, i512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5998 try testArgs(@Vector(3, u512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
5999 try testArgs(@Vector(3, i1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6000 try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
6001 try testArgs(@Vector(3, i8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6002 try testArgs(@Vector(3, u8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6003 try testArgs(@Vector(3, i16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6004 try testArgs(@Vector(3, u16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6005 try testArgs(@Vector(3, i32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6006 try testArgs(@Vector(3, u32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6007 try testArgs(@Vector(3, i64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6008 try testArgs(@Vector(3, u64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6009 try testArgs(@Vector(3, i128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6010 try testArgs(@Vector(3, u128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6011 try testArgs(@Vector(3, i256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6012 try testArgs(@Vector(3, u256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6013 try testArgs(@Vector(3, i512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6014 try testArgs(@Vector(3, u512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6015 try testArgs(@Vector(3, i1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6016 try testArgs(@Vector(3, u1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
6017
6018 try testArgs(@Vector(3, i8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6019 try testArgs(@Vector(3, u8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6020 try testArgs(@Vector(3, i16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6021 try testArgs(@Vector(3, u16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6022 try testArgs(@Vector(3, i32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6023 try testArgs(@Vector(3, u32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6024 try testArgs(@Vector(3, i64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6025 try testArgs(@Vector(3, u64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6026 try testArgs(@Vector(3, i128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6027 try testArgs(@Vector(3, u128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6028 try testArgs(@Vector(3, i256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6029 try testArgs(@Vector(3, u256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6030 try testArgs(@Vector(3, i512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6031 try testArgs(@Vector(3, u512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6032 try testArgs(@Vector(3, i1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6033 try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
6034 try testArgs(@Vector(3, i8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6035 try testArgs(@Vector(3, u8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6036 try testArgs(@Vector(3, i16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6037 try testArgs(@Vector(3, u16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6038 try testArgs(@Vector(3, i32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6039 try testArgs(@Vector(3, u32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6040 try testArgs(@Vector(3, i64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6041 try testArgs(@Vector(3, u64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6042 try testArgs(@Vector(3, i128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6043 try testArgs(@Vector(3, u128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6044 try testArgs(@Vector(3, i256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6045 try testArgs(@Vector(3, u256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6046 try testArgs(@Vector(3, i512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6047 try testArgs(@Vector(3, u512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6048 try testArgs(@Vector(3, i1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6049 try testArgs(@Vector(3, u1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
6050
6051 try testArgs(@Vector(3, i8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6052 try testArgs(@Vector(3, u8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6053 try testArgs(@Vector(3, i16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6054 try testArgs(@Vector(3, u16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6055 try testArgs(@Vector(3, i32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6056 try testArgs(@Vector(3, u32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6057 try testArgs(@Vector(3, i64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6058 try testArgs(@Vector(3, u64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6059 try testArgs(@Vector(3, i128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6060 try testArgs(@Vector(3, u128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6061 try testArgs(@Vector(3, i256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6062 try testArgs(@Vector(3, u256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6063 try testArgs(@Vector(3, i512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6064 try testArgs(@Vector(3, u512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6065 try testArgs(@Vector(3, i1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6066 try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
6067 try testArgs(@Vector(3, i8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6068 try testArgs(@Vector(3, u8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6069 try testArgs(@Vector(3, i16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6070 try testArgs(@Vector(3, u16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6071 try testArgs(@Vector(3, i32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6072 try testArgs(@Vector(3, u32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6073 try testArgs(@Vector(3, i64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6074 try testArgs(@Vector(3, u64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6075 try testArgs(@Vector(3, i128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6076 try testArgs(@Vector(3, u128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6077 try testArgs(@Vector(3, i256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6078 try testArgs(@Vector(3, u256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6079 try testArgs(@Vector(3, i512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6080 try testArgs(@Vector(3, u512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6081 try testArgs(@Vector(3, i1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6082 try testArgs(@Vector(3, u1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
6083
6084 try testArgs(@Vector(3, i8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6085 try testArgs(@Vector(3, u8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6086 try testArgs(@Vector(3, i16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6087 try testArgs(@Vector(3, u16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6088 try testArgs(@Vector(3, i32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6089 try testArgs(@Vector(3, u32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6090 try testArgs(@Vector(3, i64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6091 try testArgs(@Vector(3, u64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6092 try testArgs(@Vector(3, i128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6093 try testArgs(@Vector(3, u128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6094 try testArgs(@Vector(3, i256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6095 try testArgs(@Vector(3, u256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6096 try testArgs(@Vector(3, i512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6097 try testArgs(@Vector(3, u512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6098 try testArgs(@Vector(3, i1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6099 try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
6100 try testArgs(@Vector(3, i8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6101 try testArgs(@Vector(3, u8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6102 try testArgs(@Vector(3, i16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6103 try testArgs(@Vector(3, u16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6104 try testArgs(@Vector(3, i32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6105 try testArgs(@Vector(3, u32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6106 try testArgs(@Vector(3, i64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6107 try testArgs(@Vector(3, u64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6108 try testArgs(@Vector(3, i128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6109 try testArgs(@Vector(3, u128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6110 try testArgs(@Vector(3, i256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6111 try testArgs(@Vector(3, u256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6112 try testArgs(@Vector(3, i512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6113 try testArgs(@Vector(3, u512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6114 try testArgs(@Vector(3, i1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6115 try testArgs(@Vector(3, u1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
6116
6117 try testArgs(@Vector(3, i8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6118 try testArgs(@Vector(3, u8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6119 try testArgs(@Vector(3, i16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6120 try testArgs(@Vector(3, u16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6121 try testArgs(@Vector(3, i32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6122 try testArgs(@Vector(3, u32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6123 try testArgs(@Vector(3, i64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6124 try testArgs(@Vector(3, u64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6125 try testArgs(@Vector(3, i128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6126 try testArgs(@Vector(3, u128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6127 try testArgs(@Vector(3, i256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6128 try testArgs(@Vector(3, u256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6129 try testArgs(@Vector(3, i512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6130 try testArgs(@Vector(3, u512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6131 try testArgs(@Vector(3, i1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6132 try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
6133 try testArgs(@Vector(3, i8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6134 try testArgs(@Vector(3, u8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6135 try testArgs(@Vector(3, i16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6136 try testArgs(@Vector(3, u16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6137 try testArgs(@Vector(3, i32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6138 try testArgs(@Vector(3, u32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6139 try testArgs(@Vector(3, i64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6140 try testArgs(@Vector(3, u64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6141 try testArgs(@Vector(3, i128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6142 try testArgs(@Vector(3, u128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6143 try testArgs(@Vector(3, i256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6144 try testArgs(@Vector(3, u256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6145 try testArgs(@Vector(3, i512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6146 try testArgs(@Vector(3, u512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6147 try testArgs(@Vector(3, i1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6148 try testArgs(@Vector(3, u1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
6149
6150 try testArgs(@Vector(3, i8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6151 try testArgs(@Vector(3, u8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6152 try testArgs(@Vector(3, i16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6153 try testArgs(@Vector(3, u16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6154 try testArgs(@Vector(3, i32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6155 try testArgs(@Vector(3, u32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6156 try testArgs(@Vector(3, i64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6157 try testArgs(@Vector(3, u64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6158 try testArgs(@Vector(3, i128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6159 try testArgs(@Vector(3, u128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6160 try testArgs(@Vector(3, i256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6161 try testArgs(@Vector(3, u256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6162 try testArgs(@Vector(3, i512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6163 try testArgs(@Vector(3, u512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6164 try testArgs(@Vector(3, i1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6165 try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
6166 try testArgs(@Vector(3, i8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6167 try testArgs(@Vector(3, u8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6168 try testArgs(@Vector(3, i16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6169 try testArgs(@Vector(3, u16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6170 try testArgs(@Vector(3, i32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6171 try testArgs(@Vector(3, u32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6172 try testArgs(@Vector(3, i64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6173 try testArgs(@Vector(3, u64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6174 try testArgs(@Vector(3, i128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6175 try testArgs(@Vector(3, u128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6176 try testArgs(@Vector(3, i256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6177 try testArgs(@Vector(3, u256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6178 try testArgs(@Vector(3, i512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6179 try testArgs(@Vector(3, u512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6180 try testArgs(@Vector(3, i1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6181 try testArgs(@Vector(3, u1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
6182
6183 try testArgs(@Vector(3, i8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6184 try testArgs(@Vector(3, u8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6185 try testArgs(@Vector(3, i16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6186 try testArgs(@Vector(3, u16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6187 try testArgs(@Vector(3, i32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6188 try testArgs(@Vector(3, u32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6189 try testArgs(@Vector(3, i64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6190 try testArgs(@Vector(3, u64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6191 try testArgs(@Vector(3, i128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6192 try testArgs(@Vector(3, u128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6193 try testArgs(@Vector(3, i256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6194 try testArgs(@Vector(3, u256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6195 try testArgs(@Vector(3, i512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6196 try testArgs(@Vector(3, u512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6197 try testArgs(@Vector(3, i1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6198 try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
6199 try testArgs(@Vector(3, i8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6200 try testArgs(@Vector(3, u8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6201 try testArgs(@Vector(3, i16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6202 try testArgs(@Vector(3, u16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6203 try testArgs(@Vector(3, i32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6204 try testArgs(@Vector(3, u32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6205 try testArgs(@Vector(3, i64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6206 try testArgs(@Vector(3, u64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6207 try testArgs(@Vector(3, i128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6208 try testArgs(@Vector(3, u128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6209 try testArgs(@Vector(3, i256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6210 try testArgs(@Vector(3, u256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6211 try testArgs(@Vector(3, i512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6212 try testArgs(@Vector(3, u512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6213 try testArgs(@Vector(3, i1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6214 try testArgs(@Vector(3, u1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
6215
6216 try testArgs(@Vector(3, i8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6217 try testArgs(@Vector(3, u8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6218 try testArgs(@Vector(3, i16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6219 try testArgs(@Vector(3, u16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6220 try testArgs(@Vector(3, i32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6221 try testArgs(@Vector(3, u32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6222 try testArgs(@Vector(3, i64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6223 try testArgs(@Vector(3, u64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6224 try testArgs(@Vector(3, i128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6225 try testArgs(@Vector(3, u128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6226 try testArgs(@Vector(3, i256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6227 try testArgs(@Vector(3, u256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6228 try testArgs(@Vector(3, i512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6229 try testArgs(@Vector(3, u512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6230 try testArgs(@Vector(3, i1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6231 try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
6232 try testArgs(@Vector(3, i8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6233 try testArgs(@Vector(3, u8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6234 try testArgs(@Vector(3, i16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6235 try testArgs(@Vector(3, u16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6236 try testArgs(@Vector(3, i32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6237 try testArgs(@Vector(3, u32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6238 try testArgs(@Vector(3, i64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6239 try testArgs(@Vector(3, u64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6240 try testArgs(@Vector(3, i128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6241 try testArgs(@Vector(3, u128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6242 try testArgs(@Vector(3, i256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6243 try testArgs(@Vector(3, u256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6244 try testArgs(@Vector(3, i512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6245 try testArgs(@Vector(3, u512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6246 try testArgs(@Vector(3, i1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6247 try testArgs(@Vector(3, u1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
6248
6249 try testArgs(@Vector(3, i8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6250 try testArgs(@Vector(3, u8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6251 try testArgs(@Vector(3, i16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6252 try testArgs(@Vector(3, u16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6253 try testArgs(@Vector(3, i32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6254 try testArgs(@Vector(3, u32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6255 try testArgs(@Vector(3, i64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6256 try testArgs(@Vector(3, u64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6257 try testArgs(@Vector(3, i128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6258 try testArgs(@Vector(3, u128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6259 try testArgs(@Vector(3, i256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6260 try testArgs(@Vector(3, u256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6261 try testArgs(@Vector(3, i512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6262 try testArgs(@Vector(3, u512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6263 try testArgs(@Vector(3, i1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6264 try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
6265 try testArgs(@Vector(3, i8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6266 try testArgs(@Vector(3, u8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6267 try testArgs(@Vector(3, i16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6268 try testArgs(@Vector(3, u16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6269 try testArgs(@Vector(3, i32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6270 try testArgs(@Vector(3, u32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6271 try testArgs(@Vector(3, i64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6272 try testArgs(@Vector(3, u64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6273 try testArgs(@Vector(3, i128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6274 try testArgs(@Vector(3, u128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6275 try testArgs(@Vector(3, i256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6276 try testArgs(@Vector(3, u256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6277 try testArgs(@Vector(3, i512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6278 try testArgs(@Vector(3, u512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6279 try testArgs(@Vector(3, i1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6280 try testArgs(@Vector(3, u1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
6281
6282 try testArgs(@Vector(3, i8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6283 try testArgs(@Vector(3, u8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6284 try testArgs(@Vector(3, i16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6285 try testArgs(@Vector(3, u16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6286 try testArgs(@Vector(3, i32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6287 try testArgs(@Vector(3, u32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6288 try testArgs(@Vector(3, i64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6289 try testArgs(@Vector(3, u64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6290 try testArgs(@Vector(3, i128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6291 try testArgs(@Vector(3, u128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6292 try testArgs(@Vector(3, i256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6293 try testArgs(@Vector(3, u256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6294 try testArgs(@Vector(3, i512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6295 try testArgs(@Vector(3, u512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6296 try testArgs(@Vector(3, i1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6297 try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
6298 try testArgs(@Vector(3, i8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6299 try testArgs(@Vector(3, u8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6300 try testArgs(@Vector(3, i16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6301 try testArgs(@Vector(3, u16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6302 try testArgs(@Vector(3, i32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6303 try testArgs(@Vector(3, u32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6304 try testArgs(@Vector(3, i64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6305 try testArgs(@Vector(3, u64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6306 try testArgs(@Vector(3, i128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6307 try testArgs(@Vector(3, u128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6308 try testArgs(@Vector(3, i256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6309 try testArgs(@Vector(3, u256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6310 try testArgs(@Vector(3, i512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6311 try testArgs(@Vector(3, u512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6312 try testArgs(@Vector(3, i1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6313 try testArgs(@Vector(3, u1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
6314
6315 try testArgs(@Vector(3, i8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6316 try testArgs(@Vector(3, u8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6317 try testArgs(@Vector(3, i16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6318 try testArgs(@Vector(3, u16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6319 try testArgs(@Vector(3, i32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6320 try testArgs(@Vector(3, u32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6321 try testArgs(@Vector(3, i64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6322 try testArgs(@Vector(3, u64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6323 try testArgs(@Vector(3, i128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6324 try testArgs(@Vector(3, u128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6325 try testArgs(@Vector(3, i256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6326 try testArgs(@Vector(3, u256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6327 try testArgs(@Vector(3, i512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6328 try testArgs(@Vector(3, u512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6329 try testArgs(@Vector(3, i1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6330 try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
6331 try testArgs(@Vector(3, i8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6332 try testArgs(@Vector(3, u8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6333 try testArgs(@Vector(3, i16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6334 try testArgs(@Vector(3, u16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6335 try testArgs(@Vector(3, i32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6336 try testArgs(@Vector(3, u32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6337 try testArgs(@Vector(3, i64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6338 try testArgs(@Vector(3, u64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6339 try testArgs(@Vector(3, i128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6340 try testArgs(@Vector(3, u128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6341 try testArgs(@Vector(3, i256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6342 try testArgs(@Vector(3, u256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6343 try testArgs(@Vector(3, i512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6344 try testArgs(@Vector(3, u512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6345 try testArgs(@Vector(3, i1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6346 try testArgs(@Vector(3, u1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
6347
6348 try testArgs(@Vector(3, i8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6349 try testArgs(@Vector(3, u8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6350 try testArgs(@Vector(3, i16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6351 try testArgs(@Vector(3, u16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6352 try testArgs(@Vector(3, i32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6353 try testArgs(@Vector(3, u32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6354 try testArgs(@Vector(3, i64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6355 try testArgs(@Vector(3, u64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6356 try testArgs(@Vector(3, i128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6357 try testArgs(@Vector(3, u128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6358 try testArgs(@Vector(3, i256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6359 try testArgs(@Vector(3, u256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6360 try testArgs(@Vector(3, i512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6361 try testArgs(@Vector(3, u512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6362 try testArgs(@Vector(3, i1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6363 try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
6364 try testArgs(@Vector(3, i8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6365 try testArgs(@Vector(3, u8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6366 try testArgs(@Vector(3, i16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6367 try testArgs(@Vector(3, u16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6368 try testArgs(@Vector(3, i32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6369 try testArgs(@Vector(3, u32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6370 try testArgs(@Vector(3, i64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6371 try testArgs(@Vector(3, u64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6372 try testArgs(@Vector(3, i128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6373 try testArgs(@Vector(3, u128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6374 try testArgs(@Vector(3, i256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6375 try testArgs(@Vector(3, u256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6376 try testArgs(@Vector(3, i512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6377 try testArgs(@Vector(3, u512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6378 try testArgs(@Vector(3, i1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6379 try testArgs(@Vector(3, u1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
6380
6381 try testArgs(@Vector(3, i8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6382 try testArgs(@Vector(3, u8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6383 try testArgs(@Vector(3, i16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6384 try testArgs(@Vector(3, u16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6385 try testArgs(@Vector(3, i32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6386 try testArgs(@Vector(3, u32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6387 try testArgs(@Vector(3, i64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6388 try testArgs(@Vector(3, u64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6389 try testArgs(@Vector(3, i128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6390 try testArgs(@Vector(3, u128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6391 try testArgs(@Vector(3, i256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6392 try testArgs(@Vector(3, u256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6393 try testArgs(@Vector(3, i512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6394 try testArgs(@Vector(3, u512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6395 try testArgs(@Vector(3, i1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6396 try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
6397 try testArgs(@Vector(3, i8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6398 try testArgs(@Vector(3, u8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6399 try testArgs(@Vector(3, i16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6400 try testArgs(@Vector(3, u16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6401 try testArgs(@Vector(3, i32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6402 try testArgs(@Vector(3, u32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6403 try testArgs(@Vector(3, i64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6404 try testArgs(@Vector(3, u64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6405 try testArgs(@Vector(3, i128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6406 try testArgs(@Vector(3, u128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6407 try testArgs(@Vector(3, i256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6408 try testArgs(@Vector(3, u256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6409 try testArgs(@Vector(3, i512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6410 try testArgs(@Vector(3, u512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6411 try testArgs(@Vector(3, i1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6412 try testArgs(@Vector(3, u1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
6413
6414 try testArgs(@Vector(3, i8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6415 try testArgs(@Vector(3, u8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6416 try testArgs(@Vector(3, i16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6417 try testArgs(@Vector(3, u16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6418 try testArgs(@Vector(3, i32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6419 try testArgs(@Vector(3, u32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6420 try testArgs(@Vector(3, i64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6421 try testArgs(@Vector(3, u64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6422 try testArgs(@Vector(3, i128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6423 try testArgs(@Vector(3, u128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6424 try testArgs(@Vector(3, i256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6425 try testArgs(@Vector(3, u256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6426 try testArgs(@Vector(3, i512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6427 try testArgs(@Vector(3, u512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6428 try testArgs(@Vector(3, i1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6429 try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
6430 try testArgs(@Vector(3, i8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6431 try testArgs(@Vector(3, u8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6432 try testArgs(@Vector(3, i16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6433 try testArgs(@Vector(3, u16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6434 try testArgs(@Vector(3, i32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6435 try testArgs(@Vector(3, u32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6436 try testArgs(@Vector(3, i64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6437 try testArgs(@Vector(3, u64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6438 try testArgs(@Vector(3, i128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6439 try testArgs(@Vector(3, u128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6440 try testArgs(@Vector(3, i256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6441 try testArgs(@Vector(3, u256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6442 try testArgs(@Vector(3, i512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6443 try testArgs(@Vector(3, u512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6444 try testArgs(@Vector(3, i1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6445 try testArgs(@Vector(3, u1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
6446
6447 try testArgs(@Vector(3, i8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6448 try testArgs(@Vector(3, u8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6449 try testArgs(@Vector(3, i16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6450 try testArgs(@Vector(3, u16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6451 try testArgs(@Vector(3, i32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6452 try testArgs(@Vector(3, u32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6453 try testArgs(@Vector(3, i64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6454 try testArgs(@Vector(3, u64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6455 try testArgs(@Vector(3, i128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6456 try testArgs(@Vector(3, u128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6457 try testArgs(@Vector(3, i256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6458 try testArgs(@Vector(3, u256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6459 try testArgs(@Vector(3, i512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6460 try testArgs(@Vector(3, u512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6461 try testArgs(@Vector(3, i1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6462 try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
6463 try testArgs(@Vector(3, i8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6464 try testArgs(@Vector(3, u8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6465 try testArgs(@Vector(3, i16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6466 try testArgs(@Vector(3, u16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6467 try testArgs(@Vector(3, i32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6468 try testArgs(@Vector(3, u32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6469 try testArgs(@Vector(3, i64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6470 try testArgs(@Vector(3, u64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6471 try testArgs(@Vector(3, i128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6472 try testArgs(@Vector(3, u128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6473 try testArgs(@Vector(3, i256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6474 try testArgs(@Vector(3, u256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6475 try testArgs(@Vector(3, i512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6476 try testArgs(@Vector(3, u512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6477 try testArgs(@Vector(3, i1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6478 try testArgs(@Vector(3, u1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
6479
6480 try testArgs(@Vector(3, i8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6481 try testArgs(@Vector(3, u8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6482 try testArgs(@Vector(3, i16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6483 try testArgs(@Vector(3, u16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6484 try testArgs(@Vector(3, i32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6485 try testArgs(@Vector(3, u32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6486 try testArgs(@Vector(3, i64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6487 try testArgs(@Vector(3, u64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6488 try testArgs(@Vector(3, i128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6489 try testArgs(@Vector(3, u128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6490 try testArgs(@Vector(3, i256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6491 try testArgs(@Vector(3, u256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6492 try testArgs(@Vector(3, i512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6493 try testArgs(@Vector(3, u512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6494 try testArgs(@Vector(3, i1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6495 try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
6496 try testArgs(@Vector(3, i8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6497 try testArgs(@Vector(3, u8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6498 try testArgs(@Vector(3, i16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6499 try testArgs(@Vector(3, u16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6500 try testArgs(@Vector(3, i32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6501 try testArgs(@Vector(3, u32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6502 try testArgs(@Vector(3, i64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6503 try testArgs(@Vector(3, u64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6504 try testArgs(@Vector(3, i128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6505 try testArgs(@Vector(3, u128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6506 try testArgs(@Vector(3, i256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6507 try testArgs(@Vector(3, u256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6508 try testArgs(@Vector(3, i512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6509 try testArgs(@Vector(3, u512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6510 try testArgs(@Vector(3, i1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6511 try testArgs(@Vector(3, u1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
6512
6513 try testArgs(@Vector(3, i8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6514 try testArgs(@Vector(3, u8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6515 try testArgs(@Vector(3, i16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6516 try testArgs(@Vector(3, u16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6517 try testArgs(@Vector(3, i32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6518 try testArgs(@Vector(3, u32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6519 try testArgs(@Vector(3, i64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6520 try testArgs(@Vector(3, u64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6521 try testArgs(@Vector(3, i128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6522 try testArgs(@Vector(3, u128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6523 try testArgs(@Vector(3, i256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6524 try testArgs(@Vector(3, u256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6525 try testArgs(@Vector(3, i512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6526 try testArgs(@Vector(3, u512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6527 try testArgs(@Vector(3, i1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6528 try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
6529 try testArgs(@Vector(3, i8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6530 try testArgs(@Vector(3, u8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6531 try testArgs(@Vector(3, i16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6532 try testArgs(@Vector(3, u16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6533 try testArgs(@Vector(3, i32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6534 try testArgs(@Vector(3, u32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6535 try testArgs(@Vector(3, i64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6536 try testArgs(@Vector(3, u64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6537 try testArgs(@Vector(3, i128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6538 try testArgs(@Vector(3, u128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6539 try testArgs(@Vector(3, i256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6540 try testArgs(@Vector(3, u256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6541 try testArgs(@Vector(3, i512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6542 try testArgs(@Vector(3, u512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6543 try testArgs(@Vector(3, i1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6544 try testArgs(@Vector(3, u1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
6545
6546 try testArgs(@Vector(3, i8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6547 try testArgs(@Vector(3, u8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6548 try testArgs(@Vector(3, i16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6549 try testArgs(@Vector(3, u16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6550 try testArgs(@Vector(3, i32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6551 try testArgs(@Vector(3, u32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6552 try testArgs(@Vector(3, i64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6553 try testArgs(@Vector(3, u64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6554 try testArgs(@Vector(3, i128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6555 try testArgs(@Vector(3, u128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6556 try testArgs(@Vector(3, i256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6557 try testArgs(@Vector(3, u256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6558 try testArgs(@Vector(3, i512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6559 try testArgs(@Vector(3, u512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6560 try testArgs(@Vector(3, i1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6561 try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
6562 try testArgs(@Vector(3, i8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6563 try testArgs(@Vector(3, u8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6564 try testArgs(@Vector(3, i16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6565 try testArgs(@Vector(3, u16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6566 try testArgs(@Vector(3, i32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6567 try testArgs(@Vector(3, u32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6568 try testArgs(@Vector(3, i64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6569 try testArgs(@Vector(3, u64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6570 try testArgs(@Vector(3, i128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6571 try testArgs(@Vector(3, u128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6572 try testArgs(@Vector(3, i256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6573 try testArgs(@Vector(3, u256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6574 try testArgs(@Vector(3, i512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6575 try testArgs(@Vector(3, u512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6576 try testArgs(@Vector(3, i1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6577 try testArgs(@Vector(3, u1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
6578
6579 try testArgs(@Vector(3, i8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6580 try testArgs(@Vector(3, u8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6581 try testArgs(@Vector(3, i16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6582 try testArgs(@Vector(3, u16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6583 try testArgs(@Vector(3, i32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6584 try testArgs(@Vector(3, u32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6585 try testArgs(@Vector(3, i64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6586 try testArgs(@Vector(3, u64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6587 try testArgs(@Vector(3, i128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6588 try testArgs(@Vector(3, u128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6589 try testArgs(@Vector(3, i256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6590 try testArgs(@Vector(3, u256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6591 try testArgs(@Vector(3, i512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6592 try testArgs(@Vector(3, u512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6593 try testArgs(@Vector(3, i1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6594 try testArgs(@Vector(3, u1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
6595 try testArgs(@Vector(3, i8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6596 try testArgs(@Vector(3, u8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6597 try testArgs(@Vector(3, i16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6598 try testArgs(@Vector(3, u16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6599 try testArgs(@Vector(3, i32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6600 try testArgs(@Vector(3, u32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6601 try testArgs(@Vector(3, i64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6602 try testArgs(@Vector(3, u64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6603 try testArgs(@Vector(3, i128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6604 try testArgs(@Vector(3, u128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6605 try testArgs(@Vector(3, i256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6606 try testArgs(@Vector(3, u256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6607 try testArgs(@Vector(3, i512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6608 try testArgs(@Vector(3, u512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6609 try testArgs(@Vector(3, i1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6610 try testArgs(@Vector(3, u1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
6611 }
6612 fn testFloatVectors() !void {
6613 @setEvalBranchQuota(6_700);
6614
6615 try testArgs(@Vector(1, f16), @Vector(1, f16), .{
6616 1e0,
6617 });
6618 try testArgs(@Vector(2, f16), @Vector(2, f16), .{
6619 -inf(f16), -1e-2,
6620 });
6621 try testArgs(@Vector(4, f16), @Vector(4, f16), .{
6622 -1e2, 1e-1, fmax(f16), 1e-2,
6623 });
6624 try testArgs(@Vector(8, f16), @Vector(8, f16), .{
6625 -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
6626 });
6627 try testArgs(@Vector(16, f16), @Vector(16, f16), .{
6628 -fmax(f16), -1e0, 1e-4, 1e2, -fmin(f16), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f16), -tmin(f16), -1e-4, inf(f16), 1e-3, -1e-1,
6629 });
6630 try testArgs(@Vector(32, f16), @Vector(32, f16), .{
6631 -1e3, -tmin(f16), inf(f16), -1e4, -0.0, fmax(f16), 1e2, 1e4, -nan(f16), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f16), -1e0,
6632 1e3, -1e-3, -fmin(f16), -inf(f16), 1e-3, tmin(f16), fmin(f16), 1e1, 1e-4, -fmax(f16), -1e2, 1e-2, -1e-2, 1e3, inf(f16), -fmin(f16),
6633 });
6634
6635 try testArgs(@Vector(1, f32), @Vector(1, f16), .{
6636 1e0,
6637 });
6638 try testArgs(@Vector(2, f32), @Vector(2, f16), .{
6639 -inf(f16), -1e-2,
6640 });
6641 try testArgs(@Vector(4, f32), @Vector(4, f16), .{
6642 -1e2, 1e-1, fmax(f16), 1e-2,
6643 });
6644 try testArgs(@Vector(8, f32), @Vector(8, f16), .{
6645 -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
6646 });
6647 try testArgs(@Vector(16, f32), @Vector(16, f16), .{
6648 -fmax(f16), -1e0, 1e-4, 1e2, -fmin(f16), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f16), -tmin(f16), -1e-4, inf(f16), 1e-3, -1e-1,
6649 });
6650 try testArgs(@Vector(32, f32), @Vector(32, f16), .{
6651 -1e3, -tmin(f16), inf(f16), -1e4, -0.0, fmax(f16), 1e2, 1e4, -nan(f16), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f16), -1e0,
6652 1e3, -1e-3, -fmin(f16), -inf(f16), 1e-3, tmin(f16), fmin(f16), 1e1, 1e-4, -fmax(f16), -1e2, 1e-2, -1e-2, 1e3, inf(f16), -fmin(f16),
6653 });
6654
6655 try testArgs(@Vector(1, f64), @Vector(1, f16), .{
6656 1e0,
6657 });
6658 try testArgs(@Vector(2, f64), @Vector(2, f16), .{
6659 -inf(f16), -1e-2,
6660 });
6661 try testArgs(@Vector(4, f64), @Vector(4, f16), .{
6662 -1e2, 1e-1, fmax(f16), 1e-2,
6663 });
6664 try testArgs(@Vector(8, f64), @Vector(8, f16), .{
6665 -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
6666 });
6667 try testArgs(@Vector(16, f64), @Vector(16, f16), .{
6668 -fmax(f16), -1e0, 1e-4, 1e2, -fmin(f16), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f16), -tmin(f16), -1e-4, inf(f16), 1e-3, -1e-1,
6669 });
6670 try testArgs(@Vector(32, f64), @Vector(32, f16), .{
6671 -1e3, -tmin(f16), inf(f16), -1e4, -0.0, fmax(f16), 1e2, 1e4, -nan(f16), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f16), -1e0,
6672 1e3, -1e-3, -fmin(f16), -inf(f16), 1e-3, tmin(f16), fmin(f16), 1e1, 1e-4, -fmax(f16), -1e2, 1e-2, -1e-2, 1e3, inf(f16), -fmin(f16),
6673 });
6674
6675 try testArgs(@Vector(1, f80), @Vector(1, f16), .{
6676 1e0,
6677 });
6678 try testArgs(@Vector(2, f80), @Vector(2, f16), .{
6679 -inf(f16), -1e-2,
6680 });
6681 try testArgs(@Vector(4, f80), @Vector(4, f16), .{
6682 -1e2, 1e-1, fmax(f16), 1e-2,
6683 });
6684 try testArgs(@Vector(8, f80), @Vector(8, f16), .{
6685 -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
6686 });
6687 try testArgs(@Vector(16, f80), @Vector(16, f16), .{
6688 -fmax(f16), -1e0, 1e-4, 1e2, -fmin(f16), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f16), -tmin(f16), -1e-4, inf(f16), 1e-3, -1e-1,
6689 });
6690 try testArgs(@Vector(32, f80), @Vector(32, f16), .{
6691 -1e3, -tmin(f16), inf(f16), -1e4, -0.0, fmax(f16), 1e2, 1e4, -nan(f16), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f16), -1e0,
6692 1e3, -1e-3, -fmin(f16), -inf(f16), 1e-3, tmin(f16), fmin(f16), 1e1, 1e-4, -fmax(f16), -1e2, 1e-2, -1e-2, 1e3, inf(f16), -fmin(f16),
6693 });
6694
6695 try testArgs(@Vector(1, f128), @Vector(1, f16), .{
6696 1e0,
6697 });
6698 try testArgs(@Vector(2, f128), @Vector(2, f16), .{
6699 -inf(f16), -1e-2,
6700 });
6701 try testArgs(@Vector(4, f128), @Vector(4, f16), .{
6702 -1e2, 1e-1, fmax(f16), 1e-2,
6703 });
6704 try testArgs(@Vector(8, f128), @Vector(8, f16), .{
6705 -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
6706 });
6707 try testArgs(@Vector(16, f128), @Vector(16, f16), .{
6708 -fmax(f16), -1e0, 1e-4, 1e2, -fmin(f16), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f16), -tmin(f16), -1e-4, inf(f16), 1e-3, -1e-1,
6709 });
6710 try testArgs(@Vector(32, f128), @Vector(32, f16), .{
6711 -1e3, -tmin(f16), inf(f16), -1e4, -0.0, fmax(f16), 1e2, 1e4, -nan(f16), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f16), -1e0,
6712 1e3, -1e-3, -fmin(f16), -inf(f16), 1e-3, tmin(f16), fmin(f16), 1e1, 1e-4, -fmax(f16), -1e2, 1e-2, -1e-2, 1e3, inf(f16), -fmin(f16),
6713 });
6714
6715 try testArgs(@Vector(1, f16), @Vector(1, f32), .{
6716 1e0,
6717 });
6718 try testArgs(@Vector(2, f16), @Vector(2, f32), .{
6719 -inf(f32), -1e-2,
6720 });
6721 try testArgs(@Vector(4, f16), @Vector(4, f32), .{
6722 -1e2, 1e-1, fmax(f32), 1e-2,
6723 });
6724 try testArgs(@Vector(8, f16), @Vector(8, f32), .{
6725 -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
6726 });
6727 try testArgs(@Vector(16, f16), @Vector(16, f32), .{
6728 -fmax(f32), -1e0, 1e-4, 1e2, -fmin(f32), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f32), -tmin(f32), -1e-4, inf(f32), 1e-3, -1e-1,
6729 });
6730 try testArgs(@Vector(32, f16), @Vector(32, f32), .{
6731 -1e3, -tmin(f32), inf(f32), -1e4, -0.0, fmax(f32), 1e2, 1e4, -nan(f32), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f32), -1e0,
6732 1e3, -1e-3, -fmin(f32), -inf(f32), 1e-3, tmin(f32), fmin(f32), 1e1, 1e-4, -fmax(f32), -1e2, 1e-2, -1e-2, 1e3, inf(f32), -fmin(f32),
6733 });
6734
6735 try testArgs(@Vector(1, f32), @Vector(1, f32), .{
6736 1e0,
6737 });
6738 try testArgs(@Vector(2, f32), @Vector(2, f32), .{
6739 -inf(f32), -1e-2,
6740 });
6741 try testArgs(@Vector(4, f32), @Vector(4, f32), .{
6742 -1e2, 1e-1, fmax(f32), 1e-2,
6743 });
6744 try testArgs(@Vector(8, f32), @Vector(8, f32), .{
6745 -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
6746 });
6747 try testArgs(@Vector(16, f32), @Vector(16, f32), .{
6748 -fmax(f32), -1e0, 1e-4, 1e2, -fmin(f32), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f32), -tmin(f32), -1e-4, inf(f32), 1e-3, -1e-1,
6749 });
6750 try testArgs(@Vector(32, f32), @Vector(32, f32), .{
6751 -1e3, -tmin(f32), inf(f32), -1e4, -0.0, fmax(f32), 1e2, 1e4, -nan(f32), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f32), -1e0,
6752 1e3, -1e-3, -fmin(f32), -inf(f32), 1e-3, tmin(f32), fmin(f32), 1e1, 1e-4, -fmax(f32), -1e2, 1e-2, -1e-2, 1e3, inf(f32), -fmin(f32),
6753 });
6754
6755 try testArgs(@Vector(1, f64), @Vector(1, f32), .{
6756 1e0,
6757 });
6758 try testArgs(@Vector(2, f64), @Vector(2, f32), .{
6759 -inf(f32), -1e-2,
6760 });
6761 try testArgs(@Vector(4, f64), @Vector(4, f32), .{
6762 -1e2, 1e-1, fmax(f32), 1e-2,
6763 });
6764 try testArgs(@Vector(8, f64), @Vector(8, f32), .{
6765 -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
6766 });
6767 try testArgs(@Vector(16, f64), @Vector(16, f32), .{
6768 -fmax(f32), -1e0, 1e-4, 1e2, -fmin(f32), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f32), -tmin(f32), -1e-4, inf(f32), 1e-3, -1e-1,
6769 });
6770 try testArgs(@Vector(32, f64), @Vector(32, f32), .{
6771 -1e3, -tmin(f32), inf(f32), -1e4, -0.0, fmax(f32), 1e2, 1e4, -nan(f32), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f32), -1e0,
6772 1e3, -1e-3, -fmin(f32), -inf(f32), 1e-3, tmin(f32), fmin(f32), 1e1, 1e-4, -fmax(f32), -1e2, 1e-2, -1e-2, 1e3, inf(f32), -fmin(f32),
6773 });
6774
6775 try testArgs(@Vector(1, f80), @Vector(1, f32), .{
6776 1e0,
6777 });
6778 try testArgs(@Vector(2, f80), @Vector(2, f32), .{
6779 -inf(f32), -1e-2,
6780 });
6781 try testArgs(@Vector(4, f80), @Vector(4, f32), .{
6782 -1e2, 1e-1, fmax(f32), 1e-2,
6783 });
6784 try testArgs(@Vector(8, f80), @Vector(8, f32), .{
6785 -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
6786 });
6787 try testArgs(@Vector(16, f80), @Vector(16, f32), .{
6788 -fmax(f32), -1e0, 1e-4, 1e2, -fmin(f32), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f32), -tmin(f32), -1e-4, inf(f32), 1e-3, -1e-1,
6789 });
6790 try testArgs(@Vector(32, f80), @Vector(32, f32), .{
6791 -1e3, -tmin(f32), inf(f32), -1e4, -0.0, fmax(f32), 1e2, 1e4, -nan(f32), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f32), -1e0,
6792 1e3, -1e-3, -fmin(f32), -inf(f32), 1e-3, tmin(f32), fmin(f32), 1e1, 1e-4, -fmax(f32), -1e2, 1e-2, -1e-2, 1e3, inf(f32), -fmin(f32),
6793 });
6794
6795 try testArgs(@Vector(1, f128), @Vector(1, f32), .{
6796 1e0,
6797 });
6798 try testArgs(@Vector(2, f128), @Vector(2, f32), .{
6799 -inf(f32), -1e-2,
6800 });
6801 try testArgs(@Vector(4, f128), @Vector(4, f32), .{
6802 -1e2, 1e-1, fmax(f32), 1e-2,
6803 });
6804 try testArgs(@Vector(8, f128), @Vector(8, f32), .{
6805 -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
6806 });
6807 try testArgs(@Vector(16, f128), @Vector(16, f32), .{
6808 -fmax(f32), -1e0, 1e-4, 1e2, -fmin(f32), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f32), -tmin(f32), -1e-4, inf(f32), 1e-3, -1e-1,
6809 });
6810 try testArgs(@Vector(32, f128), @Vector(32, f32), .{
6811 -1e3, -tmin(f32), inf(f32), -1e4, -0.0, fmax(f32), 1e2, 1e4, -nan(f32), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f32), -1e0,
6812 1e3, -1e-3, -fmin(f32), -inf(f32), 1e-3, tmin(f32), fmin(f32), 1e1, 1e-4, -fmax(f32), -1e2, 1e-2, -1e-2, 1e3, inf(f32), -fmin(f32),
6813 });
6814
6815 try testArgs(@Vector(1, f16), @Vector(1, f64), .{
6816 1e0,
6817 });
6818 try testArgs(@Vector(2, f16), @Vector(2, f64), .{
6819 -inf(f64), -1e-2,
6820 });
6821 try testArgs(@Vector(4, f16), @Vector(4, f64), .{
6822 -1e2, 1e-1, fmax(f64), 1e-2,
6823 });
6824 try testArgs(@Vector(8, f16), @Vector(8, f64), .{
6825 -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
6826 });
6827 try testArgs(@Vector(16, f16), @Vector(16, f64), .{
6828 -fmax(f64), -1e0, 1e-4, 1e2, -fmin(f64), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f64), -tmin(f64), -1e-4, inf(f64), 1e-3, -1e-1,
6829 });
6830 try testArgs(@Vector(32, f16), @Vector(32, f64), .{
6831 -1e3, -tmin(f64), inf(f64), -1e4, -0.0, fmax(f64), 1e2, 1e4, -nan(f64), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f64), -1e0,
6832 1e3, -1e-3, -fmin(f64), -inf(f64), 1e-3, tmin(f64), fmin(f64), 1e1, 1e-4, -fmax(f64), -1e2, 1e-2, -1e-2, 1e3, inf(f64), -fmin(f64),
6833 });
6834
6835 try testArgs(@Vector(1, f32), @Vector(1, f64), .{
6836 1e0,
6837 });
6838 try testArgs(@Vector(2, f32), @Vector(2, f64), .{
6839 -inf(f64), -1e-2,
6840 });
6841 try testArgs(@Vector(4, f32), @Vector(4, f64), .{
6842 -1e2, 1e-1, fmax(f64), 1e-2,
6843 });
6844 try testArgs(@Vector(8, f32), @Vector(8, f64), .{
6845 -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
6846 });
6847 try testArgs(@Vector(16, f32), @Vector(16, f64), .{
6848 -fmax(f64), -1e0, 1e-4, 1e2, -fmin(f64), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f64), -tmin(f64), -1e-4, inf(f64), 1e-3, -1e-1,
6849 });
6850 try testArgs(@Vector(32, f32), @Vector(32, f64), .{
6851 -1e3, -tmin(f64), inf(f64), -1e4, -0.0, fmax(f64), 1e2, 1e4, -nan(f64), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f64), -1e0,
6852 1e3, -1e-3, -fmin(f64), -inf(f64), 1e-3, tmin(f64), fmin(f64), 1e1, 1e-4, -fmax(f64), -1e2, 1e-2, -1e-2, 1e3, inf(f64), -fmin(f64),
6853 });
6854
6855 try testArgs(@Vector(1, f64), @Vector(1, f64), .{
6856 1e0,
6857 });
6858 try testArgs(@Vector(2, f64), @Vector(2, f64), .{
6859 -inf(f64), -1e-2,
6860 });
6861 try testArgs(@Vector(4, f64), @Vector(4, f64), .{
6862 -1e2, 1e-1, fmax(f64), 1e-2,
6863 });
6864 try testArgs(@Vector(8, f64), @Vector(8, f64), .{
6865 -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
6866 });
6867 try testArgs(@Vector(16, f64), @Vector(16, f64), .{
6868 -fmax(f64), -1e0, 1e-4, 1e2, -fmin(f64), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f64), -tmin(f64), -1e-4, inf(f64), 1e-3, -1e-1,
6869 });
6870 try testArgs(@Vector(32, f64), @Vector(32, f64), .{
6871 -1e3, -tmin(f64), inf(f64), -1e4, -0.0, fmax(f64), 1e2, 1e4, -nan(f64), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f64), -1e0,
6872 1e3, -1e-3, -fmin(f64), -inf(f64), 1e-3, tmin(f64), fmin(f64), 1e1, 1e-4, -fmax(f64), -1e2, 1e-2, -1e-2, 1e3, inf(f64), -fmin(f64),
6873 });
6874
6875 try testArgs(@Vector(1, f80), @Vector(1, f64), .{
6876 1e0,
6877 });
6878 try testArgs(@Vector(2, f80), @Vector(2, f64), .{
6879 -inf(f64), -1e-2,
6880 });
6881 try testArgs(@Vector(4, f80), @Vector(4, f64), .{
6882 -1e2, 1e-1, fmax(f64), 1e-2,
6883 });
6884 try testArgs(@Vector(8, f80), @Vector(8, f64), .{
6885 -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
6886 });
6887 try testArgs(@Vector(16, f80), @Vector(16, f64), .{
6888 -fmax(f64), -1e0, 1e-4, 1e2, -fmin(f64), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f64), -tmin(f64), -1e-4, inf(f64), 1e-3, -1e-1,
6889 });
6890 try testArgs(@Vector(32, f80), @Vector(32, f64), .{
6891 -1e3, -tmin(f64), inf(f64), -1e4, -0.0, fmax(f64), 1e2, 1e4, -nan(f64), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f64), -1e0,
6892 1e3, -1e-3, -fmin(f64), -inf(f64), 1e-3, tmin(f64), fmin(f64), 1e1, 1e-4, -fmax(f64), -1e2, 1e-2, -1e-2, 1e3, inf(f64), -fmin(f64),
6893 });
6894
6895 try testArgs(@Vector(1, f128), @Vector(1, f64), .{
6896 1e0,
6897 });
6898 try testArgs(@Vector(2, f128), @Vector(2, f64), .{
6899 -inf(f64), -1e-2,
6900 });
6901 try testArgs(@Vector(4, f128), @Vector(4, f64), .{
6902 -1e2, 1e-1, fmax(f64), 1e-2,
6903 });
6904 try testArgs(@Vector(8, f128), @Vector(8, f64), .{
6905 -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
6906 });
6907 try testArgs(@Vector(16, f128), @Vector(16, f64), .{
6908 -fmax(f64), -1e0, 1e-4, 1e2, -fmin(f64), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f64), -tmin(f64), -1e-4, inf(f64), 1e-3, -1e-1,
6909 });
6910 try testArgs(@Vector(32, f128), @Vector(32, f64), .{
6911 -1e3, -tmin(f64), inf(f64), -1e4, -0.0, fmax(f64), 1e2, 1e4, -nan(f64), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f64), -1e0,
6912 1e3, -1e-3, -fmin(f64), -inf(f64), 1e-3, tmin(f64), fmin(f64), 1e1, 1e-4, -fmax(f64), -1e2, 1e-2, -1e-2, 1e3, inf(f64), -fmin(f64),
6913 });
6914
6915 try testArgs(@Vector(1, f16), @Vector(1, f80), .{
6916 1e0,
6917 });
6918 try testArgs(@Vector(2, f16), @Vector(2, f80), .{
6919 -inf(f80), -1e-2,
6920 });
6921 try testArgs(@Vector(4, f16), @Vector(4, f80), .{
6922 -1e2, 1e-1, fmax(f80), 1e-2,
6923 });
6924 try testArgs(@Vector(8, f16), @Vector(8, f80), .{
6925 -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
6926 });
6927 try testArgs(@Vector(16, f16), @Vector(16, f80), .{
6928 -fmax(f80), -1e0, 1e-4, 1e2, -fmin(f80), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f80), -tmin(f80), -1e-4, inf(f80), 1e-3, -1e-1,
6929 });
6930 try testArgs(@Vector(32, f16), @Vector(32, f80), .{
6931 -1e3, -tmin(f80), inf(f80), -1e4, -0.0, fmax(f80), 1e2, 1e4, -nan(f80), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f80), -1e0,
6932 1e3, -1e-3, -fmin(f80), -inf(f80), 1e-3, tmin(f80), fmin(f80), 1e1, 1e-4, -fmax(f80), -1e2, 1e-2, -1e-2, 1e3, inf(f80), -fmin(f80),
6933 });
6934
6935 try testArgs(@Vector(1, f32), @Vector(1, f80), .{
6936 1e0,
6937 });
6938 try testArgs(@Vector(2, f32), @Vector(2, f80), .{
6939 -inf(f80), -1e-2,
6940 });
6941 try testArgs(@Vector(4, f32), @Vector(4, f80), .{
6942 -1e2, 1e-1, fmax(f80), 1e-2,
6943 });
6944 try testArgs(@Vector(8, f32), @Vector(8, f80), .{
6945 -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
6946 });
6947 try testArgs(@Vector(16, f32), @Vector(16, f80), .{
6948 -fmax(f80), -1e0, 1e-4, 1e2, -fmin(f80), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f80), -tmin(f80), -1e-4, inf(f80), 1e-3, -1e-1,
6949 });
6950 try testArgs(@Vector(32, f32), @Vector(32, f80), .{
6951 -1e3, -tmin(f80), inf(f80), -1e4, -0.0, fmax(f80), 1e2, 1e4, -nan(f80), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f80), -1e0,
6952 1e3, -1e-3, -fmin(f80), -inf(f80), 1e-3, tmin(f80), fmin(f80), 1e1, 1e-4, -fmax(f80), -1e2, 1e-2, -1e-2, 1e3, inf(f80), -fmin(f80),
6953 });
6954
6955 try testArgs(@Vector(1, f64), @Vector(1, f80), .{
6956 1e0,
6957 });
6958 try testArgs(@Vector(2, f64), @Vector(2, f80), .{
6959 -inf(f80), -1e-2,
6960 });
6961 try testArgs(@Vector(4, f64), @Vector(4, f80), .{
6962 -1e2, 1e-1, fmax(f80), 1e-2,
6963 });
6964 try testArgs(@Vector(8, f64), @Vector(8, f80), .{
6965 -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
6966 });
6967 try testArgs(@Vector(16, f64), @Vector(16, f80), .{
6968 -fmax(f80), -1e0, 1e-4, 1e2, -fmin(f80), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f80), -tmin(f80), -1e-4, inf(f80), 1e-3, -1e-1,
6969 });
6970 try testArgs(@Vector(32, f64), @Vector(32, f80), .{
6971 -1e3, -tmin(f80), inf(f80), -1e4, -0.0, fmax(f80), 1e2, 1e4, -nan(f80), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f80), -1e0,
6972 1e3, -1e-3, -fmin(f80), -inf(f80), 1e-3, tmin(f80), fmin(f80), 1e1, 1e-4, -fmax(f80), -1e2, 1e-2, -1e-2, 1e3, inf(f80), -fmin(f80),
6973 });
6974
6975 try testArgs(@Vector(1, f80), @Vector(1, f80), .{
6976 1e0,
6977 });
6978 try testArgs(@Vector(2, f80), @Vector(2, f80), .{
6979 -inf(f80), -1e-2,
6980 });
6981 try testArgs(@Vector(4, f80), @Vector(4, f80), .{
6982 -1e2, 1e-1, fmax(f80), 1e-2,
6983 });
6984 try testArgs(@Vector(8, f80), @Vector(8, f80), .{
6985 -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
6986 });
6987 try testArgs(@Vector(16, f80), @Vector(16, f80), .{
6988 -fmax(f80), -1e0, 1e-4, 1e2, -fmin(f80), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f80), -tmin(f80), -1e-4, inf(f80), 1e-3, -1e-1,
6989 });
6990 try testArgs(@Vector(32, f80), @Vector(32, f80), .{
6991 -1e3, -tmin(f80), inf(f80), -1e4, -0.0, fmax(f80), 1e2, 1e4, -nan(f80), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f80), -1e0,
6992 1e3, -1e-3, -fmin(f80), -inf(f80), 1e-3, tmin(f80), fmin(f80), 1e1, 1e-4, -fmax(f80), -1e2, 1e-2, -1e-2, 1e3, inf(f80), -fmin(f80),
6993 });
6994
6995 try testArgs(@Vector(1, f128), @Vector(1, f80), .{
6996 1e0,
6997 });
6998 try testArgs(@Vector(2, f128), @Vector(2, f80), .{
6999 -inf(f80), -1e-2,
7000 });
7001 try testArgs(@Vector(4, f128), @Vector(4, f80), .{
7002 -1e2, 1e-1, fmax(f80), 1e-2,
7003 });
7004 try testArgs(@Vector(8, f128), @Vector(8, f80), .{
7005 -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
7006 });
7007 try testArgs(@Vector(16, f128), @Vector(16, f80), .{
7008 -fmax(f80), -1e0, 1e-4, 1e2, -fmin(f80), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f80), -tmin(f80), -1e-4, inf(f80), 1e-3, -1e-1,
7009 });
7010 try testArgs(@Vector(32, f128), @Vector(32, f80), .{
7011 -1e3, -tmin(f80), inf(f80), -1e4, -0.0, fmax(f80), 1e2, 1e4, -nan(f80), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f80), -1e0,
7012 1e3, -1e-3, -fmin(f80), -inf(f80), 1e-3, tmin(f80), fmin(f80), 1e1, 1e-4, -fmax(f80), -1e2, 1e-2, -1e-2, 1e3, inf(f80), -fmin(f80),
7013 });
7014
7015 try testArgs(@Vector(1, f16), @Vector(1, f128), .{
7016 1e0,
7017 });
7018 try testArgs(@Vector(2, f16), @Vector(2, f128), .{
7019 -inf(f128), -1e-2,
7020 });
7021 try testArgs(@Vector(4, f16), @Vector(4, f128), .{
7022 -1e2, 1e-1, fmax(f128), 1e-2,
7023 });
7024 try testArgs(@Vector(8, f16), @Vector(8, f128), .{
7025 -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
7026 });
7027 try testArgs(@Vector(16, f16), @Vector(16, f128), .{
7028 -fmax(f128), -1e0, 1e-4, 1e2, -fmin(f128), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f128), -tmin(f128), -1e-4, inf(f128), 1e-3, -1e-1,
7029 });
7030 try testArgs(@Vector(32, f16), @Vector(32, f128), .{
7031 -1e3, -tmin(f128), inf(f128), -1e4, -0.0, fmax(f128), 1e2, 1e4, -nan(f128), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f128), -1e0,
7032 1e3, -1e-3, -fmin(f128), -inf(f128), 1e-3, tmin(f128), fmin(f128), 1e1, 1e-4, -fmax(f128), -1e2, 1e-2, -1e-2, 1e3, inf(f128), -fmin(f128),
7033 });
7034
7035 try testArgs(@Vector(1, f32), @Vector(1, f128), .{
7036 1e0,
7037 });
7038 try testArgs(@Vector(2, f32), @Vector(2, f128), .{
7039 -inf(f128), -1e-2,
7040 });
7041 try testArgs(@Vector(4, f32), @Vector(4, f128), .{
7042 -1e2, 1e-1, fmax(f128), 1e-2,
7043 });
7044 try testArgs(@Vector(8, f32), @Vector(8, f128), .{
7045 -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
7046 });
7047 try testArgs(@Vector(16, f32), @Vector(16, f128), .{
7048 -fmax(f128), -1e0, 1e-4, 1e2, -fmin(f128), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f128), -tmin(f128), -1e-4, inf(f128), 1e-3, -1e-1,
7049 });
7050 try testArgs(@Vector(32, f32), @Vector(32, f128), .{
7051 -1e3, -tmin(f128), inf(f128), -1e4, -0.0, fmax(f128), 1e2, 1e4, -nan(f128), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f128), -1e0,
7052 1e3, -1e-3, -fmin(f128), -inf(f128), 1e-3, tmin(f128), fmin(f128), 1e1, 1e-4, -fmax(f128), -1e2, 1e-2, -1e-2, 1e3, inf(f128), -fmin(f128),
7053 });
7054
7055 try testArgs(@Vector(1, f64), @Vector(1, f128), .{
7056 1e0,
7057 });
7058 try testArgs(@Vector(2, f64), @Vector(2, f128), .{
7059 -inf(f128), -1e-2,
7060 });
7061 try testArgs(@Vector(4, f64), @Vector(4, f128), .{
7062 -1e2, 1e-1, fmax(f128), 1e-2,
7063 });
7064 try testArgs(@Vector(8, f64), @Vector(8, f128), .{
7065 -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
7066 });
7067 try testArgs(@Vector(16, f64), @Vector(16, f128), .{
7068 -fmax(f128), -1e0, 1e-4, 1e2, -fmin(f128), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f128), -tmin(f128), -1e-4, inf(f128), 1e-3, -1e-1,
7069 });
7070 try testArgs(@Vector(32, f64), @Vector(32, f128), .{
7071 -1e3, -tmin(f128), inf(f128), -1e4, -0.0, fmax(f128), 1e2, 1e4, -nan(f128), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f128), -1e0,
7072 1e3, -1e-3, -fmin(f128), -inf(f128), 1e-3, tmin(f128), fmin(f128), 1e1, 1e-4, -fmax(f128), -1e2, 1e-2, -1e-2, 1e3, inf(f128), -fmin(f128),
7073 });
7074
7075 try testArgs(@Vector(1, f80), @Vector(1, f128), .{
7076 1e0,
7077 });
7078 try testArgs(@Vector(2, f80), @Vector(2, f128), .{
7079 -inf(f128), -1e-2,
7080 });
7081 try testArgs(@Vector(4, f80), @Vector(4, f128), .{
7082 -1e2, 1e-1, fmax(f128), 1e-2,
7083 });
7084 try testArgs(@Vector(8, f80), @Vector(8, f128), .{
7085 -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
7086 });
7087 try testArgs(@Vector(16, f80), @Vector(16, f128), .{
7088 -fmax(f128), -1e0, 1e-4, 1e2, -fmin(f128), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f128), -tmin(f128), -1e-4, inf(f128), 1e-3, -1e-1,
7089 });
7090 try testArgs(@Vector(32, f80), @Vector(32, f128), .{
7091 -1e3, -tmin(f128), inf(f128), -1e4, -0.0, fmax(f128), 1e2, 1e4, -nan(f128), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f128), -1e0,
7092 1e3, -1e-3, -fmin(f128), -inf(f128), 1e-3, tmin(f128), fmin(f128), 1e1, 1e-4, -fmax(f128), -1e2, 1e-2, -1e-2, 1e3, inf(f128), -fmin(f128),
7093 });
7094
7095 try testArgs(@Vector(1, f128), @Vector(1, f128), .{
7096 1e0,
7097 });
7098 try testArgs(@Vector(2, f128), @Vector(2, f128), .{
7099 -inf(f128), -1e-2,
7100 });
7101 try testArgs(@Vector(4, f128), @Vector(4, f128), .{
7102 -1e2, 1e-1, fmax(f128), 1e-2,
7103 });
7104 try testArgs(@Vector(8, f128), @Vector(8, f128), .{
7105 -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
7106 });
7107 try testArgs(@Vector(16, f128), @Vector(16, f128), .{
7108 -fmax(f128), -1e0, 1e-4, 1e2, -fmin(f128), -1e1, 0.0, -1e4, -0.0, 1e3, -nan(f128), -tmin(f128), -1e-4, inf(f128), 1e-3, -1e-1,
7109 });
7110 try testArgs(@Vector(32, f128), @Vector(32, f128), .{
7111 -1e3, -tmin(f128), inf(f128), -1e4, -0.0, fmax(f128), 1e2, 1e4, -nan(f128), 0.0, -1e-4, -1e1, 1e0, 1e-1, nan(f128), -1e0,
7112 1e3, -1e-3, -fmin(f128), -inf(f128), 1e-3, tmin(f128), fmin(f128), 1e1, 1e-4, -fmax(f128), -1e2, 1e-2, -1e-2, 1e3, inf(f128), -fmin(f128),
7113 });
7114 }
7115 };
7116}
7117
16267118fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
16277119 return struct {
16287120 // noinline so that `mem_lhs` and `mem_rhs` are on the stack
......@@ -1714,18 +7206,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
17147206 try testArgs(f16, -nan(f16), -nan(f16));
17157207 try testArgs(f16, -nan(f16), -inf(f16));
17167208 try testArgs(f16, -nan(f16), -fmax(f16));
1717 try testArgs(f16, -nan(f16), -10.0);
1718 try testArgs(f16, -nan(f16), -1.0);
1719 try testArgs(f16, -nan(f16), -0.1);
7209 try testArgs(f16, -nan(f16), -1e1);
7210 try testArgs(f16, -nan(f16), -1e0);
7211 try testArgs(f16, -nan(f16), -1e-1);
17207212 try testArgs(f16, -nan(f16), -fmin(f16));
17217213 try testArgs(f16, -nan(f16), -tmin(f16));
17227214 try testArgs(f16, -nan(f16), -0.0);
17237215 try testArgs(f16, -nan(f16), 0.0);
17247216 try testArgs(f16, -nan(f16), tmin(f16));
17257217 try testArgs(f16, -nan(f16), fmin(f16));
1726 try testArgs(f16, -nan(f16), 0.1);
1727 try testArgs(f16, -nan(f16), 1.0);
1728 try testArgs(f16, -nan(f16), 10.0);
7218 try testArgs(f16, -nan(f16), 1e-1);
7219 try testArgs(f16, -nan(f16), 1e0);
7220 try testArgs(f16, -nan(f16), 1e1);
17297221 try testArgs(f16, -nan(f16), fmax(f16));
17307222 try testArgs(f16, -nan(f16), inf(f16));
17317223 try testArgs(f16, -nan(f16), nan(f16));
......@@ -1733,18 +7225,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
17337225 try testArgs(f16, -inf(f16), -nan(f16));
17347226 try testArgs(f16, -inf(f16), -inf(f16));
17357227 try testArgs(f16, -inf(f16), -fmax(f16));
1736 try testArgs(f16, -inf(f16), -10.0);
1737 try testArgs(f16, -inf(f16), -1.0);
1738 try testArgs(f16, -inf(f16), -0.1);
7228 try testArgs(f16, -inf(f16), -1e1);
7229 try testArgs(f16, -inf(f16), -1e0);
7230 try testArgs(f16, -inf(f16), -1e-1);
17397231 try testArgs(f16, -inf(f16), -fmin(f16));
17407232 try testArgs(f16, -inf(f16), -tmin(f16));
17417233 try testArgs(f16, -inf(f16), -0.0);
17427234 try testArgs(f16, -inf(f16), 0.0);
17437235 try testArgs(f16, -inf(f16), tmin(f16));
17447236 try testArgs(f16, -inf(f16), fmin(f16));
1745 try testArgs(f16, -inf(f16), 0.1);
1746 try testArgs(f16, -inf(f16), 1.0);
1747 try testArgs(f16, -inf(f16), 10.0);
7237 try testArgs(f16, -inf(f16), 1e-1);
7238 try testArgs(f16, -inf(f16), 1e0);
7239 try testArgs(f16, -inf(f16), 1e1);
17487240 try testArgs(f16, -inf(f16), fmax(f16));
17497241 try testArgs(f16, -inf(f16), inf(f16));
17507242 try testArgs(f16, -inf(f16), nan(f16));
......@@ -1752,94 +7244,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
17527244 try testArgs(f16, -fmax(f16), -nan(f16));
17537245 try testArgs(f16, -fmax(f16), -inf(f16));
17547246 try testArgs(f16, -fmax(f16), -fmax(f16));
1755 try testArgs(f16, -fmax(f16), -10.0);
1756 try testArgs(f16, -fmax(f16), -1.0);
1757 try testArgs(f16, -fmax(f16), -0.1);
7247 try testArgs(f16, -fmax(f16), -1e1);
7248 try testArgs(f16, -fmax(f16), -1e0);
7249 try testArgs(f16, -fmax(f16), -1e-1);
17587250 try testArgs(f16, -fmax(f16), -fmin(f16));
17597251 try testArgs(f16, -fmax(f16), -tmin(f16));
17607252 try testArgs(f16, -fmax(f16), -0.0);
17617253 try testArgs(f16, -fmax(f16), 0.0);
17627254 try testArgs(f16, -fmax(f16), tmin(f16));
17637255 try testArgs(f16, -fmax(f16), fmin(f16));
1764 try testArgs(f16, -fmax(f16), 0.1);
1765 try testArgs(f16, -fmax(f16), 1.0);
1766 try testArgs(f16, -fmax(f16), 10.0);
7256 try testArgs(f16, -fmax(f16), 1e-1);
7257 try testArgs(f16, -fmax(f16), 1e0);
7258 try testArgs(f16, -fmax(f16), 1e1);
17677259 try testArgs(f16, -fmax(f16), fmax(f16));
17687260 try testArgs(f16, -fmax(f16), inf(f16));
17697261 try testArgs(f16, -fmax(f16), nan(f16));
17707262
1771 try testArgs(f16, -10.0, -nan(f16));
1772 try testArgs(f16, -10.0, -inf(f16));
1773 try testArgs(f16, -10.0, -fmax(f16));
1774 try testArgs(f16, -10.0, -10.0);
1775 try testArgs(f16, -10.0, -1.0);
1776 try testArgs(f16, -10.0, -0.1);
1777 try testArgs(f16, -10.0, -fmin(f16));
1778 try testArgs(f16, -10.0, -tmin(f16));
1779 try testArgs(f16, -10.0, -0.0);
1780 try testArgs(f16, -10.0, 0.0);
1781 try testArgs(f16, -10.0, tmin(f16));
1782 try testArgs(f16, -10.0, fmin(f16));
1783 try testArgs(f16, -10.0, 0.1);
1784 try testArgs(f16, -10.0, 1.0);
1785 try testArgs(f16, -10.0, 10.0);
1786 try testArgs(f16, -10.0, fmax(f16));
1787 try testArgs(f16, -10.0, inf(f16));
1788 try testArgs(f16, -10.0, nan(f16));
1789
1790 try testArgs(f16, -1.0, -nan(f16));
1791 try testArgs(f16, -1.0, -inf(f16));
1792 try testArgs(f16, -1.0, -fmax(f16));
1793 try testArgs(f16, -1.0, -10.0);
1794 try testArgs(f16, -1.0, -1.0);
1795 try testArgs(f16, -1.0, -0.1);
1796 try testArgs(f16, -1.0, -fmin(f16));
1797 try testArgs(f16, -1.0, -tmin(f16));
1798 try testArgs(f16, -1.0, -0.0);
1799 try testArgs(f16, -1.0, 0.0);
1800 try testArgs(f16, -1.0, tmin(f16));
1801 try testArgs(f16, -1.0, fmin(f16));
1802 try testArgs(f16, -1.0, 0.1);
1803 try testArgs(f16, -1.0, 1.0);
1804 try testArgs(f16, -1.0, 10.0);
1805 try testArgs(f16, -1.0, fmax(f16));
1806 try testArgs(f16, -1.0, inf(f16));
1807 try testArgs(f16, -1.0, nan(f16));
1808
1809 try testArgs(f16, -0.1, -nan(f16));
1810 try testArgs(f16, -0.1, -inf(f16));
1811 try testArgs(f16, -0.1, -fmax(f16));
1812 try testArgs(f16, -0.1, -10.0);
1813 try testArgs(f16, -0.1, -1.0);
1814 try testArgs(f16, -0.1, -0.1);
1815 try testArgs(f16, -0.1, -fmin(f16));
1816 try testArgs(f16, -0.1, -tmin(f16));
1817 try testArgs(f16, -0.1, -0.0);
1818 try testArgs(f16, -0.1, 0.0);
1819 try testArgs(f16, -0.1, tmin(f16));
1820 try testArgs(f16, -0.1, fmin(f16));
1821 try testArgs(f16, -0.1, 0.1);
1822 try testArgs(f16, -0.1, 1.0);
1823 try testArgs(f16, -0.1, 10.0);
1824 try testArgs(f16, -0.1, fmax(f16));
1825 try testArgs(f16, -0.1, inf(f16));
1826 try testArgs(f16, -0.1, nan(f16));
7263 try testArgs(f16, -1e1, -nan(f16));
7264 try testArgs(f16, -1e1, -inf(f16));
7265 try testArgs(f16, -1e1, -fmax(f16));
7266 try testArgs(f16, -1e1, -1e1);
7267 try testArgs(f16, -1e1, -1e0);
7268 try testArgs(f16, -1e1, -1e-1);
7269 try testArgs(f16, -1e1, -fmin(f16));
7270 try testArgs(f16, -1e1, -tmin(f16));
7271 try testArgs(f16, -1e1, -0.0);
7272 try testArgs(f16, -1e1, 0.0);
7273 try testArgs(f16, -1e1, tmin(f16));
7274 try testArgs(f16, -1e1, fmin(f16));
7275 try testArgs(f16, -1e1, 1e-1);
7276 try testArgs(f16, -1e1, 1e0);
7277 try testArgs(f16, -1e1, 1e1);
7278 try testArgs(f16, -1e1, fmax(f16));
7279 try testArgs(f16, -1e1, inf(f16));
7280 try testArgs(f16, -1e1, nan(f16));
7281
7282 try testArgs(f16, -1e0, -nan(f16));
7283 try testArgs(f16, -1e0, -inf(f16));
7284 try testArgs(f16, -1e0, -fmax(f16));
7285 try testArgs(f16, -1e0, -1e1);
7286 try testArgs(f16, -1e0, -1e0);
7287 try testArgs(f16, -1e0, -1e-1);
7288 try testArgs(f16, -1e0, -fmin(f16));
7289 try testArgs(f16, -1e0, -tmin(f16));
7290 try testArgs(f16, -1e0, -0.0);
7291 try testArgs(f16, -1e0, 0.0);
7292 try testArgs(f16, -1e0, tmin(f16));
7293 try testArgs(f16, -1e0, fmin(f16));
7294 try testArgs(f16, -1e0, 1e-1);
7295 try testArgs(f16, -1e0, 1e0);
7296 try testArgs(f16, -1e0, 1e1);
7297 try testArgs(f16, -1e0, fmax(f16));
7298 try testArgs(f16, -1e0, inf(f16));
7299 try testArgs(f16, -1e0, nan(f16));
7300
7301 try testArgs(f16, -1e-1, -nan(f16));
7302 try testArgs(f16, -1e-1, -inf(f16));
7303 try testArgs(f16, -1e-1, -fmax(f16));
7304 try testArgs(f16, -1e-1, -1e1);
7305 try testArgs(f16, -1e-1, -1e0);
7306 try testArgs(f16, -1e-1, -1e-1);
7307 try testArgs(f16, -1e-1, -fmin(f16));
7308 try testArgs(f16, -1e-1, -tmin(f16));
7309 try testArgs(f16, -1e-1, -0.0);
7310 try testArgs(f16, -1e-1, 0.0);
7311 try testArgs(f16, -1e-1, tmin(f16));
7312 try testArgs(f16, -1e-1, fmin(f16));
7313 try testArgs(f16, -1e-1, 1e-1);
7314 try testArgs(f16, -1e-1, 1e0);
7315 try testArgs(f16, -1e-1, 1e1);
7316 try testArgs(f16, -1e-1, fmax(f16));
7317 try testArgs(f16, -1e-1, inf(f16));
7318 try testArgs(f16, -1e-1, nan(f16));
18277319
18287320 try testArgs(f16, -fmin(f16), -nan(f16));
18297321 try testArgs(f16, -fmin(f16), -inf(f16));
18307322 try testArgs(f16, -fmin(f16), -fmax(f16));
1831 try testArgs(f16, -fmin(f16), -10.0);
1832 try testArgs(f16, -fmin(f16), -1.0);
1833 try testArgs(f16, -fmin(f16), -0.1);
7323 try testArgs(f16, -fmin(f16), -1e1);
7324 try testArgs(f16, -fmin(f16), -1e0);
7325 try testArgs(f16, -fmin(f16), -1e-1);
18347326 try testArgs(f16, -fmin(f16), -fmin(f16));
18357327 try testArgs(f16, -fmin(f16), -tmin(f16));
18367328 try testArgs(f16, -fmin(f16), -0.0);
18377329 try testArgs(f16, -fmin(f16), 0.0);
18387330 try testArgs(f16, -fmin(f16), tmin(f16));
18397331 try testArgs(f16, -fmin(f16), fmin(f16));
1840 try testArgs(f16, -fmin(f16), 0.1);
1841 try testArgs(f16, -fmin(f16), 1.0);
1842 try testArgs(f16, -fmin(f16), 10.0);
7332 try testArgs(f16, -fmin(f16), 1e-1);
7333 try testArgs(f16, -fmin(f16), 1e0);
7334 try testArgs(f16, -fmin(f16), 1e1);
18437335 try testArgs(f16, -fmin(f16), fmax(f16));
18447336 try testArgs(f16, -fmin(f16), inf(f16));
18457337 try testArgs(f16, -fmin(f16), nan(f16));
......@@ -1847,18 +7339,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
18477339 try testArgs(f16, -tmin(f16), -nan(f16));
18487340 try testArgs(f16, -tmin(f16), -inf(f16));
18497341 try testArgs(f16, -tmin(f16), -fmax(f16));
1850 try testArgs(f16, -tmin(f16), -10.0);
1851 try testArgs(f16, -tmin(f16), -1.0);
1852 try testArgs(f16, -tmin(f16), -0.1);
7342 try testArgs(f16, -tmin(f16), -1e1);
7343 try testArgs(f16, -tmin(f16), -1e0);
7344 try testArgs(f16, -tmin(f16), -1e-1);
18537345 try testArgs(f16, -tmin(f16), -fmin(f16));
18547346 try testArgs(f16, -tmin(f16), -tmin(f16));
18557347 try testArgs(f16, -tmin(f16), -0.0);
18567348 try testArgs(f16, -tmin(f16), 0.0);
18577349 try testArgs(f16, -tmin(f16), tmin(f16));
18587350 try testArgs(f16, -tmin(f16), fmin(f16));
1859 try testArgs(f16, -tmin(f16), 0.1);
1860 try testArgs(f16, -tmin(f16), 1.0);
1861 try testArgs(f16, -tmin(f16), 10.0);
7351 try testArgs(f16, -tmin(f16), 1e-1);
7352 try testArgs(f16, -tmin(f16), 1e0);
7353 try testArgs(f16, -tmin(f16), 1e1);
18627354 try testArgs(f16, -tmin(f16), fmax(f16));
18637355 try testArgs(f16, -tmin(f16), inf(f16));
18647356 try testArgs(f16, -tmin(f16), nan(f16));
......@@ -1866,18 +7358,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
18667358 try testArgs(f16, -0.0, -nan(f16));
18677359 try testArgs(f16, -0.0, -inf(f16));
18687360 try testArgs(f16, -0.0, -fmax(f16));
1869 try testArgs(f16, -0.0, -10.0);
1870 try testArgs(f16, -0.0, -1.0);
1871 try testArgs(f16, -0.0, -0.1);
7361 try testArgs(f16, -0.0, -1e1);
7362 try testArgs(f16, -0.0, -1e0);
7363 try testArgs(f16, -0.0, -1e-1);
18727364 try testArgs(f16, -0.0, -fmin(f16));
18737365 try testArgs(f16, -0.0, -tmin(f16));
18747366 try testArgs(f16, -0.0, -0.0);
18757367 try testArgs(f16, -0.0, 0.0);
18767368 try testArgs(f16, -0.0, tmin(f16));
18777369 try testArgs(f16, -0.0, fmin(f16));
1878 try testArgs(f16, -0.0, 0.1);
1879 try testArgs(f16, -0.0, 1.0);
1880 try testArgs(f16, -0.0, 10.0);
7370 try testArgs(f16, -0.0, 1e-1);
7371 try testArgs(f16, -0.0, 1e0);
7372 try testArgs(f16, -0.0, 1e1);
18817373 try testArgs(f16, -0.0, fmax(f16));
18827374 try testArgs(f16, -0.0, inf(f16));
18837375 try testArgs(f16, -0.0, nan(f16));
......@@ -1885,18 +7377,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
18857377 try testArgs(f16, 0.0, -nan(f16));
18867378 try testArgs(f16, 0.0, -inf(f16));
18877379 try testArgs(f16, 0.0, -fmax(f16));
1888 try testArgs(f16, 0.0, -10.0);
1889 try testArgs(f16, 0.0, -1.0);
1890 try testArgs(f16, 0.0, -0.1);
7380 try testArgs(f16, 0.0, -1e1);
7381 try testArgs(f16, 0.0, -1e0);
7382 try testArgs(f16, 0.0, -1e-1);
18917383 try testArgs(f16, 0.0, -fmin(f16));
18927384 try testArgs(f16, 0.0, -tmin(f16));
18937385 try testArgs(f16, 0.0, -0.0);
18947386 try testArgs(f16, 0.0, 0.0);
18957387 try testArgs(f16, 0.0, tmin(f16));
18967388 try testArgs(f16, 0.0, fmin(f16));
1897 try testArgs(f16, 0.0, 0.1);
1898 try testArgs(f16, 0.0, 1.0);
1899 try testArgs(f16, 0.0, 10.0);
7389 try testArgs(f16, 0.0, 1e-1);
7390 try testArgs(f16, 0.0, 1e0);
7391 try testArgs(f16, 0.0, 1e1);
19007392 try testArgs(f16, 0.0, fmax(f16));
19017393 try testArgs(f16, 0.0, inf(f16));
19027394 try testArgs(f16, 0.0, nan(f16));
......@@ -1904,18 +7396,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
19047396 try testArgs(f16, tmin(f16), -nan(f16));
19057397 try testArgs(f16, tmin(f16), -inf(f16));
19067398 try testArgs(f16, tmin(f16), -fmax(f16));
1907 try testArgs(f16, tmin(f16), -10.0);
1908 try testArgs(f16, tmin(f16), -1.0);
1909 try testArgs(f16, tmin(f16), -0.1);
7399 try testArgs(f16, tmin(f16), -1e1);
7400 try testArgs(f16, tmin(f16), -1e0);
7401 try testArgs(f16, tmin(f16), -1e-1);
19107402 try testArgs(f16, tmin(f16), -fmin(f16));
19117403 try testArgs(f16, tmin(f16), -tmin(f16));
19127404 try testArgs(f16, tmin(f16), -0.0);
19137405 try testArgs(f16, tmin(f16), 0.0);
19147406 try testArgs(f16, tmin(f16), tmin(f16));
19157407 try testArgs(f16, tmin(f16), fmin(f16));
1916 try testArgs(f16, tmin(f16), 0.1);
1917 try testArgs(f16, tmin(f16), 1.0);
1918 try testArgs(f16, tmin(f16), 10.0);
7408 try testArgs(f16, tmin(f16), 1e-1);
7409 try testArgs(f16, tmin(f16), 1e0);
7410 try testArgs(f16, tmin(f16), 1e1);
19197411 try testArgs(f16, tmin(f16), fmax(f16));
19207412 try testArgs(f16, tmin(f16), inf(f16));
19217413 try testArgs(f16, tmin(f16), nan(f16));
......@@ -1923,94 +7415,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
19237415 try testArgs(f16, fmin(f16), -nan(f16));
19247416 try testArgs(f16, fmin(f16), -inf(f16));
19257417 try testArgs(f16, fmin(f16), -fmax(f16));
1926 try testArgs(f16, fmin(f16), -10.0);
1927 try testArgs(f16, fmin(f16), -1.0);
1928 try testArgs(f16, fmin(f16), -0.1);
7418 try testArgs(f16, fmin(f16), -1e1);
7419 try testArgs(f16, fmin(f16), -1e0);
7420 try testArgs(f16, fmin(f16), -1e-1);
19297421 try testArgs(f16, fmin(f16), -fmin(f16));
19307422 try testArgs(f16, fmin(f16), -tmin(f16));
19317423 try testArgs(f16, fmin(f16), -0.0);
19327424 try testArgs(f16, fmin(f16), 0.0);
19337425 try testArgs(f16, fmin(f16), tmin(f16));
19347426 try testArgs(f16, fmin(f16), fmin(f16));
1935 try testArgs(f16, fmin(f16), 0.1);
1936 try testArgs(f16, fmin(f16), 1.0);
1937 try testArgs(f16, fmin(f16), 10.0);
7427 try testArgs(f16, fmin(f16), 1e-1);
7428 try testArgs(f16, fmin(f16), 1e0);
7429 try testArgs(f16, fmin(f16), 1e1);
19387430 try testArgs(f16, fmin(f16), fmax(f16));
19397431 try testArgs(f16, fmin(f16), inf(f16));
19407432 try testArgs(f16, fmin(f16), nan(f16));
19417433
1942 try testArgs(f16, 0.1, -nan(f16));
1943 try testArgs(f16, 0.1, -inf(f16));
1944 try testArgs(f16, 0.1, -fmax(f16));
1945 try testArgs(f16, 0.1, -10.0);
1946 try testArgs(f16, 0.1, -1.0);
1947 try testArgs(f16, 0.1, -0.1);
1948 try testArgs(f16, 0.1, -fmin(f16));
1949 try testArgs(f16, 0.1, -tmin(f16));
1950 try testArgs(f16, 0.1, -0.0);
1951 try testArgs(f16, 0.1, 0.0);
1952 try testArgs(f16, 0.1, tmin(f16));
1953 try testArgs(f16, 0.1, fmin(f16));
1954 try testArgs(f16, 0.1, 0.1);
1955 try testArgs(f16, 0.1, 1.0);
1956 try testArgs(f16, 0.1, 10.0);
1957 try testArgs(f16, 0.1, fmax(f16));
1958 try testArgs(f16, 0.1, inf(f16));
1959 try testArgs(f16, 0.1, nan(f16));
1960
1961 try testArgs(f16, 1.0, -nan(f16));
1962 try testArgs(f16, 1.0, -inf(f16));
1963 try testArgs(f16, 1.0, -fmax(f16));
1964 try testArgs(f16, 1.0, -10.0);
1965 try testArgs(f16, 1.0, -1.0);
1966 try testArgs(f16, 1.0, -0.1);
1967 try testArgs(f16, 1.0, -fmin(f16));
1968 try testArgs(f16, 1.0, -tmin(f16));
1969 try testArgs(f16, 1.0, -0.0);
1970 try testArgs(f16, 1.0, 0.0);
1971 try testArgs(f16, 1.0, tmin(f16));
1972 try testArgs(f16, 1.0, fmin(f16));
1973 try testArgs(f16, 1.0, 0.1);
1974 try testArgs(f16, 1.0, 1.0);
1975 try testArgs(f16, 1.0, 10.0);
1976 try testArgs(f16, 1.0, fmax(f16));
1977 try testArgs(f16, 1.0, inf(f16));
1978 try testArgs(f16, 1.0, nan(f16));
1979
1980 try testArgs(f16, 10.0, -nan(f16));
1981 try testArgs(f16, 10.0, -inf(f16));
1982 try testArgs(f16, 10.0, -fmax(f16));
1983 try testArgs(f16, 10.0, -10.0);
1984 try testArgs(f16, 10.0, -1.0);
1985 try testArgs(f16, 10.0, -0.1);
1986 try testArgs(f16, 10.0, -fmin(f16));
1987 try testArgs(f16, 10.0, -tmin(f16));
1988 try testArgs(f16, 10.0, -0.0);
1989 try testArgs(f16, 10.0, 0.0);
1990 try testArgs(f16, 10.0, tmin(f16));
1991 try testArgs(f16, 10.0, fmin(f16));
1992 try testArgs(f16, 10.0, 0.1);
1993 try testArgs(f16, 10.0, 1.0);
1994 try testArgs(f16, 10.0, 10.0);
1995 try testArgs(f16, 10.0, fmax(f16));
1996 try testArgs(f16, 10.0, inf(f16));
1997 try testArgs(f16, 10.0, nan(f16));
7434 try testArgs(f16, 1e-1, -nan(f16));
7435 try testArgs(f16, 1e-1, -inf(f16));
7436 try testArgs(f16, 1e-1, -fmax(f16));
7437 try testArgs(f16, 1e-1, -1e1);
7438 try testArgs(f16, 1e-1, -1e0);
7439 try testArgs(f16, 1e-1, -1e-1);
7440 try testArgs(f16, 1e-1, -fmin(f16));
7441 try testArgs(f16, 1e-1, -tmin(f16));
7442 try testArgs(f16, 1e-1, -0.0);
7443 try testArgs(f16, 1e-1, 0.0);
7444 try testArgs(f16, 1e-1, tmin(f16));
7445 try testArgs(f16, 1e-1, fmin(f16));
7446 try testArgs(f16, 1e-1, 1e-1);
7447 try testArgs(f16, 1e-1, 1e0);
7448 try testArgs(f16, 1e-1, 1e1);
7449 try testArgs(f16, 1e-1, fmax(f16));
7450 try testArgs(f16, 1e-1, inf(f16));
7451 try testArgs(f16, 1e-1, nan(f16));
7452
7453 try testArgs(f16, 1e0, -nan(f16));
7454 try testArgs(f16, 1e0, -inf(f16));
7455 try testArgs(f16, 1e0, -fmax(f16));
7456 try testArgs(f16, 1e0, -1e1);
7457 try testArgs(f16, 1e0, -1e0);
7458 try testArgs(f16, 1e0, -1e-1);
7459 try testArgs(f16, 1e0, -fmin(f16));
7460 try testArgs(f16, 1e0, -tmin(f16));
7461 try testArgs(f16, 1e0, -0.0);
7462 try testArgs(f16, 1e0, 0.0);
7463 try testArgs(f16, 1e0, tmin(f16));
7464 try testArgs(f16, 1e0, fmin(f16));
7465 try testArgs(f16, 1e0, 1e-1);
7466 try testArgs(f16, 1e0, 1e0);
7467 try testArgs(f16, 1e0, 1e1);
7468 try testArgs(f16, 1e0, fmax(f16));
7469 try testArgs(f16, 1e0, inf(f16));
7470 try testArgs(f16, 1e0, nan(f16));
7471
7472 try testArgs(f16, 1e1, -nan(f16));
7473 try testArgs(f16, 1e1, -inf(f16));
7474 try testArgs(f16, 1e1, -fmax(f16));
7475 try testArgs(f16, 1e1, -1e1);
7476 try testArgs(f16, 1e1, -1e0);
7477 try testArgs(f16, 1e1, -1e-1);
7478 try testArgs(f16, 1e1, -fmin(f16));
7479 try testArgs(f16, 1e1, -tmin(f16));
7480 try testArgs(f16, 1e1, -0.0);
7481 try testArgs(f16, 1e1, 0.0);
7482 try testArgs(f16, 1e1, tmin(f16));
7483 try testArgs(f16, 1e1, fmin(f16));
7484 try testArgs(f16, 1e1, 1e-1);
7485 try testArgs(f16, 1e1, 1e0);
7486 try testArgs(f16, 1e1, 1e1);
7487 try testArgs(f16, 1e1, fmax(f16));
7488 try testArgs(f16, 1e1, inf(f16));
7489 try testArgs(f16, 1e1, nan(f16));
19987490
19997491 try testArgs(f16, fmax(f16), -nan(f16));
20007492 try testArgs(f16, fmax(f16), -inf(f16));
20017493 try testArgs(f16, fmax(f16), -fmax(f16));
2002 try testArgs(f16, fmax(f16), -10.0);
2003 try testArgs(f16, fmax(f16), -1.0);
2004 try testArgs(f16, fmax(f16), -0.1);
7494 try testArgs(f16, fmax(f16), -1e1);
7495 try testArgs(f16, fmax(f16), -1e0);
7496 try testArgs(f16, fmax(f16), -1e-1);
20057497 try testArgs(f16, fmax(f16), -fmin(f16));
20067498 try testArgs(f16, fmax(f16), -tmin(f16));
20077499 try testArgs(f16, fmax(f16), -0.0);
20087500 try testArgs(f16, fmax(f16), 0.0);
20097501 try testArgs(f16, fmax(f16), tmin(f16));
20107502 try testArgs(f16, fmax(f16), fmin(f16));
2011 try testArgs(f16, fmax(f16), 0.1);
2012 try testArgs(f16, fmax(f16), 1.0);
2013 try testArgs(f16, fmax(f16), 10.0);
7503 try testArgs(f16, fmax(f16), 1e-1);
7504 try testArgs(f16, fmax(f16), 1e0);
7505 try testArgs(f16, fmax(f16), 1e1);
20147506 try testArgs(f16, fmax(f16), fmax(f16));
20157507 try testArgs(f16, fmax(f16), inf(f16));
20167508 try testArgs(f16, fmax(f16), nan(f16));
......@@ -2018,18 +7510,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
20187510 try testArgs(f16, inf(f16), -nan(f16));
20197511 try testArgs(f16, inf(f16), -inf(f16));
20207512 try testArgs(f16, inf(f16), -fmax(f16));
2021 try testArgs(f16, inf(f16), -10.0);
2022 try testArgs(f16, inf(f16), -1.0);
2023 try testArgs(f16, inf(f16), -0.1);
7513 try testArgs(f16, inf(f16), -1e1);
7514 try testArgs(f16, inf(f16), -1e0);
7515 try testArgs(f16, inf(f16), -1e-1);
20247516 try testArgs(f16, inf(f16), -fmin(f16));
20257517 try testArgs(f16, inf(f16), -tmin(f16));
20267518 try testArgs(f16, inf(f16), -0.0);
20277519 try testArgs(f16, inf(f16), 0.0);
20287520 try testArgs(f16, inf(f16), tmin(f16));
20297521 try testArgs(f16, inf(f16), fmin(f16));
2030 try testArgs(f16, inf(f16), 0.1);
2031 try testArgs(f16, inf(f16), 1.0);
2032 try testArgs(f16, inf(f16), 10.0);
7522 try testArgs(f16, inf(f16), 1e-1);
7523 try testArgs(f16, inf(f16), 1e0);
7524 try testArgs(f16, inf(f16), 1e1);
20337525 try testArgs(f16, inf(f16), fmax(f16));
20347526 try testArgs(f16, inf(f16), inf(f16));
20357527 try testArgs(f16, inf(f16), nan(f16));
......@@ -2037,18 +7529,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
20377529 try testArgs(f16, nan(f16), -nan(f16));
20387530 try testArgs(f16, nan(f16), -inf(f16));
20397531 try testArgs(f16, nan(f16), -fmax(f16));
2040 try testArgs(f16, nan(f16), -10.0);
2041 try testArgs(f16, nan(f16), -1.0);
2042 try testArgs(f16, nan(f16), -0.1);
7532 try testArgs(f16, nan(f16), -1e1);
7533 try testArgs(f16, nan(f16), -1e0);
7534 try testArgs(f16, nan(f16), -1e-1);
20437535 try testArgs(f16, nan(f16), -fmin(f16));
20447536 try testArgs(f16, nan(f16), -tmin(f16));
20457537 try testArgs(f16, nan(f16), -0.0);
20467538 try testArgs(f16, nan(f16), 0.0);
20477539 try testArgs(f16, nan(f16), tmin(f16));
20487540 try testArgs(f16, nan(f16), fmin(f16));
2049 try testArgs(f16, nan(f16), 0.1);
2050 try testArgs(f16, nan(f16), 1.0);
2051 try testArgs(f16, nan(f16), 10.0);
7541 try testArgs(f16, nan(f16), 1e-1);
7542 try testArgs(f16, nan(f16), 1e0);
7543 try testArgs(f16, nan(f16), 1e1);
20527544 try testArgs(f16, nan(f16), fmax(f16));
20537545 try testArgs(f16, nan(f16), inf(f16));
20547546 try testArgs(f16, nan(f16), nan(f16));
......@@ -2056,18 +7548,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
20567548 try testArgs(f32, -nan(f32), -nan(f32));
20577549 try testArgs(f32, -nan(f32), -inf(f32));
20587550 try testArgs(f32, -nan(f32), -fmax(f32));
2059 try testArgs(f32, -nan(f32), -10.0);
2060 try testArgs(f32, -nan(f32), -1.0);
2061 try testArgs(f32, -nan(f32), -0.1);
7551 try testArgs(f32, -nan(f32), -1e1);
7552 try testArgs(f32, -nan(f32), -1e0);
7553 try testArgs(f32, -nan(f32), -1e-1);
20627554 try testArgs(f32, -nan(f32), -fmin(f32));
20637555 try testArgs(f32, -nan(f32), -tmin(f32));
20647556 try testArgs(f32, -nan(f32), -0.0);
20657557 try testArgs(f32, -nan(f32), 0.0);
20667558 try testArgs(f32, -nan(f32), tmin(f32));
20677559 try testArgs(f32, -nan(f32), fmin(f32));
2068 try testArgs(f32, -nan(f32), 0.1);
2069 try testArgs(f32, -nan(f32), 1.0);
2070 try testArgs(f32, -nan(f32), 10.0);
7560 try testArgs(f32, -nan(f32), 1e-1);
7561 try testArgs(f32, -nan(f32), 1e0);
7562 try testArgs(f32, -nan(f32), 1e1);
20717563 try testArgs(f32, -nan(f32), fmax(f32));
20727564 try testArgs(f32, -nan(f32), inf(f32));
20737565 try testArgs(f32, -nan(f32), nan(f32));
......@@ -2075,18 +7567,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
20757567 try testArgs(f32, -inf(f32), -nan(f32));
20767568 try testArgs(f32, -inf(f32), -inf(f32));
20777569 try testArgs(f32, -inf(f32), -fmax(f32));
2078 try testArgs(f32, -inf(f32), -10.0);
2079 try testArgs(f32, -inf(f32), -1.0);
2080 try testArgs(f32, -inf(f32), -0.1);
7570 try testArgs(f32, -inf(f32), -1e1);
7571 try testArgs(f32, -inf(f32), -1e0);
7572 try testArgs(f32, -inf(f32), -1e-1);
20817573 try testArgs(f32, -inf(f32), -fmin(f32));
20827574 try testArgs(f32, -inf(f32), -tmin(f32));
20837575 try testArgs(f32, -inf(f32), -0.0);
20847576 try testArgs(f32, -inf(f32), 0.0);
20857577 try testArgs(f32, -inf(f32), tmin(f32));
20867578 try testArgs(f32, -inf(f32), fmin(f32));
2087 try testArgs(f32, -inf(f32), 0.1);
2088 try testArgs(f32, -inf(f32), 1.0);
2089 try testArgs(f32, -inf(f32), 10.0);
7579 try testArgs(f32, -inf(f32), 1e-1);
7580 try testArgs(f32, -inf(f32), 1e0);
7581 try testArgs(f32, -inf(f32), 1e1);
20907582 try testArgs(f32, -inf(f32), fmax(f32));
20917583 try testArgs(f32, -inf(f32), inf(f32));
20927584 try testArgs(f32, -inf(f32), nan(f32));
......@@ -2094,94 +7586,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
20947586 try testArgs(f32, -fmax(f32), -nan(f32));
20957587 try testArgs(f32, -fmax(f32), -inf(f32));
20967588 try testArgs(f32, -fmax(f32), -fmax(f32));
2097 try testArgs(f32, -fmax(f32), -10.0);
2098 try testArgs(f32, -fmax(f32), -1.0);
2099 try testArgs(f32, -fmax(f32), -0.1);
7589 try testArgs(f32, -fmax(f32), -1e1);
7590 try testArgs(f32, -fmax(f32), -1e0);
7591 try testArgs(f32, -fmax(f32), -1e-1);
21007592 try testArgs(f32, -fmax(f32), -fmin(f32));
21017593 try testArgs(f32, -fmax(f32), -tmin(f32));
21027594 try testArgs(f32, -fmax(f32), -0.0);
21037595 try testArgs(f32, -fmax(f32), 0.0);
21047596 try testArgs(f32, -fmax(f32), tmin(f32));
21057597 try testArgs(f32, -fmax(f32), fmin(f32));
2106 try testArgs(f32, -fmax(f32), 0.1);
2107 try testArgs(f32, -fmax(f32), 1.0);
2108 try testArgs(f32, -fmax(f32), 10.0);
7598 try testArgs(f32, -fmax(f32), 1e-1);
7599 try testArgs(f32, -fmax(f32), 1e0);
7600 try testArgs(f32, -fmax(f32), 1e1);
21097601 try testArgs(f32, -fmax(f32), fmax(f32));
21107602 try testArgs(f32, -fmax(f32), inf(f32));
21117603 try testArgs(f32, -fmax(f32), nan(f32));
21127604
2113 try testArgs(f32, -10.0, -nan(f32));
2114 try testArgs(f32, -10.0, -inf(f32));
2115 try testArgs(f32, -10.0, -fmax(f32));
2116 try testArgs(f32, -10.0, -10.0);
2117 try testArgs(f32, -10.0, -1.0);
2118 try testArgs(f32, -10.0, -0.1);
2119 try testArgs(f32, -10.0, -fmin(f32));
2120 try testArgs(f32, -10.0, -tmin(f32));
2121 try testArgs(f32, -10.0, -0.0);
2122 try testArgs(f32, -10.0, 0.0);
2123 try testArgs(f32, -10.0, tmin(f32));
2124 try testArgs(f32, -10.0, fmin(f32));
2125 try testArgs(f32, -10.0, 0.1);
2126 try testArgs(f32, -10.0, 1.0);
2127 try testArgs(f32, -10.0, 10.0);
2128 try testArgs(f32, -10.0, fmax(f32));
2129 try testArgs(f32, -10.0, inf(f32));
2130 try testArgs(f32, -10.0, nan(f32));
2131
2132 try testArgs(f32, -1.0, -nan(f32));
2133 try testArgs(f32, -1.0, -inf(f32));
2134 try testArgs(f32, -1.0, -fmax(f32));
2135 try testArgs(f32, -1.0, -10.0);
2136 try testArgs(f32, -1.0, -1.0);
2137 try testArgs(f32, -1.0, -0.1);
2138 try testArgs(f32, -1.0, -fmin(f32));
2139 try testArgs(f32, -1.0, -tmin(f32));
2140 try testArgs(f32, -1.0, -0.0);
2141 try testArgs(f32, -1.0, 0.0);
2142 try testArgs(f32, -1.0, tmin(f32));
2143 try testArgs(f32, -1.0, fmin(f32));
2144 try testArgs(f32, -1.0, 0.1);
2145 try testArgs(f32, -1.0, 1.0);
2146 try testArgs(f32, -1.0, 10.0);
2147 try testArgs(f32, -1.0, fmax(f32));
2148 try testArgs(f32, -1.0, inf(f32));
2149 try testArgs(f32, -1.0, nan(f32));
2150
2151 try testArgs(f32, -0.1, -nan(f32));
2152 try testArgs(f32, -0.1, -inf(f32));
2153 try testArgs(f32, -0.1, -fmax(f32));
2154 try testArgs(f32, -0.1, -10.0);
2155 try testArgs(f32, -0.1, -1.0);
2156 try testArgs(f32, -0.1, -0.1);
2157 try testArgs(f32, -0.1, -fmin(f32));
2158 try testArgs(f32, -0.1, -tmin(f32));
2159 try testArgs(f32, -0.1, -0.0);
2160 try testArgs(f32, -0.1, 0.0);
2161 try testArgs(f32, -0.1, tmin(f32));
2162 try testArgs(f32, -0.1, fmin(f32));
2163 try testArgs(f32, -0.1, 0.1);
2164 try testArgs(f32, -0.1, 1.0);
2165 try testArgs(f32, -0.1, 10.0);
2166 try testArgs(f32, -0.1, fmax(f32));
2167 try testArgs(f32, -0.1, inf(f32));
2168 try testArgs(f32, -0.1, nan(f32));
7605 try testArgs(f32, -1e1, -nan(f32));
7606 try testArgs(f32, -1e1, -inf(f32));
7607 try testArgs(f32, -1e1, -fmax(f32));
7608 try testArgs(f32, -1e1, -1e1);
7609 try testArgs(f32, -1e1, -1e0);
7610 try testArgs(f32, -1e1, -1e-1);
7611 try testArgs(f32, -1e1, -fmin(f32));
7612 try testArgs(f32, -1e1, -tmin(f32));
7613 try testArgs(f32, -1e1, -0.0);
7614 try testArgs(f32, -1e1, 0.0);
7615 try testArgs(f32, -1e1, tmin(f32));
7616 try testArgs(f32, -1e1, fmin(f32));
7617 try testArgs(f32, -1e1, 1e-1);
7618 try testArgs(f32, -1e1, 1e0);
7619 try testArgs(f32, -1e1, 1e1);
7620 try testArgs(f32, -1e1, fmax(f32));
7621 try testArgs(f32, -1e1, inf(f32));
7622 try testArgs(f32, -1e1, nan(f32));
7623
7624 try testArgs(f32, -1e0, -nan(f32));
7625 try testArgs(f32, -1e0, -inf(f32));
7626 try testArgs(f32, -1e0, -fmax(f32));
7627 try testArgs(f32, -1e0, -1e1);
7628 try testArgs(f32, -1e0, -1e0);
7629 try testArgs(f32, -1e0, -1e-1);
7630 try testArgs(f32, -1e0, -fmin(f32));
7631 try testArgs(f32, -1e0, -tmin(f32));
7632 try testArgs(f32, -1e0, -0.0);
7633 try testArgs(f32, -1e0, 0.0);
7634 try testArgs(f32, -1e0, tmin(f32));
7635 try testArgs(f32, -1e0, fmin(f32));
7636 try testArgs(f32, -1e0, 1e-1);
7637 try testArgs(f32, -1e0, 1e0);
7638 try testArgs(f32, -1e0, 1e1);
7639 try testArgs(f32, -1e0, fmax(f32));
7640 try testArgs(f32, -1e0, inf(f32));
7641 try testArgs(f32, -1e0, nan(f32));
7642
7643 try testArgs(f32, -1e-1, -nan(f32));
7644 try testArgs(f32, -1e-1, -inf(f32));
7645 try testArgs(f32, -1e-1, -fmax(f32));
7646 try testArgs(f32, -1e-1, -1e1);
7647 try testArgs(f32, -1e-1, -1e0);
7648 try testArgs(f32, -1e-1, -1e-1);
7649 try testArgs(f32, -1e-1, -fmin(f32));
7650 try testArgs(f32, -1e-1, -tmin(f32));
7651 try testArgs(f32, -1e-1, -0.0);
7652 try testArgs(f32, -1e-1, 0.0);
7653 try testArgs(f32, -1e-1, tmin(f32));
7654 try testArgs(f32, -1e-1, fmin(f32));
7655 try testArgs(f32, -1e-1, 1e-1);
7656 try testArgs(f32, -1e-1, 1e0);
7657 try testArgs(f32, -1e-1, 1e1);
7658 try testArgs(f32, -1e-1, fmax(f32));
7659 try testArgs(f32, -1e-1, inf(f32));
7660 try testArgs(f32, -1e-1, nan(f32));
21697661
21707662 try testArgs(f32, -fmin(f32), -nan(f32));
21717663 try testArgs(f32, -fmin(f32), -inf(f32));
21727664 try testArgs(f32, -fmin(f32), -fmax(f32));
2173 try testArgs(f32, -fmin(f32), -10.0);
2174 try testArgs(f32, -fmin(f32), -1.0);
2175 try testArgs(f32, -fmin(f32), -0.1);
7665 try testArgs(f32, -fmin(f32), -1e1);
7666 try testArgs(f32, -fmin(f32), -1e0);
7667 try testArgs(f32, -fmin(f32), -1e-1);
21767668 try testArgs(f32, -fmin(f32), -fmin(f32));
21777669 try testArgs(f32, -fmin(f32), -tmin(f32));
21787670 try testArgs(f32, -fmin(f32), -0.0);
21797671 try testArgs(f32, -fmin(f32), 0.0);
21807672 try testArgs(f32, -fmin(f32), tmin(f32));
21817673 try testArgs(f32, -fmin(f32), fmin(f32));
2182 try testArgs(f32, -fmin(f32), 0.1);
2183 try testArgs(f32, -fmin(f32), 1.0);
2184 try testArgs(f32, -fmin(f32), 10.0);
7674 try testArgs(f32, -fmin(f32), 1e-1);
7675 try testArgs(f32, -fmin(f32), 1e0);
7676 try testArgs(f32, -fmin(f32), 1e1);
21857677 try testArgs(f32, -fmin(f32), fmax(f32));
21867678 try testArgs(f32, -fmin(f32), inf(f32));
21877679 try testArgs(f32, -fmin(f32), nan(f32));
......@@ -2189,18 +7681,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
21897681 try testArgs(f32, -tmin(f32), -nan(f32));
21907682 try testArgs(f32, -tmin(f32), -inf(f32));
21917683 try testArgs(f32, -tmin(f32), -fmax(f32));
2192 try testArgs(f32, -tmin(f32), -10.0);
2193 try testArgs(f32, -tmin(f32), -1.0);
2194 try testArgs(f32, -tmin(f32), -0.1);
7684 try testArgs(f32, -tmin(f32), -1e1);
7685 try testArgs(f32, -tmin(f32), -1e0);
7686 try testArgs(f32, -tmin(f32), -1e-1);
21957687 try testArgs(f32, -tmin(f32), -fmin(f32));
21967688 try testArgs(f32, -tmin(f32), -tmin(f32));
21977689 try testArgs(f32, -tmin(f32), -0.0);
21987690 try testArgs(f32, -tmin(f32), 0.0);
21997691 try testArgs(f32, -tmin(f32), tmin(f32));
22007692 try testArgs(f32, -tmin(f32), fmin(f32));
2201 try testArgs(f32, -tmin(f32), 0.1);
2202 try testArgs(f32, -tmin(f32), 1.0);
2203 try testArgs(f32, -tmin(f32), 10.0);
7693 try testArgs(f32, -tmin(f32), 1e-1);
7694 try testArgs(f32, -tmin(f32), 1e0);
7695 try testArgs(f32, -tmin(f32), 1e1);
22047696 try testArgs(f32, -tmin(f32), fmax(f32));
22057697 try testArgs(f32, -tmin(f32), inf(f32));
22067698 try testArgs(f32, -tmin(f32), nan(f32));
......@@ -2208,18 +7700,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
22087700 try testArgs(f32, -0.0, -nan(f32));
22097701 try testArgs(f32, -0.0, -inf(f32));
22107702 try testArgs(f32, -0.0, -fmax(f32));
2211 try testArgs(f32, -0.0, -10.0);
2212 try testArgs(f32, -0.0, -1.0);
2213 try testArgs(f32, -0.0, -0.1);
7703 try testArgs(f32, -0.0, -1e1);
7704 try testArgs(f32, -0.0, -1e0);
7705 try testArgs(f32, -0.0, -1e-1);
22147706 try testArgs(f32, -0.0, -fmin(f32));
22157707 try testArgs(f32, -0.0, -tmin(f32));
22167708 try testArgs(f32, -0.0, -0.0);
22177709 try testArgs(f32, -0.0, 0.0);
22187710 try testArgs(f32, -0.0, tmin(f32));
22197711 try testArgs(f32, -0.0, fmin(f32));
2220 try testArgs(f32, -0.0, 0.1);
2221 try testArgs(f32, -0.0, 1.0);
2222 try testArgs(f32, -0.0, 10.0);
7712 try testArgs(f32, -0.0, 1e-1);
7713 try testArgs(f32, -0.0, 1e0);
7714 try testArgs(f32, -0.0, 1e1);
22237715 try testArgs(f32, -0.0, fmax(f32));
22247716 try testArgs(f32, -0.0, inf(f32));
22257717 try testArgs(f32, -0.0, nan(f32));
......@@ -2227,18 +7719,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
22277719 try testArgs(f32, 0.0, -nan(f32));
22287720 try testArgs(f32, 0.0, -inf(f32));
22297721 try testArgs(f32, 0.0, -fmax(f32));
2230 try testArgs(f32, 0.0, -10.0);
2231 try testArgs(f32, 0.0, -1.0);
2232 try testArgs(f32, 0.0, -0.1);
7722 try testArgs(f32, 0.0, -1e1);
7723 try testArgs(f32, 0.0, -1e0);
7724 try testArgs(f32, 0.0, -1e-1);
22337725 try testArgs(f32, 0.0, -fmin(f32));
22347726 try testArgs(f32, 0.0, -tmin(f32));
22357727 try testArgs(f32, 0.0, -0.0);
22367728 try testArgs(f32, 0.0, 0.0);
22377729 try testArgs(f32, 0.0, tmin(f32));
22387730 try testArgs(f32, 0.0, fmin(f32));
2239 try testArgs(f32, 0.0, 0.1);
2240 try testArgs(f32, 0.0, 1.0);
2241 try testArgs(f32, 0.0, 10.0);
7731 try testArgs(f32, 0.0, 1e-1);
7732 try testArgs(f32, 0.0, 1e0);
7733 try testArgs(f32, 0.0, 1e1);
22427734 try testArgs(f32, 0.0, fmax(f32));
22437735 try testArgs(f32, 0.0, inf(f32));
22447736 try testArgs(f32, 0.0, nan(f32));
......@@ -2246,18 +7738,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
22467738 try testArgs(f32, tmin(f32), -nan(f32));
22477739 try testArgs(f32, tmin(f32), -inf(f32));
22487740 try testArgs(f32, tmin(f32), -fmax(f32));
2249 try testArgs(f32, tmin(f32), -10.0);
2250 try testArgs(f32, tmin(f32), -1.0);
2251 try testArgs(f32, tmin(f32), -0.1);
7741 try testArgs(f32, tmin(f32), -1e1);
7742 try testArgs(f32, tmin(f32), -1e0);
7743 try testArgs(f32, tmin(f32), -1e-1);
22527744 try testArgs(f32, tmin(f32), -fmin(f32));
22537745 try testArgs(f32, tmin(f32), -tmin(f32));
22547746 try testArgs(f32, tmin(f32), -0.0);
22557747 try testArgs(f32, tmin(f32), 0.0);
22567748 try testArgs(f32, tmin(f32), tmin(f32));
22577749 try testArgs(f32, tmin(f32), fmin(f32));
2258 try testArgs(f32, tmin(f32), 0.1);
2259 try testArgs(f32, tmin(f32), 1.0);
2260 try testArgs(f32, tmin(f32), 10.0);
7750 try testArgs(f32, tmin(f32), 1e-1);
7751 try testArgs(f32, tmin(f32), 1e0);
7752 try testArgs(f32, tmin(f32), 1e1);
22617753 try testArgs(f32, tmin(f32), fmax(f32));
22627754 try testArgs(f32, tmin(f32), inf(f32));
22637755 try testArgs(f32, tmin(f32), nan(f32));
......@@ -2265,94 +7757,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
22657757 try testArgs(f32, fmin(f32), -nan(f32));
22667758 try testArgs(f32, fmin(f32), -inf(f32));
22677759 try testArgs(f32, fmin(f32), -fmax(f32));
2268 try testArgs(f32, fmin(f32), -10.0);
2269 try testArgs(f32, fmin(f32), -1.0);
2270 try testArgs(f32, fmin(f32), -0.1);
7760 try testArgs(f32, fmin(f32), -1e1);
7761 try testArgs(f32, fmin(f32), -1e0);
7762 try testArgs(f32, fmin(f32), -1e-1);
22717763 try testArgs(f32, fmin(f32), -fmin(f32));
22727764 try testArgs(f32, fmin(f32), -tmin(f32));
22737765 try testArgs(f32, fmin(f32), -0.0);
22747766 try testArgs(f32, fmin(f32), 0.0);
22757767 try testArgs(f32, fmin(f32), tmin(f32));
22767768 try testArgs(f32, fmin(f32), fmin(f32));
2277 try testArgs(f32, fmin(f32), 0.1);
2278 try testArgs(f32, fmin(f32), 1.0);
2279 try testArgs(f32, fmin(f32), 10.0);
7769 try testArgs(f32, fmin(f32), 1e-1);
7770 try testArgs(f32, fmin(f32), 1e0);
7771 try testArgs(f32, fmin(f32), 1e1);
22807772 try testArgs(f32, fmin(f32), fmax(f32));
22817773 try testArgs(f32, fmin(f32), inf(f32));
22827774 try testArgs(f32, fmin(f32), nan(f32));
22837775
2284 try testArgs(f32, 0.1, -nan(f32));
2285 try testArgs(f32, 0.1, -inf(f32));
2286 try testArgs(f32, 0.1, -fmax(f32));
2287 try testArgs(f32, 0.1, -10.0);
2288 try testArgs(f32, 0.1, -1.0);
2289 try testArgs(f32, 0.1, -0.1);
2290 try testArgs(f32, 0.1, -fmin(f32));
2291 try testArgs(f32, 0.1, -tmin(f32));
2292 try testArgs(f32, 0.1, -0.0);
2293 try testArgs(f32, 0.1, 0.0);
2294 try testArgs(f32, 0.1, tmin(f32));
2295 try testArgs(f32, 0.1, fmin(f32));
2296 try testArgs(f32, 0.1, 0.1);
2297 try testArgs(f32, 0.1, 1.0);
2298 try testArgs(f32, 0.1, 10.0);
2299 try testArgs(f32, 0.1, fmax(f32));
2300 try testArgs(f32, 0.1, inf(f32));
2301 try testArgs(f32, 0.1, nan(f32));
2302
2303 try testArgs(f32, 1.0, -nan(f32));
2304 try testArgs(f32, 1.0, -inf(f32));
2305 try testArgs(f32, 1.0, -fmax(f32));
2306 try testArgs(f32, 1.0, -10.0);
2307 try testArgs(f32, 1.0, -1.0);
2308 try testArgs(f32, 1.0, -0.1);
2309 try testArgs(f32, 1.0, -fmin(f32));
2310 try testArgs(f32, 1.0, -tmin(f32));
2311 try testArgs(f32, 1.0, -0.0);
2312 try testArgs(f32, 1.0, 0.0);
2313 try testArgs(f32, 1.0, tmin(f32));
2314 try testArgs(f32, 1.0, fmin(f32));
2315 try testArgs(f32, 1.0, 0.1);
2316 try testArgs(f32, 1.0, 1.0);
2317 try testArgs(f32, 1.0, 10.0);
2318 try testArgs(f32, 1.0, fmax(f32));
2319 try testArgs(f32, 1.0, inf(f32));
2320 try testArgs(f32, 1.0, nan(f32));
2321
2322 try testArgs(f32, 10.0, -nan(f32));
2323 try testArgs(f32, 10.0, -inf(f32));
2324 try testArgs(f32, 10.0, -fmax(f32));
2325 try testArgs(f32, 10.0, -10.0);
2326 try testArgs(f32, 10.0, -1.0);
2327 try testArgs(f32, 10.0, -0.1);
2328 try testArgs(f32, 10.0, -fmin(f32));
2329 try testArgs(f32, 10.0, -tmin(f32));
2330 try testArgs(f32, 10.0, -0.0);
2331 try testArgs(f32, 10.0, 0.0);
2332 try testArgs(f32, 10.0, tmin(f32));
2333 try testArgs(f32, 10.0, fmin(f32));
2334 try testArgs(f32, 10.0, 0.1);
2335 try testArgs(f32, 10.0, 1.0);
2336 try testArgs(f32, 10.0, 10.0);
2337 try testArgs(f32, 10.0, fmax(f32));
2338 try testArgs(f32, 10.0, inf(f32));
2339 try testArgs(f32, 10.0, nan(f32));
7776 try testArgs(f32, 1e-1, -nan(f32));
7777 try testArgs(f32, 1e-1, -inf(f32));
7778 try testArgs(f32, 1e-1, -fmax(f32));
7779 try testArgs(f32, 1e-1, -1e1);
7780 try testArgs(f32, 1e-1, -1e0);
7781 try testArgs(f32, 1e-1, -1e-1);
7782 try testArgs(f32, 1e-1, -fmin(f32));
7783 try testArgs(f32, 1e-1, -tmin(f32));
7784 try testArgs(f32, 1e-1, -0.0);
7785 try testArgs(f32, 1e-1, 0.0);
7786 try testArgs(f32, 1e-1, tmin(f32));
7787 try testArgs(f32, 1e-1, fmin(f32));
7788 try testArgs(f32, 1e-1, 1e-1);
7789 try testArgs(f32, 1e-1, 1e0);
7790 try testArgs(f32, 1e-1, 1e1);
7791 try testArgs(f32, 1e-1, fmax(f32));
7792 try testArgs(f32, 1e-1, inf(f32));
7793 try testArgs(f32, 1e-1, nan(f32));
7794
7795 try testArgs(f32, 1e0, -nan(f32));
7796 try testArgs(f32, 1e0, -inf(f32));
7797 try testArgs(f32, 1e0, -fmax(f32));
7798 try testArgs(f32, 1e0, -1e1);
7799 try testArgs(f32, 1e0, -1e0);
7800 try testArgs(f32, 1e0, -1e-1);
7801 try testArgs(f32, 1e0, -fmin(f32));
7802 try testArgs(f32, 1e0, -tmin(f32));
7803 try testArgs(f32, 1e0, -0.0);
7804 try testArgs(f32, 1e0, 0.0);
7805 try testArgs(f32, 1e0, tmin(f32));
7806 try testArgs(f32, 1e0, fmin(f32));
7807 try testArgs(f32, 1e0, 1e-1);
7808 try testArgs(f32, 1e0, 1e0);
7809 try testArgs(f32, 1e0, 1e1);
7810 try testArgs(f32, 1e0, fmax(f32));
7811 try testArgs(f32, 1e0, inf(f32));
7812 try testArgs(f32, 1e0, nan(f32));
7813
7814 try testArgs(f32, 1e1, -nan(f32));
7815 try testArgs(f32, 1e1, -inf(f32));
7816 try testArgs(f32, 1e1, -fmax(f32));
7817 try testArgs(f32, 1e1, -1e1);
7818 try testArgs(f32, 1e1, -1e0);
7819 try testArgs(f32, 1e1, -1e-1);
7820 try testArgs(f32, 1e1, -fmin(f32));
7821 try testArgs(f32, 1e1, -tmin(f32));
7822 try testArgs(f32, 1e1, -0.0);
7823 try testArgs(f32, 1e1, 0.0);
7824 try testArgs(f32, 1e1, tmin(f32));
7825 try testArgs(f32, 1e1, fmin(f32));
7826 try testArgs(f32, 1e1, 1e-1);
7827 try testArgs(f32, 1e1, 1e0);
7828 try testArgs(f32, 1e1, 1e1);
7829 try testArgs(f32, 1e1, fmax(f32));
7830 try testArgs(f32, 1e1, inf(f32));
7831 try testArgs(f32, 1e1, nan(f32));
23407832
23417833 try testArgs(f32, fmax(f32), -nan(f32));
23427834 try testArgs(f32, fmax(f32), -inf(f32));
23437835 try testArgs(f32, fmax(f32), -fmax(f32));
2344 try testArgs(f32, fmax(f32), -10.0);
2345 try testArgs(f32, fmax(f32), -1.0);
2346 try testArgs(f32, fmax(f32), -0.1);
7836 try testArgs(f32, fmax(f32), -1e1);
7837 try testArgs(f32, fmax(f32), -1e0);
7838 try testArgs(f32, fmax(f32), -1e-1);
23477839 try testArgs(f32, fmax(f32), -fmin(f32));
23487840 try testArgs(f32, fmax(f32), -tmin(f32));
23497841 try testArgs(f32, fmax(f32), -0.0);
23507842 try testArgs(f32, fmax(f32), 0.0);
23517843 try testArgs(f32, fmax(f32), tmin(f32));
23527844 try testArgs(f32, fmax(f32), fmin(f32));
2353 try testArgs(f32, fmax(f32), 0.1);
2354 try testArgs(f32, fmax(f32), 1.0);
2355 try testArgs(f32, fmax(f32), 10.0);
7845 try testArgs(f32, fmax(f32), 1e-1);
7846 try testArgs(f32, fmax(f32), 1e0);
7847 try testArgs(f32, fmax(f32), 1e1);
23567848 try testArgs(f32, fmax(f32), fmax(f32));
23577849 try testArgs(f32, fmax(f32), inf(f32));
23587850 try testArgs(f32, fmax(f32), nan(f32));
......@@ -2360,18 +7852,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
23607852 try testArgs(f32, inf(f32), -nan(f32));
23617853 try testArgs(f32, inf(f32), -inf(f32));
23627854 try testArgs(f32, inf(f32), -fmax(f32));
2363 try testArgs(f32, inf(f32), -10.0);
2364 try testArgs(f32, inf(f32), -1.0);
2365 try testArgs(f32, inf(f32), -0.1);
7855 try testArgs(f32, inf(f32), -1e1);
7856 try testArgs(f32, inf(f32), -1e0);
7857 try testArgs(f32, inf(f32), -1e-1);
23667858 try testArgs(f32, inf(f32), -fmin(f32));
23677859 try testArgs(f32, inf(f32), -tmin(f32));
23687860 try testArgs(f32, inf(f32), -0.0);
23697861 try testArgs(f32, inf(f32), 0.0);
23707862 try testArgs(f32, inf(f32), tmin(f32));
23717863 try testArgs(f32, inf(f32), fmin(f32));
2372 try testArgs(f32, inf(f32), 0.1);
2373 try testArgs(f32, inf(f32), 1.0);
2374 try testArgs(f32, inf(f32), 10.0);
7864 try testArgs(f32, inf(f32), 1e-1);
7865 try testArgs(f32, inf(f32), 1e0);
7866 try testArgs(f32, inf(f32), 1e1);
23757867 try testArgs(f32, inf(f32), fmax(f32));
23767868 try testArgs(f32, inf(f32), inf(f32));
23777869 try testArgs(f32, inf(f32), nan(f32));
......@@ -2379,18 +7871,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
23797871 try testArgs(f32, nan(f32), -nan(f32));
23807872 try testArgs(f32, nan(f32), -inf(f32));
23817873 try testArgs(f32, nan(f32), -fmax(f32));
2382 try testArgs(f32, nan(f32), -10.0);
2383 try testArgs(f32, nan(f32), -1.0);
2384 try testArgs(f32, nan(f32), -0.1);
7874 try testArgs(f32, nan(f32), -1e1);
7875 try testArgs(f32, nan(f32), -1e0);
7876 try testArgs(f32, nan(f32), -1e-1);
23857877 try testArgs(f32, nan(f32), -fmin(f32));
23867878 try testArgs(f32, nan(f32), -tmin(f32));
23877879 try testArgs(f32, nan(f32), -0.0);
23887880 try testArgs(f32, nan(f32), 0.0);
23897881 try testArgs(f32, nan(f32), tmin(f32));
23907882 try testArgs(f32, nan(f32), fmin(f32));
2391 try testArgs(f32, nan(f32), 0.1);
2392 try testArgs(f32, nan(f32), 1.0);
2393 try testArgs(f32, nan(f32), 10.0);
7883 try testArgs(f32, nan(f32), 1e-1);
7884 try testArgs(f32, nan(f32), 1e0);
7885 try testArgs(f32, nan(f32), 1e1);
23947886 try testArgs(f32, nan(f32), fmax(f32));
23957887 try testArgs(f32, nan(f32), inf(f32));
23967888 try testArgs(f32, nan(f32), nan(f32));
......@@ -2398,18 +7890,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
23987890 try testArgs(f64, -nan(f64), -nan(f64));
23997891 try testArgs(f64, -nan(f64), -inf(f64));
24007892 try testArgs(f64, -nan(f64), -fmax(f64));
2401 try testArgs(f64, -nan(f64), -10.0);
2402 try testArgs(f64, -nan(f64), -1.0);
2403 try testArgs(f64, -nan(f64), -0.1);
7893 try testArgs(f64, -nan(f64), -1e1);
7894 try testArgs(f64, -nan(f64), -1e0);
7895 try testArgs(f64, -nan(f64), -1e-1);
24047896 try testArgs(f64, -nan(f64), -fmin(f64));
24057897 try testArgs(f64, -nan(f64), -tmin(f64));
24067898 try testArgs(f64, -nan(f64), -0.0);
24077899 try testArgs(f64, -nan(f64), 0.0);
24087900 try testArgs(f64, -nan(f64), tmin(f64));
24097901 try testArgs(f64, -nan(f64), fmin(f64));
2410 try testArgs(f64, -nan(f64), 0.1);
2411 try testArgs(f64, -nan(f64), 1.0);
2412 try testArgs(f64, -nan(f64), 10.0);
7902 try testArgs(f64, -nan(f64), 1e-1);
7903 try testArgs(f64, -nan(f64), 1e0);
7904 try testArgs(f64, -nan(f64), 1e1);
24137905 try testArgs(f64, -nan(f64), fmax(f64));
24147906 try testArgs(f64, -nan(f64), inf(f64));
24157907 try testArgs(f64, -nan(f64), nan(f64));
......@@ -2417,18 +7909,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
24177909 try testArgs(f64, -inf(f64), -nan(f64));
24187910 try testArgs(f64, -inf(f64), -inf(f64));
24197911 try testArgs(f64, -inf(f64), -fmax(f64));
2420 try testArgs(f64, -inf(f64), -10.0);
2421 try testArgs(f64, -inf(f64), -1.0);
2422 try testArgs(f64, -inf(f64), -0.1);
7912 try testArgs(f64, -inf(f64), -1e1);
7913 try testArgs(f64, -inf(f64), -1e0);
7914 try testArgs(f64, -inf(f64), -1e-1);
24237915 try testArgs(f64, -inf(f64), -fmin(f64));
24247916 try testArgs(f64, -inf(f64), -tmin(f64));
24257917 try testArgs(f64, -inf(f64), -0.0);
24267918 try testArgs(f64, -inf(f64), 0.0);
24277919 try testArgs(f64, -inf(f64), tmin(f64));
24287920 try testArgs(f64, -inf(f64), fmin(f64));
2429 try testArgs(f64, -inf(f64), 0.1);
2430 try testArgs(f64, -inf(f64), 1.0);
2431 try testArgs(f64, -inf(f64), 10.0);
7921 try testArgs(f64, -inf(f64), 1e-1);
7922 try testArgs(f64, -inf(f64), 1e0);
7923 try testArgs(f64, -inf(f64), 1e1);
24327924 try testArgs(f64, -inf(f64), fmax(f64));
24337925 try testArgs(f64, -inf(f64), inf(f64));
24347926 try testArgs(f64, -inf(f64), nan(f64));
......@@ -2436,94 +7928,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
24367928 try testArgs(f64, -fmax(f64), -nan(f64));
24377929 try testArgs(f64, -fmax(f64), -inf(f64));
24387930 try testArgs(f64, -fmax(f64), -fmax(f64));
2439 try testArgs(f64, -fmax(f64), -10.0);
2440 try testArgs(f64, -fmax(f64), -1.0);
2441 try testArgs(f64, -fmax(f64), -0.1);
7931 try testArgs(f64, -fmax(f64), -1e1);
7932 try testArgs(f64, -fmax(f64), -1e0);
7933 try testArgs(f64, -fmax(f64), -1e-1);
24427934 try testArgs(f64, -fmax(f64), -fmin(f64));
24437935 try testArgs(f64, -fmax(f64), -tmin(f64));
24447936 try testArgs(f64, -fmax(f64), -0.0);
24457937 try testArgs(f64, -fmax(f64), 0.0);
24467938 try testArgs(f64, -fmax(f64), tmin(f64));
24477939 try testArgs(f64, -fmax(f64), fmin(f64));
2448 try testArgs(f64, -fmax(f64), 0.1);
2449 try testArgs(f64, -fmax(f64), 1.0);
2450 try testArgs(f64, -fmax(f64), 10.0);
7940 try testArgs(f64, -fmax(f64), 1e-1);
7941 try testArgs(f64, -fmax(f64), 1e0);
7942 try testArgs(f64, -fmax(f64), 1e1);
24517943 try testArgs(f64, -fmax(f64), fmax(f64));
24527944 try testArgs(f64, -fmax(f64), inf(f64));
24537945 try testArgs(f64, -fmax(f64), nan(f64));
24547946
2455 try testArgs(f64, -10.0, -nan(f64));
2456 try testArgs(f64, -10.0, -inf(f64));
2457 try testArgs(f64, -10.0, -fmax(f64));
2458 try testArgs(f64, -10.0, -10.0);
2459 try testArgs(f64, -10.0, -1.0);
2460 try testArgs(f64, -10.0, -0.1);
2461 try testArgs(f64, -10.0, -fmin(f64));
2462 try testArgs(f64, -10.0, -tmin(f64));
2463 try testArgs(f64, -10.0, -0.0);
2464 try testArgs(f64, -10.0, 0.0);
2465 try testArgs(f64, -10.0, tmin(f64));
2466 try testArgs(f64, -10.0, fmin(f64));
2467 try testArgs(f64, -10.0, 0.1);
2468 try testArgs(f64, -10.0, 1.0);
2469 try testArgs(f64, -10.0, 10.0);
2470 try testArgs(f64, -10.0, fmax(f64));
2471 try testArgs(f64, -10.0, inf(f64));
2472 try testArgs(f64, -10.0, nan(f64));
2473
2474 try testArgs(f64, -1.0, -nan(f64));
2475 try testArgs(f64, -1.0, -inf(f64));
2476 try testArgs(f64, -1.0, -fmax(f64));
2477 try testArgs(f64, -1.0, -10.0);
2478 try testArgs(f64, -1.0, -1.0);
2479 try testArgs(f64, -1.0, -0.1);
2480 try testArgs(f64, -1.0, -fmin(f64));
2481 try testArgs(f64, -1.0, -tmin(f64));
2482 try testArgs(f64, -1.0, -0.0);
2483 try testArgs(f64, -1.0, 0.0);
2484 try testArgs(f64, -1.0, tmin(f64));
2485 try testArgs(f64, -1.0, fmin(f64));
2486 try testArgs(f64, -1.0, 0.1);
2487 try testArgs(f64, -1.0, 1.0);
2488 try testArgs(f64, -1.0, 10.0);
2489 try testArgs(f64, -1.0, fmax(f64));
2490 try testArgs(f64, -1.0, inf(f64));
2491 try testArgs(f64, -1.0, nan(f64));
2492
2493 try testArgs(f64, -0.1, -nan(f64));
2494 try testArgs(f64, -0.1, -inf(f64));
2495 try testArgs(f64, -0.1, -fmax(f64));
2496 try testArgs(f64, -0.1, -10.0);
2497 try testArgs(f64, -0.1, -1.0);
2498 try testArgs(f64, -0.1, -0.1);
2499 try testArgs(f64, -0.1, -fmin(f64));
2500 try testArgs(f64, -0.1, -tmin(f64));
2501 try testArgs(f64, -0.1, -0.0);
2502 try testArgs(f64, -0.1, 0.0);
2503 try testArgs(f64, -0.1, tmin(f64));
2504 try testArgs(f64, -0.1, fmin(f64));
2505 try testArgs(f64, -0.1, 0.1);
2506 try testArgs(f64, -0.1, 1.0);
2507 try testArgs(f64, -0.1, 10.0);
2508 try testArgs(f64, -0.1, fmax(f64));
2509 try testArgs(f64, -0.1, inf(f64));
2510 try testArgs(f64, -0.1, nan(f64));
7947 try testArgs(f64, -1e1, -nan(f64));
7948 try testArgs(f64, -1e1, -inf(f64));
7949 try testArgs(f64, -1e1, -fmax(f64));
7950 try testArgs(f64, -1e1, -1e1);
7951 try testArgs(f64, -1e1, -1e0);
7952 try testArgs(f64, -1e1, -1e-1);
7953 try testArgs(f64, -1e1, -fmin(f64));
7954 try testArgs(f64, -1e1, -tmin(f64));
7955 try testArgs(f64, -1e1, -0.0);
7956 try testArgs(f64, -1e1, 0.0);
7957 try testArgs(f64, -1e1, tmin(f64));
7958 try testArgs(f64, -1e1, fmin(f64));
7959 try testArgs(f64, -1e1, 1e-1);
7960 try testArgs(f64, -1e1, 1e0);
7961 try testArgs(f64, -1e1, 1e1);
7962 try testArgs(f64, -1e1, fmax(f64));
7963 try testArgs(f64, -1e1, inf(f64));
7964 try testArgs(f64, -1e1, nan(f64));
7965
7966 try testArgs(f64, -1e0, -nan(f64));
7967 try testArgs(f64, -1e0, -inf(f64));
7968 try testArgs(f64, -1e0, -fmax(f64));
7969 try testArgs(f64, -1e0, -1e1);
7970 try testArgs(f64, -1e0, -1e0);
7971 try testArgs(f64, -1e0, -1e-1);
7972 try testArgs(f64, -1e0, -fmin(f64));
7973 try testArgs(f64, -1e0, -tmin(f64));
7974 try testArgs(f64, -1e0, -0.0);
7975 try testArgs(f64, -1e0, 0.0);
7976 try testArgs(f64, -1e0, tmin(f64));
7977 try testArgs(f64, -1e0, fmin(f64));
7978 try testArgs(f64, -1e0, 1e-1);
7979 try testArgs(f64, -1e0, 1e0);
7980 try testArgs(f64, -1e0, 1e1);
7981 try testArgs(f64, -1e0, fmax(f64));
7982 try testArgs(f64, -1e0, inf(f64));
7983 try testArgs(f64, -1e0, nan(f64));
7984
7985 try testArgs(f64, -1e-1, -nan(f64));
7986 try testArgs(f64, -1e-1, -inf(f64));
7987 try testArgs(f64, -1e-1, -fmax(f64));
7988 try testArgs(f64, -1e-1, -1e1);
7989 try testArgs(f64, -1e-1, -1e0);
7990 try testArgs(f64, -1e-1, -1e-1);
7991 try testArgs(f64, -1e-1, -fmin(f64));
7992 try testArgs(f64, -1e-1, -tmin(f64));
7993 try testArgs(f64, -1e-1, -0.0);
7994 try testArgs(f64, -1e-1, 0.0);
7995 try testArgs(f64, -1e-1, tmin(f64));
7996 try testArgs(f64, -1e-1, fmin(f64));
7997 try testArgs(f64, -1e-1, 1e-1);
7998 try testArgs(f64, -1e-1, 1e0);
7999 try testArgs(f64, -1e-1, 1e1);
8000 try testArgs(f64, -1e-1, fmax(f64));
8001 try testArgs(f64, -1e-1, inf(f64));
8002 try testArgs(f64, -1e-1, nan(f64));
25118003
25128004 try testArgs(f64, -fmin(f64), -nan(f64));
25138005 try testArgs(f64, -fmin(f64), -inf(f64));
25148006 try testArgs(f64, -fmin(f64), -fmax(f64));
2515 try testArgs(f64, -fmin(f64), -10.0);
2516 try testArgs(f64, -fmin(f64), -1.0);
2517 try testArgs(f64, -fmin(f64), -0.1);
8007 try testArgs(f64, -fmin(f64), -1e1);
8008 try testArgs(f64, -fmin(f64), -1e0);
8009 try testArgs(f64, -fmin(f64), -1e-1);
25188010 try testArgs(f64, -fmin(f64), -fmin(f64));
25198011 try testArgs(f64, -fmin(f64), -tmin(f64));
25208012 try testArgs(f64, -fmin(f64), -0.0);
25218013 try testArgs(f64, -fmin(f64), 0.0);
25228014 try testArgs(f64, -fmin(f64), tmin(f64));
25238015 try testArgs(f64, -fmin(f64), fmin(f64));
2524 try testArgs(f64, -fmin(f64), 0.1);
2525 try testArgs(f64, -fmin(f64), 1.0);
2526 try testArgs(f64, -fmin(f64), 10.0);
8016 try testArgs(f64, -fmin(f64), 1e-1);
8017 try testArgs(f64, -fmin(f64), 1e0);
8018 try testArgs(f64, -fmin(f64), 1e1);
25278019 try testArgs(f64, -fmin(f64), fmax(f64));
25288020 try testArgs(f64, -fmin(f64), inf(f64));
25298021 try testArgs(f64, -fmin(f64), nan(f64));
......@@ -2531,18 +8023,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
25318023 try testArgs(f64, -tmin(f64), -nan(f64));
25328024 try testArgs(f64, -tmin(f64), -inf(f64));
25338025 try testArgs(f64, -tmin(f64), -fmax(f64));
2534 try testArgs(f64, -tmin(f64), -10.0);
2535 try testArgs(f64, -tmin(f64), -1.0);
2536 try testArgs(f64, -tmin(f64), -0.1);
8026 try testArgs(f64, -tmin(f64), -1e1);
8027 try testArgs(f64, -tmin(f64), -1e0);
8028 try testArgs(f64, -tmin(f64), -1e-1);
25378029 try testArgs(f64, -tmin(f64), -fmin(f64));
25388030 try testArgs(f64, -tmin(f64), -tmin(f64));
25398031 try testArgs(f64, -tmin(f64), -0.0);
25408032 try testArgs(f64, -tmin(f64), 0.0);
25418033 try testArgs(f64, -tmin(f64), tmin(f64));
25428034 try testArgs(f64, -tmin(f64), fmin(f64));
2543 try testArgs(f64, -tmin(f64), 0.1);
2544 try testArgs(f64, -tmin(f64), 1.0);
2545 try testArgs(f64, -tmin(f64), 10.0);
8035 try testArgs(f64, -tmin(f64), 1e-1);
8036 try testArgs(f64, -tmin(f64), 1e0);
8037 try testArgs(f64, -tmin(f64), 1e1);
25468038 try testArgs(f64, -tmin(f64), fmax(f64));
25478039 try testArgs(f64, -tmin(f64), inf(f64));
25488040 try testArgs(f64, -tmin(f64), nan(f64));
......@@ -2550,18 +8042,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
25508042 try testArgs(f64, -0.0, -nan(f64));
25518043 try testArgs(f64, -0.0, -inf(f64));
25528044 try testArgs(f64, -0.0, -fmax(f64));
2553 try testArgs(f64, -0.0, -10.0);
2554 try testArgs(f64, -0.0, -1.0);
2555 try testArgs(f64, -0.0, -0.1);
8045 try testArgs(f64, -0.0, -1e1);
8046 try testArgs(f64, -0.0, -1e0);
8047 try testArgs(f64, -0.0, -1e-1);
25568048 try testArgs(f64, -0.0, -fmin(f64));
25578049 try testArgs(f64, -0.0, -tmin(f64));
25588050 try testArgs(f64, -0.0, -0.0);
25598051 try testArgs(f64, -0.0, 0.0);
25608052 try testArgs(f64, -0.0, tmin(f64));
25618053 try testArgs(f64, -0.0, fmin(f64));
2562 try testArgs(f64, -0.0, 0.1);
2563 try testArgs(f64, -0.0, 1.0);
2564 try testArgs(f64, -0.0, 10.0);
8054 try testArgs(f64, -0.0, 1e-1);
8055 try testArgs(f64, -0.0, 1e0);
8056 try testArgs(f64, -0.0, 1e1);
25658057 try testArgs(f64, -0.0, fmax(f64));
25668058 try testArgs(f64, -0.0, inf(f64));
25678059 try testArgs(f64, -0.0, nan(f64));
......@@ -2569,18 +8061,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
25698061 try testArgs(f64, 0.0, -nan(f64));
25708062 try testArgs(f64, 0.0, -inf(f64));
25718063 try testArgs(f64, 0.0, -fmax(f64));
2572 try testArgs(f64, 0.0, -10.0);
2573 try testArgs(f64, 0.0, -1.0);
2574 try testArgs(f64, 0.0, -0.1);
8064 try testArgs(f64, 0.0, -1e1);
8065 try testArgs(f64, 0.0, -1e0);
8066 try testArgs(f64, 0.0, -1e-1);
25758067 try testArgs(f64, 0.0, -fmin(f64));
25768068 try testArgs(f64, 0.0, -tmin(f64));
25778069 try testArgs(f64, 0.0, -0.0);
25788070 try testArgs(f64, 0.0, 0.0);
25798071 try testArgs(f64, 0.0, tmin(f64));
25808072 try testArgs(f64, 0.0, fmin(f64));
2581 try testArgs(f64, 0.0, 0.1);
2582 try testArgs(f64, 0.0, 1.0);
2583 try testArgs(f64, 0.0, 10.0);
8073 try testArgs(f64, 0.0, 1e-1);
8074 try testArgs(f64, 0.0, 1e0);
8075 try testArgs(f64, 0.0, 1e1);
25848076 try testArgs(f64, 0.0, fmax(f64));
25858077 try testArgs(f64, 0.0, inf(f64));
25868078 try testArgs(f64, 0.0, nan(f64));
......@@ -2588,18 +8080,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
25888080 try testArgs(f64, tmin(f64), -nan(f64));
25898081 try testArgs(f64, tmin(f64), -inf(f64));
25908082 try testArgs(f64, tmin(f64), -fmax(f64));
2591 try testArgs(f64, tmin(f64), -10.0);
2592 try testArgs(f64, tmin(f64), -1.0);
2593 try testArgs(f64, tmin(f64), -0.1);
8083 try testArgs(f64, tmin(f64), -1e1);
8084 try testArgs(f64, tmin(f64), -1e0);
8085 try testArgs(f64, tmin(f64), -1e-1);
25948086 try testArgs(f64, tmin(f64), -fmin(f64));
25958087 try testArgs(f64, tmin(f64), -tmin(f64));
25968088 try testArgs(f64, tmin(f64), -0.0);
25978089 try testArgs(f64, tmin(f64), 0.0);
25988090 try testArgs(f64, tmin(f64), tmin(f64));
25998091 try testArgs(f64, tmin(f64), fmin(f64));
2600 try testArgs(f64, tmin(f64), 0.1);
2601 try testArgs(f64, tmin(f64), 1.0);
2602 try testArgs(f64, tmin(f64), 10.0);
8092 try testArgs(f64, tmin(f64), 1e-1);
8093 try testArgs(f64, tmin(f64), 1e0);
8094 try testArgs(f64, tmin(f64), 1e1);
26038095 try testArgs(f64, tmin(f64), fmax(f64));
26048096 try testArgs(f64, tmin(f64), inf(f64));
26058097 try testArgs(f64, tmin(f64), nan(f64));
......@@ -2607,94 +8099,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
26078099 try testArgs(f64, fmin(f64), -nan(f64));
26088100 try testArgs(f64, fmin(f64), -inf(f64));
26098101 try testArgs(f64, fmin(f64), -fmax(f64));
2610 try testArgs(f64, fmin(f64), -10.0);
2611 try testArgs(f64, fmin(f64), -1.0);
2612 try testArgs(f64, fmin(f64), -0.1);
8102 try testArgs(f64, fmin(f64), -1e1);
8103 try testArgs(f64, fmin(f64), -1e0);
8104 try testArgs(f64, fmin(f64), -1e-1);
26138105 try testArgs(f64, fmin(f64), -fmin(f64));
26148106 try testArgs(f64, fmin(f64), -tmin(f64));
26158107 try testArgs(f64, fmin(f64), -0.0);
26168108 try testArgs(f64, fmin(f64), 0.0);
26178109 try testArgs(f64, fmin(f64), tmin(f64));
26188110 try testArgs(f64, fmin(f64), fmin(f64));
2619 try testArgs(f64, fmin(f64), 0.1);
2620 try testArgs(f64, fmin(f64), 1.0);
2621 try testArgs(f64, fmin(f64), 10.0);
8111 try testArgs(f64, fmin(f64), 1e-1);
8112 try testArgs(f64, fmin(f64), 1e0);
8113 try testArgs(f64, fmin(f64), 1e1);
26228114 try testArgs(f64, fmin(f64), fmax(f64));
26238115 try testArgs(f64, fmin(f64), inf(f64));
26248116 try testArgs(f64, fmin(f64), nan(f64));
26258117
2626 try testArgs(f64, 0.1, -nan(f64));
2627 try testArgs(f64, 0.1, -inf(f64));
2628 try testArgs(f64, 0.1, -fmax(f64));
2629 try testArgs(f64, 0.1, -10.0);
2630 try testArgs(f64, 0.1, -1.0);
2631 try testArgs(f64, 0.1, -0.1);
2632 try testArgs(f64, 0.1, -fmin(f64));
2633 try testArgs(f64, 0.1, -tmin(f64));
2634 try testArgs(f64, 0.1, -0.0);
2635 try testArgs(f64, 0.1, 0.0);
2636 try testArgs(f64, 0.1, tmin(f64));
2637 try testArgs(f64, 0.1, fmin(f64));
2638 try testArgs(f64, 0.1, 0.1);
2639 try testArgs(f64, 0.1, 1.0);
2640 try testArgs(f64, 0.1, 10.0);
2641 try testArgs(f64, 0.1, fmax(f64));
2642 try testArgs(f64, 0.1, inf(f64));
2643 try testArgs(f64, 0.1, nan(f64));
2644
2645 try testArgs(f64, 1.0, -nan(f64));
2646 try testArgs(f64, 1.0, -inf(f64));
2647 try testArgs(f64, 1.0, -fmax(f64));
2648 try testArgs(f64, 1.0, -10.0);
2649 try testArgs(f64, 1.0, -1.0);
2650 try testArgs(f64, 1.0, -0.1);
2651 try testArgs(f64, 1.0, -fmin(f64));
2652 try testArgs(f64, 1.0, -tmin(f64));
2653 try testArgs(f64, 1.0, -0.0);
2654 try testArgs(f64, 1.0, 0.0);
2655 try testArgs(f64, 1.0, tmin(f64));
2656 try testArgs(f64, 1.0, fmin(f64));
2657 try testArgs(f64, 1.0, 0.1);
2658 try testArgs(f64, 1.0, 1.0);
2659 try testArgs(f64, 1.0, 10.0);
2660 try testArgs(f64, 1.0, fmax(f64));
2661 try testArgs(f64, 1.0, inf(f64));
2662 try testArgs(f64, 1.0, nan(f64));
2663
2664 try testArgs(f64, 10.0, -nan(f64));
2665 try testArgs(f64, 10.0, -inf(f64));
2666 try testArgs(f64, 10.0, -fmax(f64));
2667 try testArgs(f64, 10.0, -10.0);
2668 try testArgs(f64, 10.0, -1.0);
2669 try testArgs(f64, 10.0, -0.1);
2670 try testArgs(f64, 10.0, -fmin(f64));
2671 try testArgs(f64, 10.0, -tmin(f64));
2672 try testArgs(f64, 10.0, -0.0);
2673 try testArgs(f64, 10.0, 0.0);
2674 try testArgs(f64, 10.0, tmin(f64));
2675 try testArgs(f64, 10.0, fmin(f64));
2676 try testArgs(f64, 10.0, 0.1);
2677 try testArgs(f64, 10.0, 1.0);
2678 try testArgs(f64, 10.0, 10.0);
2679 try testArgs(f64, 10.0, fmax(f64));
2680 try testArgs(f64, 10.0, inf(f64));
2681 try testArgs(f64, 10.0, nan(f64));
8118 try testArgs(f64, 1e-1, -nan(f64));
8119 try testArgs(f64, 1e-1, -inf(f64));
8120 try testArgs(f64, 1e-1, -fmax(f64));
8121 try testArgs(f64, 1e-1, -1e1);
8122 try testArgs(f64, 1e-1, -1e0);
8123 try testArgs(f64, 1e-1, -1e-1);
8124 try testArgs(f64, 1e-1, -fmin(f64));
8125 try testArgs(f64, 1e-1, -tmin(f64));
8126 try testArgs(f64, 1e-1, -0.0);
8127 try testArgs(f64, 1e-1, 0.0);
8128 try testArgs(f64, 1e-1, tmin(f64));
8129 try testArgs(f64, 1e-1, fmin(f64));
8130 try testArgs(f64, 1e-1, 1e-1);
8131 try testArgs(f64, 1e-1, 1e0);
8132 try testArgs(f64, 1e-1, 1e1);
8133 try testArgs(f64, 1e-1, fmax(f64));
8134 try testArgs(f64, 1e-1, inf(f64));
8135 try testArgs(f64, 1e-1, nan(f64));
8136
8137 try testArgs(f64, 1e0, -nan(f64));
8138 try testArgs(f64, 1e0, -inf(f64));
8139 try testArgs(f64, 1e0, -fmax(f64));
8140 try testArgs(f64, 1e0, -1e1);
8141 try testArgs(f64, 1e0, -1e0);
8142 try testArgs(f64, 1e0, -1e-1);
8143 try testArgs(f64, 1e0, -fmin(f64));
8144 try testArgs(f64, 1e0, -tmin(f64));
8145 try testArgs(f64, 1e0, -0.0);
8146 try testArgs(f64, 1e0, 0.0);
8147 try testArgs(f64, 1e0, tmin(f64));
8148 try testArgs(f64, 1e0, fmin(f64));
8149 try testArgs(f64, 1e0, 1e-1);
8150 try testArgs(f64, 1e0, 1e0);
8151 try testArgs(f64, 1e0, 1e1);
8152 try testArgs(f64, 1e0, fmax(f64));
8153 try testArgs(f64, 1e0, inf(f64));
8154 try testArgs(f64, 1e0, nan(f64));
8155
8156 try testArgs(f64, 1e1, -nan(f64));
8157 try testArgs(f64, 1e1, -inf(f64));
8158 try testArgs(f64, 1e1, -fmax(f64));
8159 try testArgs(f64, 1e1, -1e1);
8160 try testArgs(f64, 1e1, -1e0);
8161 try testArgs(f64, 1e1, -1e-1);
8162 try testArgs(f64, 1e1, -fmin(f64));
8163 try testArgs(f64, 1e1, -tmin(f64));
8164 try testArgs(f64, 1e1, -0.0);
8165 try testArgs(f64, 1e1, 0.0);
8166 try testArgs(f64, 1e1, tmin(f64));
8167 try testArgs(f64, 1e1, fmin(f64));
8168 try testArgs(f64, 1e1, 1e-1);
8169 try testArgs(f64, 1e1, 1e0);
8170 try testArgs(f64, 1e1, 1e1);
8171 try testArgs(f64, 1e1, fmax(f64));
8172 try testArgs(f64, 1e1, inf(f64));
8173 try testArgs(f64, 1e1, nan(f64));
26828174
26838175 try testArgs(f64, fmax(f64), -nan(f64));
26848176 try testArgs(f64, fmax(f64), -inf(f64));
26858177 try testArgs(f64, fmax(f64), -fmax(f64));
2686 try testArgs(f64, fmax(f64), -10.0);
2687 try testArgs(f64, fmax(f64), -1.0);
2688 try testArgs(f64, fmax(f64), -0.1);
8178 try testArgs(f64, fmax(f64), -1e1);
8179 try testArgs(f64, fmax(f64), -1e0);
8180 try testArgs(f64, fmax(f64), -1e-1);
26898181 try testArgs(f64, fmax(f64), -fmin(f64));
26908182 try testArgs(f64, fmax(f64), -tmin(f64));
26918183 try testArgs(f64, fmax(f64), -0.0);
26928184 try testArgs(f64, fmax(f64), 0.0);
26938185 try testArgs(f64, fmax(f64), tmin(f64));
26948186 try testArgs(f64, fmax(f64), fmin(f64));
2695 try testArgs(f64, fmax(f64), 0.1);
2696 try testArgs(f64, fmax(f64), 1.0);
2697 try testArgs(f64, fmax(f64), 10.0);
8187 try testArgs(f64, fmax(f64), 1e-1);
8188 try testArgs(f64, fmax(f64), 1e0);
8189 try testArgs(f64, fmax(f64), 1e1);
26988190 try testArgs(f64, fmax(f64), fmax(f64));
26998191 try testArgs(f64, fmax(f64), inf(f64));
27008192 try testArgs(f64, fmax(f64), nan(f64));
......@@ -2702,18 +8194,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
27028194 try testArgs(f64, inf(f64), -nan(f64));
27038195 try testArgs(f64, inf(f64), -inf(f64));
27048196 try testArgs(f64, inf(f64), -fmax(f64));
2705 try testArgs(f64, inf(f64), -10.0);
2706 try testArgs(f64, inf(f64), -1.0);
2707 try testArgs(f64, inf(f64), -0.1);
8197 try testArgs(f64, inf(f64), -1e1);
8198 try testArgs(f64, inf(f64), -1e0);
8199 try testArgs(f64, inf(f64), -1e-1);
27088200 try testArgs(f64, inf(f64), -fmin(f64));
27098201 try testArgs(f64, inf(f64), -tmin(f64));
27108202 try testArgs(f64, inf(f64), -0.0);
27118203 try testArgs(f64, inf(f64), 0.0);
27128204 try testArgs(f64, inf(f64), tmin(f64));
27138205 try testArgs(f64, inf(f64), fmin(f64));
2714 try testArgs(f64, inf(f64), 0.1);
2715 try testArgs(f64, inf(f64), 1.0);
2716 try testArgs(f64, inf(f64), 10.0);
8206 try testArgs(f64, inf(f64), 1e-1);
8207 try testArgs(f64, inf(f64), 1e0);
8208 try testArgs(f64, inf(f64), 1e1);
27178209 try testArgs(f64, inf(f64), fmax(f64));
27188210 try testArgs(f64, inf(f64), inf(f64));
27198211 try testArgs(f64, inf(f64), nan(f64));
......@@ -2721,18 +8213,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
27218213 try testArgs(f64, nan(f64), -nan(f64));
27228214 try testArgs(f64, nan(f64), -inf(f64));
27238215 try testArgs(f64, nan(f64), -fmax(f64));
2724 try testArgs(f64, nan(f64), -10.0);
2725 try testArgs(f64, nan(f64), -1.0);
2726 try testArgs(f64, nan(f64), -0.1);
8216 try testArgs(f64, nan(f64), -1e1);
8217 try testArgs(f64, nan(f64), -1e0);
8218 try testArgs(f64, nan(f64), -1e-1);
27278219 try testArgs(f64, nan(f64), -fmin(f64));
27288220 try testArgs(f64, nan(f64), -tmin(f64));
27298221 try testArgs(f64, nan(f64), -0.0);
27308222 try testArgs(f64, nan(f64), 0.0);
27318223 try testArgs(f64, nan(f64), tmin(f64));
27328224 try testArgs(f64, nan(f64), fmin(f64));
2733 try testArgs(f64, nan(f64), 0.1);
2734 try testArgs(f64, nan(f64), 1.0);
2735 try testArgs(f64, nan(f64), 10.0);
8225 try testArgs(f64, nan(f64), 1e-1);
8226 try testArgs(f64, nan(f64), 1e0);
8227 try testArgs(f64, nan(f64), 1e1);
27368228 try testArgs(f64, nan(f64), fmax(f64));
27378229 try testArgs(f64, nan(f64), inf(f64));
27388230 try testArgs(f64, nan(f64), nan(f64));
......@@ -2740,18 +8232,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
27408232 try testArgs(f80, -nan(f80), -nan(f80));
27418233 try testArgs(f80, -nan(f80), -inf(f80));
27428234 try testArgs(f80, -nan(f80), -fmax(f80));
2743 try testArgs(f80, -nan(f80), -10.0);
2744 try testArgs(f80, -nan(f80), -1.0);
2745 try testArgs(f80, -nan(f80), -0.1);
8235 try testArgs(f80, -nan(f80), -1e1);
8236 try testArgs(f80, -nan(f80), -1e0);
8237 try testArgs(f80, -nan(f80), -1e-1);
27468238 try testArgs(f80, -nan(f80), -fmin(f80));
27478239 try testArgs(f80, -nan(f80), -tmin(f80));
27488240 try testArgs(f80, -nan(f80), -0.0);
27498241 try testArgs(f80, -nan(f80), 0.0);
27508242 try testArgs(f80, -nan(f80), tmin(f80));
27518243 try testArgs(f80, -nan(f80), fmin(f80));
2752 try testArgs(f80, -nan(f80), 0.1);
2753 try testArgs(f80, -nan(f80), 1.0);
2754 try testArgs(f80, -nan(f80), 10.0);
8244 try testArgs(f80, -nan(f80), 1e-1);
8245 try testArgs(f80, -nan(f80), 1e0);
8246 try testArgs(f80, -nan(f80), 1e1);
27558247 try testArgs(f80, -nan(f80), fmax(f80));
27568248 try testArgs(f80, -nan(f80), inf(f80));
27578249 try testArgs(f80, -nan(f80), nan(f80));
......@@ -2759,18 +8251,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
27598251 try testArgs(f80, -inf(f80), -nan(f80));
27608252 try testArgs(f80, -inf(f80), -inf(f80));
27618253 try testArgs(f80, -inf(f80), -fmax(f80));
2762 try testArgs(f80, -inf(f80), -10.0);
2763 try testArgs(f80, -inf(f80), -1.0);
2764 try testArgs(f80, -inf(f80), -0.1);
8254 try testArgs(f80, -inf(f80), -1e1);
8255 try testArgs(f80, -inf(f80), -1e0);
8256 try testArgs(f80, -inf(f80), -1e-1);
27658257 try testArgs(f80, -inf(f80), -fmin(f80));
27668258 try testArgs(f80, -inf(f80), -tmin(f80));
27678259 try testArgs(f80, -inf(f80), -0.0);
27688260 try testArgs(f80, -inf(f80), 0.0);
27698261 try testArgs(f80, -inf(f80), tmin(f80));
27708262 try testArgs(f80, -inf(f80), fmin(f80));
2771 try testArgs(f80, -inf(f80), 0.1);
2772 try testArgs(f80, -inf(f80), 1.0);
2773 try testArgs(f80, -inf(f80), 10.0);
8263 try testArgs(f80, -inf(f80), 1e-1);
8264 try testArgs(f80, -inf(f80), 1e0);
8265 try testArgs(f80, -inf(f80), 1e1);
27748266 try testArgs(f80, -inf(f80), fmax(f80));
27758267 try testArgs(f80, -inf(f80), inf(f80));
27768268 try testArgs(f80, -inf(f80), nan(f80));
......@@ -2778,94 +8270,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
27788270 try testArgs(f80, -fmax(f80), -nan(f80));
27798271 try testArgs(f80, -fmax(f80), -inf(f80));
27808272 try testArgs(f80, -fmax(f80), -fmax(f80));
2781 try testArgs(f80, -fmax(f80), -10.0);
2782 try testArgs(f80, -fmax(f80), -1.0);
2783 try testArgs(f80, -fmax(f80), -0.1);
8273 try testArgs(f80, -fmax(f80), -1e1);
8274 try testArgs(f80, -fmax(f80), -1e0);
8275 try testArgs(f80, -fmax(f80), -1e-1);
27848276 try testArgs(f80, -fmax(f80), -fmin(f80));
27858277 try testArgs(f80, -fmax(f80), -tmin(f80));
27868278 try testArgs(f80, -fmax(f80), -0.0);
27878279 try testArgs(f80, -fmax(f80), 0.0);
27888280 try testArgs(f80, -fmax(f80), tmin(f80));
27898281 try testArgs(f80, -fmax(f80), fmin(f80));
2790 try testArgs(f80, -fmax(f80), 0.1);
2791 try testArgs(f80, -fmax(f80), 1.0);
2792 try testArgs(f80, -fmax(f80), 10.0);
8282 try testArgs(f80, -fmax(f80), 1e-1);
8283 try testArgs(f80, -fmax(f80), 1e0);
8284 try testArgs(f80, -fmax(f80), 1e1);
27938285 try testArgs(f80, -fmax(f80), fmax(f80));
27948286 try testArgs(f80, -fmax(f80), inf(f80));
27958287 try testArgs(f80, -fmax(f80), nan(f80));
27968288
2797 try testArgs(f80, -10.0, -nan(f80));
2798 try testArgs(f80, -10.0, -inf(f80));
2799 try testArgs(f80, -10.0, -fmax(f80));
2800 try testArgs(f80, -10.0, -10.0);
2801 try testArgs(f80, -10.0, -1.0);
2802 try testArgs(f80, -10.0, -0.1);
2803 try testArgs(f80, -10.0, -fmin(f80));
2804 try testArgs(f80, -10.0, -tmin(f80));
2805 try testArgs(f80, -10.0, -0.0);
2806 try testArgs(f80, -10.0, 0.0);
2807 try testArgs(f80, -10.0, tmin(f80));
2808 try testArgs(f80, -10.0, fmin(f80));
2809 try testArgs(f80, -10.0, 0.1);
2810 try testArgs(f80, -10.0, 1.0);
2811 try testArgs(f80, -10.0, 10.0);
2812 try testArgs(f80, -10.0, fmax(f80));
2813 try testArgs(f80, -10.0, inf(f80));
2814 try testArgs(f80, -10.0, nan(f80));
2815
2816 try testArgs(f80, -1.0, -nan(f80));
2817 try testArgs(f80, -1.0, -inf(f80));
2818 try testArgs(f80, -1.0, -fmax(f80));
2819 try testArgs(f80, -1.0, -10.0);
2820 try testArgs(f80, -1.0, -1.0);
2821 try testArgs(f80, -1.0, -0.1);
2822 try testArgs(f80, -1.0, -fmin(f80));
2823 try testArgs(f80, -1.0, -tmin(f80));
2824 try testArgs(f80, -1.0, -0.0);
2825 try testArgs(f80, -1.0, 0.0);
2826 try testArgs(f80, -1.0, tmin(f80));
2827 try testArgs(f80, -1.0, fmin(f80));
2828 try testArgs(f80, -1.0, 0.1);
2829 try testArgs(f80, -1.0, 1.0);
2830 try testArgs(f80, -1.0, 10.0);
2831 try testArgs(f80, -1.0, fmax(f80));
2832 try testArgs(f80, -1.0, inf(f80));
2833 try testArgs(f80, -1.0, nan(f80));
2834
2835 try testArgs(f80, -0.1, -nan(f80));
2836 try testArgs(f80, -0.1, -inf(f80));
2837 try testArgs(f80, -0.1, -fmax(f80));
2838 try testArgs(f80, -0.1, -10.0);
2839 try testArgs(f80, -0.1, -1.0);
2840 try testArgs(f80, -0.1, -0.1);
2841 try testArgs(f80, -0.1, -fmin(f80));
2842 try testArgs(f80, -0.1, -tmin(f80));
2843 try testArgs(f80, -0.1, -0.0);
2844 try testArgs(f80, -0.1, 0.0);
2845 try testArgs(f80, -0.1, tmin(f80));
2846 try testArgs(f80, -0.1, fmin(f80));
2847 try testArgs(f80, -0.1, 0.1);
2848 try testArgs(f80, -0.1, 1.0);
2849 try testArgs(f80, -0.1, 10.0);
2850 try testArgs(f80, -0.1, fmax(f80));
2851 try testArgs(f80, -0.1, inf(f80));
2852 try testArgs(f80, -0.1, nan(f80));
8289 try testArgs(f80, -1e1, -nan(f80));
8290 try testArgs(f80, -1e1, -inf(f80));
8291 try testArgs(f80, -1e1, -fmax(f80));
8292 try testArgs(f80, -1e1, -1e1);
8293 try testArgs(f80, -1e1, -1e0);
8294 try testArgs(f80, -1e1, -1e-1);
8295 try testArgs(f80, -1e1, -fmin(f80));
8296 try testArgs(f80, -1e1, -tmin(f80));
8297 try testArgs(f80, -1e1, -0.0);
8298 try testArgs(f80, -1e1, 0.0);
8299 try testArgs(f80, -1e1, tmin(f80));
8300 try testArgs(f80, -1e1, fmin(f80));
8301 try testArgs(f80, -1e1, 1e-1);
8302 try testArgs(f80, -1e1, 1e0);
8303 try testArgs(f80, -1e1, 1e1);
8304 try testArgs(f80, -1e1, fmax(f80));
8305 try testArgs(f80, -1e1, inf(f80));
8306 try testArgs(f80, -1e1, nan(f80));
8307
8308 try testArgs(f80, -1e0, -nan(f80));
8309 try testArgs(f80, -1e0, -inf(f80));
8310 try testArgs(f80, -1e0, -fmax(f80));
8311 try testArgs(f80, -1e0, -1e1);
8312 try testArgs(f80, -1e0, -1e0);
8313 try testArgs(f80, -1e0, -1e-1);
8314 try testArgs(f80, -1e0, -fmin(f80));
8315 try testArgs(f80, -1e0, -tmin(f80));
8316 try testArgs(f80, -1e0, -0.0);
8317 try testArgs(f80, -1e0, 0.0);
8318 try testArgs(f80, -1e0, tmin(f80));
8319 try testArgs(f80, -1e0, fmin(f80));
8320 try testArgs(f80, -1e0, 1e-1);
8321 try testArgs(f80, -1e0, 1e0);
8322 try testArgs(f80, -1e0, 1e1);
8323 try testArgs(f80, -1e0, fmax(f80));
8324 try testArgs(f80, -1e0, inf(f80));
8325 try testArgs(f80, -1e0, nan(f80));
8326
8327 try testArgs(f80, -1e-1, -nan(f80));
8328 try testArgs(f80, -1e-1, -inf(f80));
8329 try testArgs(f80, -1e-1, -fmax(f80));
8330 try testArgs(f80, -1e-1, -1e1);
8331 try testArgs(f80, -1e-1, -1e0);
8332 try testArgs(f80, -1e-1, -1e-1);
8333 try testArgs(f80, -1e-1, -fmin(f80));
8334 try testArgs(f80, -1e-1, -tmin(f80));
8335 try testArgs(f80, -1e-1, -0.0);
8336 try testArgs(f80, -1e-1, 0.0);
8337 try testArgs(f80, -1e-1, tmin(f80));
8338 try testArgs(f80, -1e-1, fmin(f80));
8339 try testArgs(f80, -1e-1, 1e-1);
8340 try testArgs(f80, -1e-1, 1e0);
8341 try testArgs(f80, -1e-1, 1e1);
8342 try testArgs(f80, -1e-1, fmax(f80));
8343 try testArgs(f80, -1e-1, inf(f80));
8344 try testArgs(f80, -1e-1, nan(f80));
28538345
28548346 try testArgs(f80, -fmin(f80), -nan(f80));
28558347 try testArgs(f80, -fmin(f80), -inf(f80));
28568348 try testArgs(f80, -fmin(f80), -fmax(f80));
2857 try testArgs(f80, -fmin(f80), -10.0);
2858 try testArgs(f80, -fmin(f80), -1.0);
2859 try testArgs(f80, -fmin(f80), -0.1);
8349 try testArgs(f80, -fmin(f80), -1e1);
8350 try testArgs(f80, -fmin(f80), -1e0);
8351 try testArgs(f80, -fmin(f80), -1e-1);
28608352 try testArgs(f80, -fmin(f80), -fmin(f80));
28618353 try testArgs(f80, -fmin(f80), -tmin(f80));
28628354 try testArgs(f80, -fmin(f80), -0.0);
28638355 try testArgs(f80, -fmin(f80), 0.0);
28648356 try testArgs(f80, -fmin(f80), tmin(f80));
28658357 try testArgs(f80, -fmin(f80), fmin(f80));
2866 try testArgs(f80, -fmin(f80), 0.1);
2867 try testArgs(f80, -fmin(f80), 1.0);
2868 try testArgs(f80, -fmin(f80), 10.0);
8358 try testArgs(f80, -fmin(f80), 1e-1);
8359 try testArgs(f80, -fmin(f80), 1e0);
8360 try testArgs(f80, -fmin(f80), 1e1);
28698361 try testArgs(f80, -fmin(f80), fmax(f80));
28708362 try testArgs(f80, -fmin(f80), inf(f80));
28718363 try testArgs(f80, -fmin(f80), nan(f80));
......@@ -2873,18 +8365,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
28738365 try testArgs(f80, -tmin(f80), -nan(f80));
28748366 try testArgs(f80, -tmin(f80), -inf(f80));
28758367 try testArgs(f80, -tmin(f80), -fmax(f80));
2876 try testArgs(f80, -tmin(f80), -10.0);
2877 try testArgs(f80, -tmin(f80), -1.0);
2878 try testArgs(f80, -tmin(f80), -0.1);
8368 try testArgs(f80, -tmin(f80), -1e1);
8369 try testArgs(f80, -tmin(f80), -1e0);
8370 try testArgs(f80, -tmin(f80), -1e-1);
28798371 try testArgs(f80, -tmin(f80), -fmin(f80));
28808372 try testArgs(f80, -tmin(f80), -tmin(f80));
28818373 try testArgs(f80, -tmin(f80), -0.0);
28828374 try testArgs(f80, -tmin(f80), 0.0);
28838375 try testArgs(f80, -tmin(f80), tmin(f80));
28848376 try testArgs(f80, -tmin(f80), fmin(f80));
2885 try testArgs(f80, -tmin(f80), 0.1);
2886 try testArgs(f80, -tmin(f80), 1.0);
2887 try testArgs(f80, -tmin(f80), 10.0);
8377 try testArgs(f80, -tmin(f80), 1e-1);
8378 try testArgs(f80, -tmin(f80), 1e0);
8379 try testArgs(f80, -tmin(f80), 1e1);
28888380 try testArgs(f80, -tmin(f80), fmax(f80));
28898381 try testArgs(f80, -tmin(f80), inf(f80));
28908382 try testArgs(f80, -tmin(f80), nan(f80));
......@@ -2892,18 +8384,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
28928384 try testArgs(f80, -0.0, -nan(f80));
28938385 try testArgs(f80, -0.0, -inf(f80));
28948386 try testArgs(f80, -0.0, -fmax(f80));
2895 try testArgs(f80, -0.0, -10.0);
2896 try testArgs(f80, -0.0, -1.0);
2897 try testArgs(f80, -0.0, -0.1);
8387 try testArgs(f80, -0.0, -1e1);
8388 try testArgs(f80, -0.0, -1e0);
8389 try testArgs(f80, -0.0, -1e-1);
28988390 try testArgs(f80, -0.0, -fmin(f80));
28998391 try testArgs(f80, -0.0, -tmin(f80));
29008392 try testArgs(f80, -0.0, -0.0);
29018393 try testArgs(f80, -0.0, 0.0);
29028394 try testArgs(f80, -0.0, tmin(f80));
29038395 try testArgs(f80, -0.0, fmin(f80));
2904 try testArgs(f80, -0.0, 0.1);
2905 try testArgs(f80, -0.0, 1.0);
2906 try testArgs(f80, -0.0, 10.0);
8396 try testArgs(f80, -0.0, 1e-1);
8397 try testArgs(f80, -0.0, 1e0);
8398 try testArgs(f80, -0.0, 1e1);
29078399 try testArgs(f80, -0.0, fmax(f80));
29088400 try testArgs(f80, -0.0, inf(f80));
29098401 try testArgs(f80, -0.0, nan(f80));
......@@ -2911,18 +8403,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
29118403 try testArgs(f80, 0.0, -nan(f80));
29128404 try testArgs(f80, 0.0, -inf(f80));
29138405 try testArgs(f80, 0.0, -fmax(f80));
2914 try testArgs(f80, 0.0, -10.0);
2915 try testArgs(f80, 0.0, -1.0);
2916 try testArgs(f80, 0.0, -0.1);
8406 try testArgs(f80, 0.0, -1e1);
8407 try testArgs(f80, 0.0, -1e0);
8408 try testArgs(f80, 0.0, -1e-1);
29178409 try testArgs(f80, 0.0, -fmin(f80));
29188410 try testArgs(f80, 0.0, -tmin(f80));
29198411 try testArgs(f80, 0.0, -0.0);
29208412 try testArgs(f80, 0.0, 0.0);
29218413 try testArgs(f80, 0.0, tmin(f80));
29228414 try testArgs(f80, 0.0, fmin(f80));
2923 try testArgs(f80, 0.0, 0.1);
2924 try testArgs(f80, 0.0, 1.0);
2925 try testArgs(f80, 0.0, 10.0);
8415 try testArgs(f80, 0.0, 1e-1);
8416 try testArgs(f80, 0.0, 1e0);
8417 try testArgs(f80, 0.0, 1e1);
29268418 try testArgs(f80, 0.0, fmax(f80));
29278419 try testArgs(f80, 0.0, inf(f80));
29288420 try testArgs(f80, 0.0, nan(f80));
......@@ -2930,18 +8422,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
29308422 try testArgs(f80, tmin(f80), -nan(f80));
29318423 try testArgs(f80, tmin(f80), -inf(f80));
29328424 try testArgs(f80, tmin(f80), -fmax(f80));
2933 try testArgs(f80, tmin(f80), -10.0);
2934 try testArgs(f80, tmin(f80), -1.0);
2935 try testArgs(f80, tmin(f80), -0.1);
8425 try testArgs(f80, tmin(f80), -1e1);
8426 try testArgs(f80, tmin(f80), -1e0);
8427 try testArgs(f80, tmin(f80), -1e-1);
29368428 try testArgs(f80, tmin(f80), -fmin(f80));
29378429 try testArgs(f80, tmin(f80), -tmin(f80));
29388430 try testArgs(f80, tmin(f80), -0.0);
29398431 try testArgs(f80, tmin(f80), 0.0);
29408432 try testArgs(f80, tmin(f80), tmin(f80));
29418433 try testArgs(f80, tmin(f80), fmin(f80));
2942 try testArgs(f80, tmin(f80), 0.1);
2943 try testArgs(f80, tmin(f80), 1.0);
2944 try testArgs(f80, tmin(f80), 10.0);
8434 try testArgs(f80, tmin(f80), 1e-1);
8435 try testArgs(f80, tmin(f80), 1e0);
8436 try testArgs(f80, tmin(f80), 1e1);
29458437 try testArgs(f80, tmin(f80), fmax(f80));
29468438 try testArgs(f80, tmin(f80), inf(f80));
29478439 try testArgs(f80, tmin(f80), nan(f80));
......@@ -2949,94 +8441,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
29498441 try testArgs(f80, fmin(f80), -nan(f80));
29508442 try testArgs(f80, fmin(f80), -inf(f80));
29518443 try testArgs(f80, fmin(f80), -fmax(f80));
2952 try testArgs(f80, fmin(f80), -10.0);
2953 try testArgs(f80, fmin(f80), -1.0);
2954 try testArgs(f80, fmin(f80), -0.1);
8444 try testArgs(f80, fmin(f80), -1e1);
8445 try testArgs(f80, fmin(f80), -1e0);
8446 try testArgs(f80, fmin(f80), -1e-1);
29558447 try testArgs(f80, fmin(f80), -fmin(f80));
29568448 try testArgs(f80, fmin(f80), -tmin(f80));
29578449 try testArgs(f80, fmin(f80), -0.0);
29588450 try testArgs(f80, fmin(f80), 0.0);
29598451 try testArgs(f80, fmin(f80), tmin(f80));
29608452 try testArgs(f80, fmin(f80), fmin(f80));
2961 try testArgs(f80, fmin(f80), 0.1);
2962 try testArgs(f80, fmin(f80), 1.0);
2963 try testArgs(f80, fmin(f80), 10.0);
8453 try testArgs(f80, fmin(f80), 1e-1);
8454 try testArgs(f80, fmin(f80), 1e0);
8455 try testArgs(f80, fmin(f80), 1e1);
29648456 try testArgs(f80, fmin(f80), fmax(f80));
29658457 try testArgs(f80, fmin(f80), inf(f80));
29668458 try testArgs(f80, fmin(f80), nan(f80));
29678459
2968 try testArgs(f80, 0.1, -nan(f80));
2969 try testArgs(f80, 0.1, -inf(f80));
2970 try testArgs(f80, 0.1, -fmax(f80));
2971 try testArgs(f80, 0.1, -10.0);
2972 try testArgs(f80, 0.1, -1.0);
2973 try testArgs(f80, 0.1, -0.1);
2974 try testArgs(f80, 0.1, -fmin(f80));
2975 try testArgs(f80, 0.1, -tmin(f80));
2976 try testArgs(f80, 0.1, -0.0);
2977 try testArgs(f80, 0.1, 0.0);
2978 try testArgs(f80, 0.1, tmin(f80));
2979 try testArgs(f80, 0.1, fmin(f80));
2980 try testArgs(f80, 0.1, 0.1);
2981 try testArgs(f80, 0.1, 1.0);
2982 try testArgs(f80, 0.1, 10.0);
2983 try testArgs(f80, 0.1, fmax(f80));
2984 try testArgs(f80, 0.1, inf(f80));
2985 try testArgs(f80, 0.1, nan(f80));
2986
2987 try testArgs(f80, 1.0, -nan(f80));
2988 try testArgs(f80, 1.0, -inf(f80));
2989 try testArgs(f80, 1.0, -fmax(f80));
2990 try testArgs(f80, 1.0, -10.0);
2991 try testArgs(f80, 1.0, -1.0);
2992 try testArgs(f80, 1.0, -0.1);
2993 try testArgs(f80, 1.0, -fmin(f80));
2994 try testArgs(f80, 1.0, -tmin(f80));
2995 try testArgs(f80, 1.0, -0.0);
2996 try testArgs(f80, 1.0, 0.0);
2997 try testArgs(f80, 1.0, tmin(f80));
2998 try testArgs(f80, 1.0, fmin(f80));
2999 try testArgs(f80, 1.0, 0.1);
3000 try testArgs(f80, 1.0, 1.0);
3001 try testArgs(f80, 1.0, 10.0);
3002 try testArgs(f80, 1.0, fmax(f80));
3003 try testArgs(f80, 1.0, inf(f80));
3004 try testArgs(f80, 1.0, nan(f80));
3005
3006 try testArgs(f80, 10.0, -nan(f80));
3007 try testArgs(f80, 10.0, -inf(f80));
3008 try testArgs(f80, 10.0, -fmax(f80));
3009 try testArgs(f80, 10.0, -10.0);
3010 try testArgs(f80, 10.0, -1.0);
3011 try testArgs(f80, 10.0, -0.1);
3012 try testArgs(f80, 10.0, -fmin(f80));
3013 try testArgs(f80, 10.0, -tmin(f80));
3014 try testArgs(f80, 10.0, -0.0);
3015 try testArgs(f80, 10.0, 0.0);
3016 try testArgs(f80, 10.0, tmin(f80));
3017 try testArgs(f80, 10.0, fmin(f80));
3018 try testArgs(f80, 10.0, 0.1);
3019 try testArgs(f80, 10.0, 1.0);
3020 try testArgs(f80, 10.0, 10.0);
3021 try testArgs(f80, 10.0, fmax(f80));
3022 try testArgs(f80, 10.0, inf(f80));
3023 try testArgs(f80, 10.0, nan(f80));
8460 try testArgs(f80, 1e-1, -nan(f80));
8461 try testArgs(f80, 1e-1, -inf(f80));
8462 try testArgs(f80, 1e-1, -fmax(f80));
8463 try testArgs(f80, 1e-1, -1e1);
8464 try testArgs(f80, 1e-1, -1e0);
8465 try testArgs(f80, 1e-1, -1e-1);
8466 try testArgs(f80, 1e-1, -fmin(f80));
8467 try testArgs(f80, 1e-1, -tmin(f80));
8468 try testArgs(f80, 1e-1, -0.0);
8469 try testArgs(f80, 1e-1, 0.0);
8470 try testArgs(f80, 1e-1, tmin(f80));
8471 try testArgs(f80, 1e-1, fmin(f80));
8472 try testArgs(f80, 1e-1, 1e-1);
8473 try testArgs(f80, 1e-1, 1e0);
8474 try testArgs(f80, 1e-1, 1e1);
8475 try testArgs(f80, 1e-1, fmax(f80));
8476 try testArgs(f80, 1e-1, inf(f80));
8477 try testArgs(f80, 1e-1, nan(f80));
8478
8479 try testArgs(f80, 1e0, -nan(f80));
8480 try testArgs(f80, 1e0, -inf(f80));
8481 try testArgs(f80, 1e0, -fmax(f80));
8482 try testArgs(f80, 1e0, -1e1);
8483 try testArgs(f80, 1e0, -1e0);
8484 try testArgs(f80, 1e0, -1e-1);
8485 try testArgs(f80, 1e0, -fmin(f80));
8486 try testArgs(f80, 1e0, -tmin(f80));
8487 try testArgs(f80, 1e0, -0.0);
8488 try testArgs(f80, 1e0, 0.0);
8489 try testArgs(f80, 1e0, tmin(f80));
8490 try testArgs(f80, 1e0, fmin(f80));
8491 try testArgs(f80, 1e0, 1e-1);
8492 try testArgs(f80, 1e0, 1e0);
8493 try testArgs(f80, 1e0, 1e1);
8494 try testArgs(f80, 1e0, fmax(f80));
8495 try testArgs(f80, 1e0, inf(f80));
8496 try testArgs(f80, 1e0, nan(f80));
8497
8498 try testArgs(f80, 1e1, -nan(f80));
8499 try testArgs(f80, 1e1, -inf(f80));
8500 try testArgs(f80, 1e1, -fmax(f80));
8501 try testArgs(f80, 1e1, -1e1);
8502 try testArgs(f80, 1e1, -1e0);
8503 try testArgs(f80, 1e1, -1e-1);
8504 try testArgs(f80, 1e1, -fmin(f80));
8505 try testArgs(f80, 1e1, -tmin(f80));
8506 try testArgs(f80, 1e1, -0.0);
8507 try testArgs(f80, 1e1, 0.0);
8508 try testArgs(f80, 1e1, tmin(f80));
8509 try testArgs(f80, 1e1, fmin(f80));
8510 try testArgs(f80, 1e1, 1e-1);
8511 try testArgs(f80, 1e1, 1e0);
8512 try testArgs(f80, 1e1, 1e1);
8513 try testArgs(f80, 1e1, fmax(f80));
8514 try testArgs(f80, 1e1, inf(f80));
8515 try testArgs(f80, 1e1, nan(f80));
30248516
30258517 try testArgs(f80, fmax(f80), -nan(f80));
30268518 try testArgs(f80, fmax(f80), -inf(f80));
30278519 try testArgs(f80, fmax(f80), -fmax(f80));
3028 try testArgs(f80, fmax(f80), -10.0);
3029 try testArgs(f80, fmax(f80), -1.0);
3030 try testArgs(f80, fmax(f80), -0.1);
8520 try testArgs(f80, fmax(f80), -1e1);
8521 try testArgs(f80, fmax(f80), -1e0);
8522 try testArgs(f80, fmax(f80), -1e-1);
30318523 try testArgs(f80, fmax(f80), -fmin(f80));
30328524 try testArgs(f80, fmax(f80), -tmin(f80));
30338525 try testArgs(f80, fmax(f80), -0.0);
30348526 try testArgs(f80, fmax(f80), 0.0);
30358527 try testArgs(f80, fmax(f80), tmin(f80));
30368528 try testArgs(f80, fmax(f80), fmin(f80));
3037 try testArgs(f80, fmax(f80), 0.1);
3038 try testArgs(f80, fmax(f80), 1.0);
3039 try testArgs(f80, fmax(f80), 10.0);
8529 try testArgs(f80, fmax(f80), 1e-1);
8530 try testArgs(f80, fmax(f80), 1e0);
8531 try testArgs(f80, fmax(f80), 1e1);
30408532 try testArgs(f80, fmax(f80), fmax(f80));
30418533 try testArgs(f80, fmax(f80), inf(f80));
30428534 try testArgs(f80, fmax(f80), nan(f80));
......@@ -3044,18 +8536,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
30448536 try testArgs(f80, inf(f80), -nan(f80));
30458537 try testArgs(f80, inf(f80), -inf(f80));
30468538 try testArgs(f80, inf(f80), -fmax(f80));
3047 try testArgs(f80, inf(f80), -10.0);
3048 try testArgs(f80, inf(f80), -1.0);
3049 try testArgs(f80, inf(f80), -0.1);
8539 try testArgs(f80, inf(f80), -1e1);
8540 try testArgs(f80, inf(f80), -1e0);
8541 try testArgs(f80, inf(f80), -1e-1);
30508542 try testArgs(f80, inf(f80), -fmin(f80));
30518543 try testArgs(f80, inf(f80), -tmin(f80));
30528544 try testArgs(f80, inf(f80), -0.0);
30538545 try testArgs(f80, inf(f80), 0.0);
30548546 try testArgs(f80, inf(f80), tmin(f80));
30558547 try testArgs(f80, inf(f80), fmin(f80));
3056 try testArgs(f80, inf(f80), 0.1);
3057 try testArgs(f80, inf(f80), 1.0);
3058 try testArgs(f80, inf(f80), 10.0);
8548 try testArgs(f80, inf(f80), 1e-1);
8549 try testArgs(f80, inf(f80), 1e0);
8550 try testArgs(f80, inf(f80), 1e1);
30598551 try testArgs(f80, inf(f80), fmax(f80));
30608552 try testArgs(f80, inf(f80), inf(f80));
30618553 try testArgs(f80, inf(f80), nan(f80));
......@@ -3063,18 +8555,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
30638555 try testArgs(f80, nan(f80), -nan(f80));
30648556 try testArgs(f80, nan(f80), -inf(f80));
30658557 try testArgs(f80, nan(f80), -fmax(f80));
3066 try testArgs(f80, nan(f80), -10.0);
3067 try testArgs(f80, nan(f80), -1.0);
3068 try testArgs(f80, nan(f80), -0.1);
8558 try testArgs(f80, nan(f80), -1e1);
8559 try testArgs(f80, nan(f80), -1e0);
8560 try testArgs(f80, nan(f80), -1e-1);
30698561 try testArgs(f80, nan(f80), -fmin(f80));
30708562 try testArgs(f80, nan(f80), -tmin(f80));
30718563 try testArgs(f80, nan(f80), -0.0);
30728564 try testArgs(f80, nan(f80), 0.0);
30738565 try testArgs(f80, nan(f80), tmin(f80));
30748566 try testArgs(f80, nan(f80), fmin(f80));
3075 try testArgs(f80, nan(f80), 0.1);
3076 try testArgs(f80, nan(f80), 1.0);
3077 try testArgs(f80, nan(f80), 10.0);
8567 try testArgs(f80, nan(f80), 1e-1);
8568 try testArgs(f80, nan(f80), 1e0);
8569 try testArgs(f80, nan(f80), 1e1);
30788570 try testArgs(f80, nan(f80), fmax(f80));
30798571 try testArgs(f80, nan(f80), inf(f80));
30808572 try testArgs(f80, nan(f80), nan(f80));
......@@ -3082,18 +8574,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
30828574 try testArgs(f128, -nan(f128), -nan(f128));
30838575 try testArgs(f128, -nan(f128), -inf(f128));
30848576 try testArgs(f128, -nan(f128), -fmax(f128));
3085 try testArgs(f128, -nan(f128), -10.0);
3086 try testArgs(f128, -nan(f128), -1.0);
3087 try testArgs(f128, -nan(f128), -0.1);
8577 try testArgs(f128, -nan(f128), -1e1);
8578 try testArgs(f128, -nan(f128), -1e0);
8579 try testArgs(f128, -nan(f128), -1e-1);
30888580 try testArgs(f128, -nan(f128), -fmin(f128));
30898581 try testArgs(f128, -nan(f128), -tmin(f128));
30908582 try testArgs(f128, -nan(f128), -0.0);
30918583 try testArgs(f128, -nan(f128), 0.0);
30928584 try testArgs(f128, -nan(f128), tmin(f128));
30938585 try testArgs(f128, -nan(f128), fmin(f128));
3094 try testArgs(f128, -nan(f128), 0.1);
3095 try testArgs(f128, -nan(f128), 1.0);
3096 try testArgs(f128, -nan(f128), 10.0);
8586 try testArgs(f128, -nan(f128), 1e-1);
8587 try testArgs(f128, -nan(f128), 1e0);
8588 try testArgs(f128, -nan(f128), 1e1);
30978589 try testArgs(f128, -nan(f128), fmax(f128));
30988590 try testArgs(f128, -nan(f128), inf(f128));
30998591 try testArgs(f128, -nan(f128), nan(f128));
......@@ -3101,18 +8593,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
31018593 try testArgs(f128, -inf(f128), -nan(f128));
31028594 try testArgs(f128, -inf(f128), -inf(f128));
31038595 try testArgs(f128, -inf(f128), -fmax(f128));
3104 try testArgs(f128, -inf(f128), -10.0);
3105 try testArgs(f128, -inf(f128), -1.0);
3106 try testArgs(f128, -inf(f128), -0.1);
8596 try testArgs(f128, -inf(f128), -1e1);
8597 try testArgs(f128, -inf(f128), -1e0);
8598 try testArgs(f128, -inf(f128), -1e-1);
31078599 try testArgs(f128, -inf(f128), -fmin(f128));
31088600 try testArgs(f128, -inf(f128), -tmin(f128));
31098601 try testArgs(f128, -inf(f128), -0.0);
31108602 try testArgs(f128, -inf(f128), 0.0);
31118603 try testArgs(f128, -inf(f128), tmin(f128));
31128604 try testArgs(f128, -inf(f128), fmin(f128));
3113 try testArgs(f128, -inf(f128), 0.1);
3114 try testArgs(f128, -inf(f128), 1.0);
3115 try testArgs(f128, -inf(f128), 10.0);
8605 try testArgs(f128, -inf(f128), 1e-1);
8606 try testArgs(f128, -inf(f128), 1e0);
8607 try testArgs(f128, -inf(f128), 1e1);
31168608 try testArgs(f128, -inf(f128), fmax(f128));
31178609 try testArgs(f128, -inf(f128), inf(f128));
31188610 try testArgs(f128, -inf(f128), nan(f128));
......@@ -3120,94 +8612,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
31208612 try testArgs(f128, -fmax(f128), -nan(f128));
31218613 try testArgs(f128, -fmax(f128), -inf(f128));
31228614 try testArgs(f128, -fmax(f128), -fmax(f128));
3123 try testArgs(f128, -fmax(f128), -10.0);
3124 try testArgs(f128, -fmax(f128), -1.0);
3125 try testArgs(f128, -fmax(f128), -0.1);
8615 try testArgs(f128, -fmax(f128), -1e1);
8616 try testArgs(f128, -fmax(f128), -1e0);
8617 try testArgs(f128, -fmax(f128), -1e-1);
31268618 try testArgs(f128, -fmax(f128), -fmin(f128));
31278619 try testArgs(f128, -fmax(f128), -tmin(f128));
31288620 try testArgs(f128, -fmax(f128), -0.0);
31298621 try testArgs(f128, -fmax(f128), 0.0);
31308622 try testArgs(f128, -fmax(f128), tmin(f128));
31318623 try testArgs(f128, -fmax(f128), fmin(f128));
3132 try testArgs(f128, -fmax(f128), 0.1);
3133 try testArgs(f128, -fmax(f128), 1.0);
3134 try testArgs(f128, -fmax(f128), 10.0);
8624 try testArgs(f128, -fmax(f128), 1e-1);
8625 try testArgs(f128, -fmax(f128), 1e0);
8626 try testArgs(f128, -fmax(f128), 1e1);
31358627 try testArgs(f128, -fmax(f128), fmax(f128));
31368628 try testArgs(f128, -fmax(f128), inf(f128));
31378629 try testArgs(f128, -fmax(f128), nan(f128));
31388630
3139 try testArgs(f128, -10.0, -nan(f128));
3140 try testArgs(f128, -10.0, -inf(f128));
3141 try testArgs(f128, -10.0, -fmax(f128));
3142 try testArgs(f128, -10.0, -10.0);
3143 try testArgs(f128, -10.0, -1.0);
3144 try testArgs(f128, -10.0, -0.1);
3145 try testArgs(f128, -10.0, -fmin(f128));
3146 try testArgs(f128, -10.0, -tmin(f128));
3147 try testArgs(f128, -10.0, -0.0);
3148 try testArgs(f128, -10.0, 0.0);
3149 try testArgs(f128, -10.0, tmin(f128));
3150 try testArgs(f128, -10.0, fmin(f128));
3151 try testArgs(f128, -10.0, 0.1);
3152 try testArgs(f128, -10.0, 1.0);
3153 try testArgs(f128, -10.0, 10.0);
3154 try testArgs(f128, -10.0, fmax(f128));
3155 try testArgs(f128, -10.0, inf(f128));
3156 try testArgs(f128, -10.0, nan(f128));
3157
3158 try testArgs(f128, -1.0, -nan(f128));
3159 try testArgs(f128, -1.0, -inf(f128));
3160 try testArgs(f128, -1.0, -fmax(f128));
3161 try testArgs(f128, -1.0, -10.0);
3162 try testArgs(f128, -1.0, -1.0);
3163 try testArgs(f128, -1.0, -0.1);
3164 try testArgs(f128, -1.0, -fmin(f128));
3165 try testArgs(f128, -1.0, -tmin(f128));
3166 try testArgs(f128, -1.0, -0.0);
3167 try testArgs(f128, -1.0, 0.0);
3168 try testArgs(f128, -1.0, tmin(f128));
3169 try testArgs(f128, -1.0, fmin(f128));
3170 try testArgs(f128, -1.0, 0.1);
3171 try testArgs(f128, -1.0, 1.0);
3172 try testArgs(f128, -1.0, 10.0);
3173 try testArgs(f128, -1.0, fmax(f128));
3174 try testArgs(f128, -1.0, inf(f128));
3175 try testArgs(f128, -1.0, nan(f128));
3176
3177 try testArgs(f128, -0.1, -nan(f128));
3178 try testArgs(f128, -0.1, -inf(f128));
3179 try testArgs(f128, -0.1, -fmax(f128));
3180 try testArgs(f128, -0.1, -10.0);
3181 try testArgs(f128, -0.1, -1.0);
3182 try testArgs(f128, -0.1, -0.1);
3183 try testArgs(f128, -0.1, -fmin(f128));
3184 try testArgs(f128, -0.1, -tmin(f128));
3185 try testArgs(f128, -0.1, -0.0);
3186 try testArgs(f128, -0.1, 0.0);
3187 try testArgs(f128, -0.1, tmin(f128));
3188 try testArgs(f128, -0.1, fmin(f128));
3189 try testArgs(f128, -0.1, 0.1);
3190 try testArgs(f128, -0.1, 1.0);
3191 try testArgs(f128, -0.1, 10.0);
3192 try testArgs(f128, -0.1, fmax(f128));
3193 try testArgs(f128, -0.1, inf(f128));
3194 try testArgs(f128, -0.1, nan(f128));
8631 try testArgs(f128, -1e1, -nan(f128));
8632 try testArgs(f128, -1e1, -inf(f128));
8633 try testArgs(f128, -1e1, -fmax(f128));
8634 try testArgs(f128, -1e1, -1e1);
8635 try testArgs(f128, -1e1, -1e0);
8636 try testArgs(f128, -1e1, -1e-1);
8637 try testArgs(f128, -1e1, -fmin(f128));
8638 try testArgs(f128, -1e1, -tmin(f128));
8639 try testArgs(f128, -1e1, -0.0);
8640 try testArgs(f128, -1e1, 0.0);
8641 try testArgs(f128, -1e1, tmin(f128));
8642 try testArgs(f128, -1e1, fmin(f128));
8643 try testArgs(f128, -1e1, 1e-1);
8644 try testArgs(f128, -1e1, 1e0);
8645 try testArgs(f128, -1e1, 1e1);
8646 try testArgs(f128, -1e1, fmax(f128));
8647 try testArgs(f128, -1e1, inf(f128));
8648 try testArgs(f128, -1e1, nan(f128));
8649
8650 try testArgs(f128, -1e0, -nan(f128));
8651 try testArgs(f128, -1e0, -inf(f128));
8652 try testArgs(f128, -1e0, -fmax(f128));
8653 try testArgs(f128, -1e0, -1e1);
8654 try testArgs(f128, -1e0, -1e0);
8655 try testArgs(f128, -1e0, -1e-1);
8656 try testArgs(f128, -1e0, -fmin(f128));
8657 try testArgs(f128, -1e0, -tmin(f128));
8658 try testArgs(f128, -1e0, -0.0);
8659 try testArgs(f128, -1e0, 0.0);
8660 try testArgs(f128, -1e0, tmin(f128));
8661 try testArgs(f128, -1e0, fmin(f128));
8662 try testArgs(f128, -1e0, 1e-1);
8663 try testArgs(f128, -1e0, 1e0);
8664 try testArgs(f128, -1e0, 1e1);
8665 try testArgs(f128, -1e0, fmax(f128));
8666 try testArgs(f128, -1e0, inf(f128));
8667 try testArgs(f128, -1e0, nan(f128));
8668
8669 try testArgs(f128, -1e-1, -nan(f128));
8670 try testArgs(f128, -1e-1, -inf(f128));
8671 try testArgs(f128, -1e-1, -fmax(f128));
8672 try testArgs(f128, -1e-1, -1e1);
8673 try testArgs(f128, -1e-1, -1e0);
8674 try testArgs(f128, -1e-1, -1e-1);
8675 try testArgs(f128, -1e-1, -fmin(f128));
8676 try testArgs(f128, -1e-1, -tmin(f128));
8677 try testArgs(f128, -1e-1, -0.0);
8678 try testArgs(f128, -1e-1, 0.0);
8679 try testArgs(f128, -1e-1, tmin(f128));
8680 try testArgs(f128, -1e-1, fmin(f128));
8681 try testArgs(f128, -1e-1, 1e-1);
8682 try testArgs(f128, -1e-1, 1e0);
8683 try testArgs(f128, -1e-1, 1e1);
8684 try testArgs(f128, -1e-1, fmax(f128));
8685 try testArgs(f128, -1e-1, inf(f128));
8686 try testArgs(f128, -1e-1, nan(f128));
31958687
31968688 try testArgs(f128, -fmin(f128), -nan(f128));
31978689 try testArgs(f128, -fmin(f128), -inf(f128));
31988690 try testArgs(f128, -fmin(f128), -fmax(f128));
3199 try testArgs(f128, -fmin(f128), -10.0);
3200 try testArgs(f128, -fmin(f128), -1.0);
3201 try testArgs(f128, -fmin(f128), -0.1);
8691 try testArgs(f128, -fmin(f128), -1e1);
8692 try testArgs(f128, -fmin(f128), -1e0);
8693 try testArgs(f128, -fmin(f128), -1e-1);
32028694 try testArgs(f128, -fmin(f128), -fmin(f128));
32038695 try testArgs(f128, -fmin(f128), -tmin(f128));
32048696 try testArgs(f128, -fmin(f128), -0.0);
32058697 try testArgs(f128, -fmin(f128), 0.0);
32068698 try testArgs(f128, -fmin(f128), tmin(f128));
32078699 try testArgs(f128, -fmin(f128), fmin(f128));
3208 try testArgs(f128, -fmin(f128), 0.1);
3209 try testArgs(f128, -fmin(f128), 1.0);
3210 try testArgs(f128, -fmin(f128), 10.0);
8700 try testArgs(f128, -fmin(f128), 1e-1);
8701 try testArgs(f128, -fmin(f128), 1e0);
8702 try testArgs(f128, -fmin(f128), 1e1);
32118703 try testArgs(f128, -fmin(f128), fmax(f128));
32128704 try testArgs(f128, -fmin(f128), inf(f128));
32138705 try testArgs(f128, -fmin(f128), nan(f128));
......@@ -3215,18 +8707,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
32158707 try testArgs(f128, -tmin(f128), -nan(f128));
32168708 try testArgs(f128, -tmin(f128), -inf(f128));
32178709 try testArgs(f128, -tmin(f128), -fmax(f128));
3218 try testArgs(f128, -tmin(f128), -10.0);
3219 try testArgs(f128, -tmin(f128), -1.0);
3220 try testArgs(f128, -tmin(f128), -0.1);
8710 try testArgs(f128, -tmin(f128), -1e1);
8711 try testArgs(f128, -tmin(f128), -1e0);
8712 try testArgs(f128, -tmin(f128), -1e-1);
32218713 try testArgs(f128, -tmin(f128), -fmin(f128));
32228714 try testArgs(f128, -tmin(f128), -tmin(f128));
32238715 try testArgs(f128, -tmin(f128), -0.0);
32248716 try testArgs(f128, -tmin(f128), 0.0);
32258717 try testArgs(f128, -tmin(f128), tmin(f128));
32268718 try testArgs(f128, -tmin(f128), fmin(f128));
3227 try testArgs(f128, -tmin(f128), 0.1);
3228 try testArgs(f128, -tmin(f128), 1.0);
3229 try testArgs(f128, -tmin(f128), 10.0);
8719 try testArgs(f128, -tmin(f128), 1e-1);
8720 try testArgs(f128, -tmin(f128), 1e0);
8721 try testArgs(f128, -tmin(f128), 1e1);
32308722 try testArgs(f128, -tmin(f128), fmax(f128));
32318723 try testArgs(f128, -tmin(f128), inf(f128));
32328724 try testArgs(f128, -tmin(f128), nan(f128));
......@@ -3234,18 +8726,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
32348726 try testArgs(f128, -0.0, -nan(f128));
32358727 try testArgs(f128, -0.0, -inf(f128));
32368728 try testArgs(f128, -0.0, -fmax(f128));
3237 try testArgs(f128, -0.0, -10.0);
3238 try testArgs(f128, -0.0, -1.0);
3239 try testArgs(f128, -0.0, -0.1);
8729 try testArgs(f128, -0.0, -1e1);
8730 try testArgs(f128, -0.0, -1e0);
8731 try testArgs(f128, -0.0, -1e-1);
32408732 try testArgs(f128, -0.0, -fmin(f128));
32418733 try testArgs(f128, -0.0, -tmin(f128));
32428734 try testArgs(f128, -0.0, -0.0);
32438735 try testArgs(f128, -0.0, 0.0);
32448736 try testArgs(f128, -0.0, tmin(f128));
32458737 try testArgs(f128, -0.0, fmin(f128));
3246 try testArgs(f128, -0.0, 0.1);
3247 try testArgs(f128, -0.0, 1.0);
3248 try testArgs(f128, -0.0, 10.0);
8738 try testArgs(f128, -0.0, 1e-1);
8739 try testArgs(f128, -0.0, 1e0);
8740 try testArgs(f128, -0.0, 1e1);
32498741 try testArgs(f128, -0.0, fmax(f128));
32508742 try testArgs(f128, -0.0, inf(f128));
32518743 try testArgs(f128, -0.0, nan(f128));
......@@ -3253,18 +8745,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
32538745 try testArgs(f128, 0.0, -nan(f128));
32548746 try testArgs(f128, 0.0, -inf(f128));
32558747 try testArgs(f128, 0.0, -fmax(f128));
3256 try testArgs(f128, 0.0, -10.0);
3257 try testArgs(f128, 0.0, -1.0);
3258 try testArgs(f128, 0.0, -0.1);
8748 try testArgs(f128, 0.0, -1e1);
8749 try testArgs(f128, 0.0, -1e0);
8750 try testArgs(f128, 0.0, -1e-1);
32598751 try testArgs(f128, 0.0, -fmin(f128));
32608752 try testArgs(f128, 0.0, -tmin(f128));
32618753 try testArgs(f128, 0.0, -0.0);
32628754 try testArgs(f128, 0.0, 0.0);
32638755 try testArgs(f128, 0.0, tmin(f128));
32648756 try testArgs(f128, 0.0, fmin(f128));
3265 try testArgs(f128, 0.0, 0.1);
3266 try testArgs(f128, 0.0, 1.0);
3267 try testArgs(f128, 0.0, 10.0);
8757 try testArgs(f128, 0.0, 1e-1);
8758 try testArgs(f128, 0.0, 1e0);
8759 try testArgs(f128, 0.0, 1e1);
32688760 try testArgs(f128, 0.0, fmax(f128));
32698761 try testArgs(f128, 0.0, inf(f128));
32708762 try testArgs(f128, 0.0, nan(f128));
......@@ -3272,18 +8764,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
32728764 try testArgs(f128, tmin(f128), -nan(f128));
32738765 try testArgs(f128, tmin(f128), -inf(f128));
32748766 try testArgs(f128, tmin(f128), -fmax(f128));
3275 try testArgs(f128, tmin(f128), -10.0);
3276 try testArgs(f128, tmin(f128), -1.0);
3277 try testArgs(f128, tmin(f128), -0.1);
8767 try testArgs(f128, tmin(f128), -1e1);
8768 try testArgs(f128, tmin(f128), -1e0);
8769 try testArgs(f128, tmin(f128), -1e-1);
32788770 try testArgs(f128, tmin(f128), -fmin(f128));
32798771 try testArgs(f128, tmin(f128), -tmin(f128));
32808772 try testArgs(f128, tmin(f128), -0.0);
32818773 try testArgs(f128, tmin(f128), 0.0);
32828774 try testArgs(f128, tmin(f128), tmin(f128));
32838775 try testArgs(f128, tmin(f128), fmin(f128));
3284 try testArgs(f128, tmin(f128), 0.1);
3285 try testArgs(f128, tmin(f128), 1.0);
3286 try testArgs(f128, tmin(f128), 10.0);
8776 try testArgs(f128, tmin(f128), 1e-1);
8777 try testArgs(f128, tmin(f128), 1e0);
8778 try testArgs(f128, tmin(f128), 1e1);
32878779 try testArgs(f128, tmin(f128), fmax(f128));
32888780 try testArgs(f128, tmin(f128), inf(f128));
32898781 try testArgs(f128, tmin(f128), nan(f128));
......@@ -3291,94 +8783,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
32918783 try testArgs(f128, fmin(f128), -nan(f128));
32928784 try testArgs(f128, fmin(f128), -inf(f128));
32938785 try testArgs(f128, fmin(f128), -fmax(f128));
3294 try testArgs(f128, fmin(f128), -10.0);
3295 try testArgs(f128, fmin(f128), -1.0);
3296 try testArgs(f128, fmin(f128), -0.1);
8786 try testArgs(f128, fmin(f128), -1e1);
8787 try testArgs(f128, fmin(f128), -1e0);
8788 try testArgs(f128, fmin(f128), -1e-1);
32978789 try testArgs(f128, fmin(f128), -fmin(f128));
32988790 try testArgs(f128, fmin(f128), -tmin(f128));
32998791 try testArgs(f128, fmin(f128), -0.0);
33008792 try testArgs(f128, fmin(f128), 0.0);
33018793 try testArgs(f128, fmin(f128), tmin(f128));
33028794 try testArgs(f128, fmin(f128), fmin(f128));
3303 try testArgs(f128, fmin(f128), 0.1);
3304 try testArgs(f128, fmin(f128), 1.0);
3305 try testArgs(f128, fmin(f128), 10.0);
8795 try testArgs(f128, fmin(f128), 1e-1);
8796 try testArgs(f128, fmin(f128), 1e0);
8797 try testArgs(f128, fmin(f128), 1e1);
33068798 try testArgs(f128, fmin(f128), fmax(f128));
33078799 try testArgs(f128, fmin(f128), inf(f128));
33088800 try testArgs(f128, fmin(f128), nan(f128));
33098801
3310 try testArgs(f128, 0.1, -nan(f128));
3311 try testArgs(f128, 0.1, -inf(f128));
3312 try testArgs(f128, 0.1, -fmax(f128));
3313 try testArgs(f128, 0.1, -10.0);
3314 try testArgs(f128, 0.1, -1.0);
3315 try testArgs(f128, 0.1, -0.1);
3316 try testArgs(f128, 0.1, -fmin(f128));
3317 try testArgs(f128, 0.1, -tmin(f128));
3318 try testArgs(f128, 0.1, -0.0);
3319 try testArgs(f128, 0.1, 0.0);
3320 try testArgs(f128, 0.1, tmin(f128));
3321 try testArgs(f128, 0.1, fmin(f128));
3322 try testArgs(f128, 0.1, 0.1);
3323 try testArgs(f128, 0.1, 1.0);
3324 try testArgs(f128, 0.1, 10.0);
3325 try testArgs(f128, 0.1, fmax(f128));
3326 try testArgs(f128, 0.1, inf(f128));
3327 try testArgs(f128, 0.1, nan(f128));
3328
3329 try testArgs(f128, 1.0, -nan(f128));
3330 try testArgs(f128, 1.0, -inf(f128));
3331 try testArgs(f128, 1.0, -fmax(f128));
3332 try testArgs(f128, 1.0, -10.0);
3333 try testArgs(f128, 1.0, -1.0);
3334 try testArgs(f128, 1.0, -0.1);
3335 try testArgs(f128, 1.0, -fmin(f128));
3336 try testArgs(f128, 1.0, -tmin(f128));
3337 try testArgs(f128, 1.0, -0.0);
3338 try testArgs(f128, 1.0, 0.0);
3339 try testArgs(f128, 1.0, tmin(f128));
3340 try testArgs(f128, 1.0, fmin(f128));
3341 try testArgs(f128, 1.0, 0.1);
3342 try testArgs(f128, 1.0, 1.0);
3343 try testArgs(f128, 1.0, 10.0);
3344 try testArgs(f128, 1.0, fmax(f128));
3345 try testArgs(f128, 1.0, inf(f128));
3346 try testArgs(f128, 1.0, nan(f128));
3347
3348 try testArgs(f128, 10.0, -nan(f128));
3349 try testArgs(f128, 10.0, -inf(f128));
3350 try testArgs(f128, 10.0, -fmax(f128));
3351 try testArgs(f128, 10.0, -10.0);
3352 try testArgs(f128, 10.0, -1.0);
3353 try testArgs(f128, 10.0, -0.1);
3354 try testArgs(f128, 10.0, -fmin(f128));
3355 try testArgs(f128, 10.0, -tmin(f128));
3356 try testArgs(f128, 10.0, -0.0);
3357 try testArgs(f128, 10.0, 0.0);
3358 try testArgs(f128, 10.0, tmin(f128));
3359 try testArgs(f128, 10.0, fmin(f128));
3360 try testArgs(f128, 10.0, 0.1);
3361 try testArgs(f128, 10.0, 1.0);
3362 try testArgs(f128, 10.0, 10.0);
3363 try testArgs(f128, 10.0, fmax(f128));
3364 try testArgs(f128, 10.0, inf(f128));
3365 try testArgs(f128, 10.0, nan(f128));
8802 try testArgs(f128, 1e-1, -nan(f128));
8803 try testArgs(f128, 1e-1, -inf(f128));
8804 try testArgs(f128, 1e-1, -fmax(f128));
8805 try testArgs(f128, 1e-1, -1e1);
8806 try testArgs(f128, 1e-1, -1e0);
8807 try testArgs(f128, 1e-1, -1e-1);
8808 try testArgs(f128, 1e-1, -fmin(f128));
8809 try testArgs(f128, 1e-1, -tmin(f128));
8810 try testArgs(f128, 1e-1, -0.0);
8811 try testArgs(f128, 1e-1, 0.0);
8812 try testArgs(f128, 1e-1, tmin(f128));
8813 try testArgs(f128, 1e-1, fmin(f128));
8814 try testArgs(f128, 1e-1, 1e-1);
8815 try testArgs(f128, 1e-1, 1e0);
8816 try testArgs(f128, 1e-1, 1e1);
8817 try testArgs(f128, 1e-1, fmax(f128));
8818 try testArgs(f128, 1e-1, inf(f128));
8819 try testArgs(f128, 1e-1, nan(f128));
8820
8821 try testArgs(f128, 1e0, -nan(f128));
8822 try testArgs(f128, 1e0, -inf(f128));
8823 try testArgs(f128, 1e0, -fmax(f128));
8824 try testArgs(f128, 1e0, -1e1);
8825 try testArgs(f128, 1e0, -1e0);
8826 try testArgs(f128, 1e0, -1e-1);
8827 try testArgs(f128, 1e0, -fmin(f128));
8828 try testArgs(f128, 1e0, -tmin(f128));
8829 try testArgs(f128, 1e0, -0.0);
8830 try testArgs(f128, 1e0, 0.0);
8831 try testArgs(f128, 1e0, tmin(f128));
8832 try testArgs(f128, 1e0, fmin(f128));
8833 try testArgs(f128, 1e0, 1e-1);
8834 try testArgs(f128, 1e0, 1e0);
8835 try testArgs(f128, 1e0, 1e1);
8836 try testArgs(f128, 1e0, fmax(f128));
8837 try testArgs(f128, 1e0, inf(f128));
8838 try testArgs(f128, 1e0, nan(f128));
8839
8840 try testArgs(f128, 1e1, -nan(f128));
8841 try testArgs(f128, 1e1, -inf(f128));
8842 try testArgs(f128, 1e1, -fmax(f128));
8843 try testArgs(f128, 1e1, -1e1);
8844 try testArgs(f128, 1e1, -1e0);
8845 try testArgs(f128, 1e1, -1e-1);
8846 try testArgs(f128, 1e1, -fmin(f128));
8847 try testArgs(f128, 1e1, -tmin(f128));
8848 try testArgs(f128, 1e1, -0.0);
8849 try testArgs(f128, 1e1, 0.0);
8850 try testArgs(f128, 1e1, tmin(f128));
8851 try testArgs(f128, 1e1, fmin(f128));
8852 try testArgs(f128, 1e1, 1e-1);
8853 try testArgs(f128, 1e1, 1e0);
8854 try testArgs(f128, 1e1, 1e1);
8855 try testArgs(f128, 1e1, fmax(f128));
8856 try testArgs(f128, 1e1, inf(f128));
8857 try testArgs(f128, 1e1, nan(f128));
33668858
33678859 try testArgs(f128, fmax(f128), -nan(f128));
33688860 try testArgs(f128, fmax(f128), -inf(f128));
33698861 try testArgs(f128, fmax(f128), -fmax(f128));
3370 try testArgs(f128, fmax(f128), -10.0);
3371 try testArgs(f128, fmax(f128), -1.0);
3372 try testArgs(f128, fmax(f128), -0.1);
8862 try testArgs(f128, fmax(f128), -1e1);
8863 try testArgs(f128, fmax(f128), -1e0);
8864 try testArgs(f128, fmax(f128), -1e-1);
33738865 try testArgs(f128, fmax(f128), -fmin(f128));
33748866 try testArgs(f128, fmax(f128), -tmin(f128));
33758867 try testArgs(f128, fmax(f128), -0.0);
33768868 try testArgs(f128, fmax(f128), 0.0);
33778869 try testArgs(f128, fmax(f128), tmin(f128));
33788870 try testArgs(f128, fmax(f128), fmin(f128));
3379 try testArgs(f128, fmax(f128), 0.1);
3380 try testArgs(f128, fmax(f128), 1.0);
3381 try testArgs(f128, fmax(f128), 10.0);
8871 try testArgs(f128, fmax(f128), 1e-1);
8872 try testArgs(f128, fmax(f128), 1e0);
8873 try testArgs(f128, fmax(f128), 1e1);
33828874 try testArgs(f128, fmax(f128), fmax(f128));
33838875 try testArgs(f128, fmax(f128), inf(f128));
33848876 try testArgs(f128, fmax(f128), nan(f128));
......@@ -3386,18 +8878,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
33868878 try testArgs(f128, inf(f128), -nan(f128));
33878879 try testArgs(f128, inf(f128), -inf(f128));
33888880 try testArgs(f128, inf(f128), -fmax(f128));
3389 try testArgs(f128, inf(f128), -10.0);
3390 try testArgs(f128, inf(f128), -1.0);
3391 try testArgs(f128, inf(f128), -0.1);
8881 try testArgs(f128, inf(f128), -1e1);
8882 try testArgs(f128, inf(f128), -1e0);
8883 try testArgs(f128, inf(f128), -1e-1);
33928884 try testArgs(f128, inf(f128), -fmin(f128));
33938885 try testArgs(f128, inf(f128), -tmin(f128));
33948886 try testArgs(f128, inf(f128), -0.0);
33958887 try testArgs(f128, inf(f128), 0.0);
33968888 try testArgs(f128, inf(f128), tmin(f128));
33978889 try testArgs(f128, inf(f128), fmin(f128));
3398 try testArgs(f128, inf(f128), 0.1);
3399 try testArgs(f128, inf(f128), 1.0);
3400 try testArgs(f128, inf(f128), 10.0);
8890 try testArgs(f128, inf(f128), 1e-1);
8891 try testArgs(f128, inf(f128), 1e0);
8892 try testArgs(f128, inf(f128), 1e1);
34018893 try testArgs(f128, inf(f128), fmax(f128));
34028894 try testArgs(f128, inf(f128), inf(f128));
34038895 try testArgs(f128, inf(f128), nan(f128));
......@@ -3405,18 +8897,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
34058897 try testArgs(f128, nan(f128), -nan(f128));
34068898 try testArgs(f128, nan(f128), -inf(f128));
34078899 try testArgs(f128, nan(f128), -fmax(f128));
3408 try testArgs(f128, nan(f128), -10.0);
3409 try testArgs(f128, nan(f128), -1.0);
3410 try testArgs(f128, nan(f128), -0.1);
8900 try testArgs(f128, nan(f128), -1e1);
8901 try testArgs(f128, nan(f128), -1e0);
8902 try testArgs(f128, nan(f128), -1e-1);
34118903 try testArgs(f128, nan(f128), -fmin(f128));
34128904 try testArgs(f128, nan(f128), -tmin(f128));
34138905 try testArgs(f128, nan(f128), -0.0);
34148906 try testArgs(f128, nan(f128), 0.0);
34158907 try testArgs(f128, nan(f128), tmin(f128));
34168908 try testArgs(f128, nan(f128), fmin(f128));
3417 try testArgs(f128, nan(f128), 0.1);
3418 try testArgs(f128, nan(f128), 1.0);
3419 try testArgs(f128, nan(f128), 10.0);
8909 try testArgs(f128, nan(f128), 1e-1);
8910 try testArgs(f128, nan(f128), 1e0);
8911 try testArgs(f128, nan(f128), 1e1);
34208912 try testArgs(f128, nan(f128), fmax(f128));
34218913 try testArgs(f128, nan(f128), inf(f128));
34228914 try testArgs(f128, nan(f128), nan(f128));
......@@ -4050,73 +9542,73 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
40509542 fmax(f16),
40519543 });
40529544 try testArgs(@Vector(2, f16), .{
4053 0.1, 1.0,
9545 1e-1, 1e0,
40549546 }, .{
40559547 -nan(f16), -fmin(f16),
40569548 });
40579549 try testArgs(@Vector(4, f16), .{
4058 0.1, -fmax(f16), 0.0, 0.1,
9550 1e-1, -fmax(f16), 0.0, 1e-1,
40599551 }, .{
4060 -fmin(f16), -10.0, 1.0, -tmin(f16),
9552 -fmin(f16), -1e1, 1e0, -tmin(f16),
40619553 });
40629554 try testArgs(@Vector(8, f16), .{
4063 -fmax(f16), -fmin(f16), -nan(f16), -0.0, tmin(f16), -0.0, 0.0, 0.1,
9555 -fmax(f16), -fmin(f16), -nan(f16), -0.0, tmin(f16), -0.0, 0.0, 1e-1,
40649556 }, .{
4065 -1.0, tmin(f16), nan(f16), nan(f16), -fmax(f16), -10.0, -nan(f16), 10.0,
9557 -1e0, tmin(f16), nan(f16), nan(f16), -fmax(f16), -1e1, -nan(f16), 1e1,
40669558 });
40679559 try testArgs(@Vector(16, f16), .{
4068 0.1, fmax(f16), -10.0, fmax(f16), -10.0, 0.1, -tmin(f16), -inf(f16), -tmin(f16), -1.0, -fmin(f16), tmin(f16), 10.0, -fmax(f16), 0.0, -fmin(f16),
9560 1e-1, fmax(f16), -1e1, fmax(f16), -1e1, 1e-1, -tmin(f16), -inf(f16), -tmin(f16), -1e0, -fmin(f16), tmin(f16), 1e1, -fmax(f16), 0.0, -fmin(f16),
40699561 }, .{
4070 inf(f16), -10.0, -fmax(f16), fmax(f16), -tmin(f16), 0.0, -1.0, -1.0, 0.1, -nan(f16), -tmin(f16), 1.0, 0.1, fmax(f16), -0.0, inf(f16),
9562 inf(f16), -1e1, -fmax(f16), fmax(f16), -tmin(f16), 0.0, -1e0, -1e0, 1e-1, -nan(f16), -tmin(f16), 1e0, 1e-1, fmax(f16), -0.0, inf(f16),
40719563 });
40729564 try testArgs(@Vector(32, f16), .{
4073 -inf(f16), tmin(f16), fmin(f16), -nan(f16), nan(f16), 0.1, 0.0, 10.0, -tmin(f16), inf(f16), 1.0, -10.0, fmin(f16), -0.0, 1.0, -fmax(f16),
4074 10.0, -0.0, -10.0, -tmin(f16), fmax(f16), nan(f16), -fmin(f16), -1.0, 0.0, -10.0, -nan(f16), 1.0, -tmin(f16), -0.0, nan(f16), 10.0,
9565 -inf(f16), tmin(f16), fmin(f16), -nan(f16), nan(f16), 1e-1, 0.0, 1e1, -tmin(f16), inf(f16), 1e0, -1e1, fmin(f16), -0.0, 1e0, -fmax(f16),
9566 1e1, -0.0, -1e1, -tmin(f16), fmax(f16), nan(f16), -fmin(f16), -1e0, 0.0, -1e1, -nan(f16), 1e0, -tmin(f16), -0.0, nan(f16), 1e1,
40759567 }, .{
4076 0.0, 10.0, -nan(f16), -0.0, tmin(f16), fmax(f16), nan(f16), tmin(f16), -10.0, 0.1, 10.0, fmin(f16), -fmax(f16), inf(f16), inf(f16), -tmin(f16),
4077 inf(f16), -0.0, 0.1, 0.0, -fmin(f16), -0.0, -nan(f16), -inf(f16), -fmin(f16), fmax(f16), 1.0, fmin(f16), -0.0, -tmin(f16), -fmax(f16), -10.0,
9568 0.0, 1e1, -nan(f16), -0.0, tmin(f16), fmax(f16), nan(f16), tmin(f16), -1e1, 1e-1, 1e1, fmin(f16), -fmax(f16), inf(f16), inf(f16), -tmin(f16),
9569 inf(f16), -0.0, 1e-1, 0.0, -fmin(f16), -0.0, -nan(f16), -inf(f16), -fmin(f16), fmax(f16), 1e0, fmin(f16), -0.0, -tmin(f16), -fmax(f16), -1e1,
40789570 });
40799571 try testArgs(@Vector(64, f16), .{
4080 -nan(f16), fmin(f16), -inf(f16), inf(f16), -tmin(f16), inf(f16), 0.1, -1.0, -inf(f16), nan(f16), -fmin(f16), 0.1, -tmin(f16), -fmax(f16), -10.0, inf(f16),
4081 0.0, -fmin(f16), -fmax(f16), 10.0, -fmax(f16), fmax(f16), 10.0, fmin(f16), -inf(f16), -nan(f16), -tmin(f16), nan(f16), -0.0, 0.0, 0.1, -fmin(f16),
4082 0.0, nan(f16), inf(f16), fmax(f16), nan(f16), tmin(f16), 1.0, tmin(f16), fmin(f16), -10.0, 0.0, 0.1, inf(f16), -10.0, inf(f16), 1.0,
4083 0.1, -inf(f16), 10.0, -0.0, -1.0, -tmin(f16), -nan(f16), 0.1, 0.1, -nan(f16), -0.0, -10.0, -0.0, -nan(f16), 0.1, fmin(f16),
9572 -nan(f16), fmin(f16), -inf(f16), inf(f16), -tmin(f16), inf(f16), 1e-1, -1e0, -inf(f16), nan(f16), -fmin(f16), 1e-1, -tmin(f16), -fmax(f16), -1e1, inf(f16),
9573 0.0, -fmin(f16), -fmax(f16), 1e1, -fmax(f16), fmax(f16), 1e1, fmin(f16), -inf(f16), -nan(f16), -tmin(f16), nan(f16), -0.0, 0.0, 1e-1, -fmin(f16),
9574 0.0, nan(f16), inf(f16), fmax(f16), nan(f16), tmin(f16), 1e0, tmin(f16), fmin(f16), -1e1, 0.0, 1e-1, inf(f16), -1e1, inf(f16), 1e0,
9575 1e-1, -inf(f16), 1e1, -0.0, -1e0, -tmin(f16), -nan(f16), 1e-1, 1e-1, -nan(f16), -0.0, -1e1, -0.0, -nan(f16), 1e-1, fmin(f16),
40849576 }, .{
4085 10.0, 0.0, fmax(f16), -inf(f16), -fmax(f16), -fmax(f16), tmin(f16), -1.0, -tmin(f16), -10.0, nan(f16), -nan(f16), tmin(f16), -fmin(f16), nan(f16), -10.0,
4086 10.0, fmax(f16), 0.1, 0.0, 0.1, -fmax(f16), -0.0, -fmin(f16), inf(f16), -1.0, inf(f16), fmin(f16), -inf(f16), -tmin(f16), 10.0, 10.0,
4087 0.1, 0.1, 0.1, 10.0, -fmin(f16), inf(f16), 0.1, fmax(f16), inf(f16), -0.0, -10.0, tmin(f16), -fmin(f16), 0.0, 10.0, 0.0,
4088 -tmin(f16), -inf(f16), 1.0, -fmax(f16), inf(f16), 10.0, fmax(f16), -1.0, 0.0, 0.1, -1.0, -inf(f16), 0.1, 0.0, -10.0, fmax(f16),
9577 1e1, 0.0, fmax(f16), -inf(f16), -fmax(f16), -fmax(f16), tmin(f16), -1e0, -tmin(f16), -1e1, nan(f16), -nan(f16), tmin(f16), -fmin(f16), nan(f16), -1e1,
9578 1e1, fmax(f16), 1e-1, 0.0, 1e-1, -fmax(f16), -0.0, -fmin(f16), inf(f16), -1e0, inf(f16), fmin(f16), -inf(f16), -tmin(f16), 1e1, 1e1,
9579 1e-1, 1e-1, 1e-1, 1e1, -fmin(f16), inf(f16), 1e-1, fmax(f16), inf(f16), -0.0, -1e1, tmin(f16), -fmin(f16), 0.0, 1e1, 0.0,
9580 -tmin(f16), -inf(f16), 1e0, -fmax(f16), inf(f16), 1e1, fmax(f16), -1e0, 0.0, 1e-1, -1e0, -inf(f16), 1e-1, 0.0, -1e1, fmax(f16),
40899581 });
40909582 try testArgs(@Vector(128, f16), .{
4091 -fmin(f16), 1.0, 0.0, 0.1, nan(f16), 0.1, 0.1, -inf(f16), -tmin(f16), 1.0, -fmin(f16), -fmax(f16), -1.0, -fmin(f16), 10.0, -nan(f16),
4092 inf(f16), -inf(f16), tmin(f16), -10.0, -1.0, -0.0, -0.0, 1.0, nan(f16), -10.0, fmin(f16), -tmin(f16), tmin(f16), 0.1, -fmax(f16), fmax(f16),
4093 tmin(f16), -fmin(f16), nan(f16), 10.0, 1.0, -fmin(f16), 0.1, 10.0, fmax(f16), fmax(f16), fmax(f16), -1.0, -nan(f16), 10.0, tmin(f16), -nan(f16),
4094 -nan(f16), -inf(f16), -0.0, -inf(f16), nan(f16), -1.0, 0.1, -fmax(f16), -10.0, nan(f16), 1.0, -10.0, tmin(f16), 1.0, 0.1, 1.0,
4095 10.0, 0.1, tmin(f16), nan(f16), -inf(f16), -1.0, -1.0, -fmax(f16), -inf(f16), 0.1, 0.1, -0.0, 10.0, fmin(f16), -1.0, inf(f16),
4096 0.1, -10.0, inf(f16), -0.0, 0.1, 0.0, inf(f16), 1.0, tmin(f16), -tmin(f16), 0.1, inf(f16), tmin(f16), -inf(f16), 10.0, 1.0,
4097 -inf(f16), 0.1, 1.0, fmax(f16), -fmin(f16), nan(f16), -nan(f16), fmin(f16), -1.0, -fmax(f16), inf(f16), -fmax(f16), 0.0, -10.0, fmin(f16), -fmax(f16),
4098 -0.0, -1.0, 0.1, 10.0, inf(f16), fmax(f16), inf(f16), 10.0, fmax(f16), -0.0, -tmin(f16), fmin(f16), inf(f16), nan(f16), -fmin(f16), -1.0,
9583 -fmin(f16), 1e0, 0.0, 1e-1, nan(f16), 1e-1, 1e-1, -inf(f16), -tmin(f16), 1e0, -fmin(f16), -fmax(f16), -1e0, -fmin(f16), 1e1, -nan(f16),
9584 inf(f16), -inf(f16), tmin(f16), -1e1, -1e0, -0.0, -0.0, 1e0, nan(f16), -1e1, fmin(f16), -tmin(f16), tmin(f16), 1e-1, -fmax(f16), fmax(f16),
9585 tmin(f16), -fmin(f16), nan(f16), 1e1, 1e0, -fmin(f16), 1e-1, 1e1, fmax(f16), fmax(f16), fmax(f16), -1e0, -nan(f16), 1e1, tmin(f16), -nan(f16),
9586 -nan(f16), -inf(f16), -0.0, -inf(f16), nan(f16), -1e0, 1e-1, -fmax(f16), -1e1, nan(f16), 1e0, -1e1, tmin(f16), 1e0, 1e-1, 1e0,
9587 1e1, 1e-1, tmin(f16), nan(f16), -inf(f16), -1e0, -1e0, -fmax(f16), -inf(f16), 1e-1, 1e-1, -0.0, 1e1, fmin(f16), -1e0, inf(f16),
9588 1e-1, -1e1, inf(f16), -0.0, 1e-1, 0.0, inf(f16), 1e0, tmin(f16), -tmin(f16), 1e-1, inf(f16), tmin(f16), -inf(f16), 1e1, 1e0,
9589 -inf(f16), 1e-1, 1e0, fmax(f16), -fmin(f16), nan(f16), -nan(f16), fmin(f16), -1e0, -fmax(f16), inf(f16), -fmax(f16), 0.0, -1e1, fmin(f16), -fmax(f16),
9590 -0.0, -1e0, 1e-1, 1e1, inf(f16), fmax(f16), inf(f16), 1e1, fmax(f16), -0.0, -tmin(f16), fmin(f16), inf(f16), nan(f16), -fmin(f16), -1e0,
40999591 }, .{
4100 -fmax(f16), fmax(f16), inf(f16), 1.0, nan(f16), 0.1, -fmax(f16), 10.0, -fmin(f16), 0.1, fmin(f16), -0.0, 0.1, -0.0, -nan(f16), -nan(f16),
4101 inf(f16), 1.0, -1.0, 0.1, 0.1, 0.1, 0.0, -tmin(f16), -1.0, -10.0, -tmin(f16), 1.0, -10.0, fmin(f16), -fmax(f16), -nan(f16),
4102 -tmin(f16), -inf(f16), inf(f16), -fmin(f16), -nan(f16), 0.0, -inf(f16), -fmax(f16), 0.1, -inf(f16), tmin(f16), nan(f16), tmin(f16), fmin(f16), -0.0, 0.1,
4103 fmin(f16), fmin(f16), 1.0, tmin(f16), 0.0, 10.0, 0.1, inf(f16), 10.0, -tmin(f16), tmin(f16), -1.0, -fmin(f16), 1.0, nan(f16), -fmax(f16),
4104 nan(f16), -fmin(f16), 0.1, 10.0, -10.0, 1.0, -0.0, tmin(f16), nan(f16), inf(f16), -fmax(f16), tmin(f16), -tmin(f16), 10.0, fmin(f16), -tmin(f16),
4105 -0.0, 1.0, tmin(f16), fmax(f16), 1.0, -inf(f16), -nan(f16), -0.0, 0.1, -inf(f16), 0.1, fmax(f16), -inf(f16), -nan(f16), -1.0, -inf(f16),
4106 0.1, fmin(f16), -10.0, -tmin(f16), 1.0, -nan(f16), -fmax(f16), -10.0, -tmin(f16), 10.0, nan(f16), fmin(f16), fmax(f16), tmin(f16), -inf(f16), 1.0,
4107 -fmin(f16), tmin(f16), -1.0, 0.1, 0.0, nan(f16), 1.0, fmax(f16), -1.0, 10.0, nan(f16), 1.0, fmin(f16), 1.0, -10.0, -10.0,
9592 -fmax(f16), fmax(f16), inf(f16), 1e0, nan(f16), 1e-1, -fmax(f16), 1e1, -fmin(f16), 1e-1, fmin(f16), -0.0, 1e-1, -0.0, -nan(f16), -nan(f16),
9593 inf(f16), 1e0, -1e0, 1e-1, 1e-1, 1e-1, 0.0, -tmin(f16), -1e0, -1e1, -tmin(f16), 1e0, -1e1, fmin(f16), -fmax(f16), -nan(f16),
9594 -tmin(f16), -inf(f16), inf(f16), -fmin(f16), -nan(f16), 0.0, -inf(f16), -fmax(f16), 1e-1, -inf(f16), tmin(f16), nan(f16), tmin(f16), fmin(f16), -0.0, 1e-1,
9595 fmin(f16), fmin(f16), 1e0, tmin(f16), 0.0, 1e1, 1e-1, inf(f16), 1e1, -tmin(f16), tmin(f16), -1e0, -fmin(f16), 1e0, nan(f16), -fmax(f16),
9596 nan(f16), -fmin(f16), 1e-1, 1e1, -1e1, 1e0, -0.0, tmin(f16), nan(f16), inf(f16), -fmax(f16), tmin(f16), -tmin(f16), 1e1, fmin(f16), -tmin(f16),
9597 -0.0, 1e0, tmin(f16), fmax(f16), 1e0, -inf(f16), -nan(f16), -0.0, 1e-1, -inf(f16), 1e-1, fmax(f16), -inf(f16), -nan(f16), -1e0, -inf(f16),
9598 1e-1, fmin(f16), -1e1, -tmin(f16), 1e0, -nan(f16), -fmax(f16), -1e1, -tmin(f16), 1e1, nan(f16), fmin(f16), fmax(f16), tmin(f16), -inf(f16), 1e0,
9599 -fmin(f16), tmin(f16), -1e0, 1e-1, 0.0, nan(f16), 1e0, fmax(f16), -1e0, 1e1, nan(f16), 1e0, fmin(f16), 1e0, -1e1, -1e1,
41089600 });
41099601 try testArgs(@Vector(69, f16), .{
4110 -nan(f16), -1.0, -fmin(f16), fmin(f16), inf(f16), 0.1, 0.0, fmax(f16), tmin(f16), 0.1, 0.0, -tmin(f16), 0.0, 0.0, 1.0, -inf(f16),
4111 tmin(f16), -inf(f16), -tmin(f16), fmin(f16), -inf(f16), -nan(f16), tmin(f16), -tmin(f16), 0.1, -1.0, -tmin(f16), fmax(f16), nan(f16), -fmin(f16), fmin(f16), 10.0,
4112 fmin(f16), -10.0, 0.0, fmin(f16), fmax(f16), -nan(f16), fmax(f16), -fmax(f16), nan(f16), -nan(f16), fmin(f16), -10.0, -fmin(f16), fmin(f16), -fmin(f16), -nan(f16),
4113 0.0, -1.0, fmax(f16), 0.1, inf(f16), 1.0, -1.0, -0.0, 10.0, 0.1, -fmax(f16), tmin(f16), -inf(f16), tmin(f16), -fmax(f16), 0.1,
4114 -10.0, -0.0, -fmax(f16), nan(f16), fmax(f16),
9602 -nan(f16), -1e0, -fmin(f16), fmin(f16), inf(f16), 1e-1, 0.0, fmax(f16), tmin(f16), 1e-1, 0.0, -tmin(f16), 0.0, 0.0, 1e0, -inf(f16),
9603 tmin(f16), -inf(f16), -tmin(f16), fmin(f16), -inf(f16), -nan(f16), tmin(f16), -tmin(f16), 1e-1, -1e0, -tmin(f16), fmax(f16), nan(f16), -fmin(f16), fmin(f16), 1e1,
9604 fmin(f16), -1e1, 0.0, fmin(f16), fmax(f16), -nan(f16), fmax(f16), -fmax(f16), nan(f16), -nan(f16), fmin(f16), -1e1, -fmin(f16), fmin(f16), -fmin(f16), -nan(f16),
9605 0.0, -1e0, fmax(f16), 1e-1, inf(f16), 1e0, -1e0, -0.0, 1e1, 1e-1, -fmax(f16), tmin(f16), -inf(f16), tmin(f16), -fmax(f16), 1e-1,
9606 -1e1, -0.0, -fmax(f16), nan(f16), fmax(f16),
41159607 }, .{
4116 inf(f16), -fmin(f16), 0.1, 0.1, -0.0, fmax(f16), 0.1, -0.0, 0.0, -0.0, 0.0, -tmin(f16), tmin(f16), -1.0, nan(f16), -fmin(f16),
4117 fmin(f16), 0.1, 0.1, nan(f16), -fmax(f16), -inf(f16), -nan(f16), -nan(f16), 0.1, -fmax(f16), fmin(f16), 0.1, 0.1, 0.1, -0.0, 10.0,
4118 tmin(f16), -nan(f16), fmin(f16), -1.0, 1.0, -tmin(f16), 0.0, nan(f16), fmax(f16), -10.0, fmin(f16), -fmin(f16), -1.0, 0.1, -fmin(f16), -fmin(f16),
4119 -fmax(f16), 0.0, fmin(f16), -10.0, -1.0, -1.0, fmax(f16), -nan(f16), -inf(f16), -inf(f16), 0.0, tmin(f16), -0.0, nan(f16), -inf(f16), nan(f16),
9608 inf(f16), -fmin(f16), 1e-1, 1e-1, -0.0, fmax(f16), 1e-1, -0.0, 0.0, -0.0, 0.0, -tmin(f16), tmin(f16), -1e0, nan(f16), -fmin(f16),
9609 fmin(f16), 1e-1, 1e-1, nan(f16), -fmax(f16), -inf(f16), -nan(f16), -nan(f16), 1e-1, -fmax(f16), fmin(f16), 1e-1, 1e-1, 1e-1, -0.0, 1e1,
9610 tmin(f16), -nan(f16), fmin(f16), -1e0, 1e0, -tmin(f16), 0.0, nan(f16), fmax(f16), -1e1, fmin(f16), -fmin(f16), -1e0, 1e-1, -fmin(f16), -fmin(f16),
9611 -fmax(f16), 0.0, fmin(f16), -1e1, -1e0, -1e0, fmax(f16), -nan(f16), -inf(f16), -inf(f16), 0.0, tmin(f16), -0.0, nan(f16), -inf(f16), nan(f16),
41209612 inf(f16), fmin(f16), -nan(f16), -inf(f16), inf(f16),
41219613 });
41229614
......@@ -4126,229 +9618,229 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
41269618 -tmin(f32),
41279619 });
41289620 try testArgs(@Vector(2, f32), .{
4129 nan(f32), -10.0,
9621 nan(f32), -1e1,
41309622 }, .{
41319623 -tmin(f32), fmin(f32),
41329624 });
41339625 try testArgs(@Vector(4, f32), .{
4134 fmax(f32), -fmax(f32), -10.0, 0.0,
9626 fmax(f32), -fmax(f32), -1e1, 0.0,
41359627 }, .{
4136 inf(f32), inf(f32), -10.0, inf(f32),
9628 inf(f32), inf(f32), -1e1, inf(f32),
41379629 });
41389630 try testArgs(@Vector(8, f32), .{
4139 -10.0, fmax(f32), inf(f32), -0.0, -tmin(f32), -tmin(f32), 10.0, 0.1,
9631 -1e1, fmax(f32), inf(f32), -0.0, -tmin(f32), -tmin(f32), 1e1, 1e-1,
41409632 }, .{
4141 10.0, -1.0, -1.0, inf(f32), 1.0, -tmin(f32), nan(f32), 10.0,
9633 1e1, -1e0, -1e0, inf(f32), 1e0, -tmin(f32), nan(f32), 1e1,
41429634 });
41439635 try testArgs(@Vector(16, f32), .{
4144 0.1, 0.1, -nan(f32), -10.0, -nan(f32), 0.0, fmin(f32), fmin(f32), -10.0, 1.0, -fmax(f32), -0.0, inf(f32), -0.0, fmax(f32), -fmin(f32),
9636 1e-1, 1e-1, -nan(f32), -1e1, -nan(f32), 0.0, fmin(f32), fmin(f32), -1e1, 1e0, -fmax(f32), -0.0, inf(f32), -0.0, fmax(f32), -fmin(f32),
41459637 }, .{
4146 nan(f32), 0.0, tmin(f32), -1.0, -10.0, -tmin(f32), fmin(f32), -fmax(f32), 0.1, 0.1, -inf(f32), tmin(f32), -0.0, 10.0, -0.0, -inf(f32),
9638 nan(f32), 0.0, tmin(f32), -1e0, -1e1, -tmin(f32), fmin(f32), -fmax(f32), 1e-1, 1e-1, -inf(f32), tmin(f32), -0.0, 1e1, -0.0, -inf(f32),
41479639 });
41489640 try testArgs(@Vector(32, f32), .{
4149 0.1, tmin(f32), -1.0, 1.0, tmin(f32), -10.0, fmax(f32), 0.0, tmin(f32), 0.1, -1.0, fmax(f32), -nan(f32), -0.0, fmin(f32), 0.0,
4150 -fmax(f32), fmax(f32), -fmin(f32), -inf(f32), tmin(f32), -nan(f32), -1.0, tmin(f32), -fmin(f32), -inf(f32), nan(f32), -tmin(f32), inf(f32), -inf(f32), -nan(f32), 0.1,
9641 1e-1, tmin(f32), -1e0, 1e0, tmin(f32), -1e1, fmax(f32), 0.0, tmin(f32), 1e-1, -1e0, fmax(f32), -nan(f32), -0.0, fmin(f32), 0.0,
9642 -fmax(f32), fmax(f32), -fmin(f32), -inf(f32), tmin(f32), -nan(f32), -1e0, tmin(f32), -fmin(f32), -inf(f32), nan(f32), -tmin(f32), inf(f32), -inf(f32), -nan(f32), 1e-1,
41519643 }, .{
4152 -fmin(f32), -1.0, fmax(f32), inf(f32), -fmin(f32), fmax(f32), 0.0, -10.0, 0.0, 0.1, fmin(f32), -inf(f32), 1.0, -nan(f32), -nan(f32),
4153 -inf(f32), -0.0, nan(f32), -fmax(f32), 10.0, -tmin(f32), fmax(f32), -10.0, 0.1, tmin(f32), 0.1, -fmax(f32), 0.0, 0.1, -nan(f32),
9644 -fmin(f32), -1e0, fmax(f32), inf(f32), -fmin(f32), fmax(f32), 0.0, -1e1, 0.0, 1e-1, fmin(f32), -inf(f32), 1e0, -nan(f32), -nan(f32),
9645 -inf(f32), -0.0, nan(f32), -fmax(f32), 1e1, -tmin(f32), fmax(f32), -1e1, 1e-1, tmin(f32), 1e-1, -fmax(f32), 0.0, 1e-1, -nan(f32),
41549646 -fmin(f32), fmax(f32),
41559647 });
41569648 try testArgs(@Vector(64, f32), .{
4157 fmin(f32), 0.0, -inf(f32), 0.1, -10.0, -fmin(f32), 10.0, nan(f32), 0.1, 1.0, -1.0, 10.0, 10.0, 0.1, -fmax(f32), -1.0,
4158 -fmin(f32), 0.1, -inf(f32), -inf(f32), 0.1, 0.1, 0.0, -1.0, nan(f32), -0.0, -0.0, -fmin(f32), -inf(f32), inf(f32), tmin(f32), -nan(f32),
4159 0.1, 0.0, 1.0, tmin(f32), 10.0, fmin(f32), -fmin(f32), fmax(f32), nan(f32), 1.0, -nan(f32), -nan(f32), 1.0, nan(f32), 1.0, fmax(f32),
4160 -0.0, 0.0, inf(f32), nan(f32), tmin(f32), 0.0, fmin(f32), -0.0, -fmin(f32), tmin(f32), -1.0, -10.0, 0.1, -tmin(f32), -inf(f32), -1.0,
9649 fmin(f32), 0.0, -inf(f32), 1e-1, -1e1, -fmin(f32), 1e1, nan(f32), 1e-1, 1e0, -1e0, 1e1, 1e1, 1e-1, -fmax(f32), -1e0,
9650 -fmin(f32), 1e-1, -inf(f32), -inf(f32), 1e-1, 1e-1, 0.0, -1e0, nan(f32), -0.0, -0.0, -fmin(f32), -inf(f32), inf(f32), tmin(f32), -nan(f32),
9651 1e-1, 0.0, 1e0, tmin(f32), 1e1, fmin(f32), -fmin(f32), fmax(f32), nan(f32), 1e0, -nan(f32), -nan(f32), 1e0, nan(f32), 1e0, fmax(f32),
9652 -0.0, 0.0, inf(f32), nan(f32), tmin(f32), 0.0, fmin(f32), -0.0, -fmin(f32), tmin(f32), -1e0, -1e1, 1e-1, -tmin(f32), -inf(f32), -1e0,
41619653 }, .{
4162 nan(f32), -nan(f32), -tmin(f32), inf(f32), -inf(f32), 0.1, 0.1, 0.1, -1.0, -inf(f32), -0.0, fmax(f32), tmin(f32), -nan(f32), -fmax(f32), -1.0,
4163 -fmin(f32), -0.0, fmax(f32), -fmax(f32), 1.0, -0.0, 0.0, 10.0, -1.0, -fmin(f32), 0.0, fmax(f32), 0.1, 1.0, 10.0, 0.1,
4164 0.1, fmin(f32), -nan(f32), -inf(f32), -0.0, -inf(f32), 0.1, -fmax(f32), -10.0, -10.0, nan(f32), 10.0, -1.0, -fmin(f32), 10.0, fmin(f32),
4165 1.0, -fmax(f32), nan(f32), inf(f32), fmax(f32), fmax(f32), -fmin(f32), -inf(f32), -tmin(f32), -nan(f32), nan(f32), nan(f32), 0.1, 0.1, -1.0, inf(f32),
9654 nan(f32), -nan(f32), -tmin(f32), inf(f32), -inf(f32), 1e-1, 1e-1, 1e-1, -1e0, -inf(f32), -0.0, fmax(f32), tmin(f32), -nan(f32), -fmax(f32), -1e0,
9655 -fmin(f32), -0.0, fmax(f32), -fmax(f32), 1e0, -0.0, 0.0, 1e1, -1e0, -fmin(f32), 0.0, fmax(f32), 1e-1, 1e0, 1e1, 1e-1,
9656 1e-1, fmin(f32), -nan(f32), -inf(f32), -0.0, -inf(f32), 1e-1, -fmax(f32), -1e1, -1e1, nan(f32), 1e1, -1e0, -fmin(f32), 1e1, fmin(f32),
9657 1e0, -fmax(f32), nan(f32), inf(f32), fmax(f32), fmax(f32), -fmin(f32), -inf(f32), -tmin(f32), -nan(f32), nan(f32), nan(f32), 1e-1, 1e-1, -1e0, inf(f32),
41669658 });
41679659 try testArgs(@Vector(128, f32), .{
4168 -10.0, -nan(f32), inf(f32), inf(f32), -tmin(f32), -0.0, 0.0, 0.1, -0.0, fmin(f32), nan(f32), -1.0, nan(f32), -fmax(f32), nan(f32), 0.0,
4169 1.0, -tmin(f32), 0.0, -nan(f32), 0.1, 0.1, -1.0, 10.0, -fmax(f32), -fmin(f32), 0.1, nan(f32), 0.1, -fmax(f32), -tmin(f32), -inf(f32),
4170 inf(f32), tmin(f32), -tmin(f32), nan(f32), -inf(f32), -10.0, 1.0, -nan(f32), 0.1, nan(f32), -1.0, tmin(f32), -fmin(f32), -0.0, -0.0, 1.0,
4171 fmin(f32), -fmin(f32), 0.1, 0.1, 0.1, -10.0, -10.0, -tmin(f32), 1.0, -0.0, 10.0, -fmax(f32), 10.0, -fmax(f32), inf(f32), -1.0,
4172 -fmax(f32), fmin(f32), fmin(f32), fmin(f32), -1.0, -nan(f32), fmax(f32), -nan(f32), 0.1, -1.0, -fmax(f32), -tmin(f32), -0.0, fmax(f32), -10.0, inf(f32),
4173 10.0, -inf(f32), 0.1, fmin(f32), nan(f32), -fmax(f32), -tmin(f32), inf(f32), tmin(f32), -fmin(f32), fmax(f32), 1.0, fmin(f32), -0.0, 0.1, fmin(f32),
4174 0.1, inf(f32), -10.0, inf(f32), 10.0, tmin(f32), 0.0, 1.0, inf(f32), -10.0, -fmin(f32), tmin(f32), 1.0, 0.1, 0.1, -fmin(f32),
4175 10.0, 0.1, fmax(f32), fmin(f32), 1.0, -10.0, -inf(f32), -10.0, 0.0, -fmax(f32), -inf(f32), -1.0, fmax(f32), -tmin(f32), inf(f32), nan(f32),
9660 -1e1, -nan(f32), inf(f32), inf(f32), -tmin(f32), -0.0, 0.0, 1e-1, -0.0, fmin(f32), nan(f32), -1e0, nan(f32), -fmax(f32), nan(f32), 0.0,
9661 1e0, -tmin(f32), 0.0, -nan(f32), 1e-1, 1e-1, -1e0, 1e1, -fmax(f32), -fmin(f32), 1e-1, nan(f32), 1e-1, -fmax(f32), -tmin(f32), -inf(f32),
9662 inf(f32), tmin(f32), -tmin(f32), nan(f32), -inf(f32), -1e1, 1e0, -nan(f32), 1e-1, nan(f32), -1e0, tmin(f32), -fmin(f32), -0.0, -0.0, 1e0,
9663 fmin(f32), -fmin(f32), 1e-1, 1e-1, 1e-1, -1e1, -1e1, -tmin(f32), 1e0, -0.0, 1e1, -fmax(f32), 1e1, -fmax(f32), inf(f32), -1e0,
9664 -fmax(f32), fmin(f32), fmin(f32), fmin(f32), -1e0, -nan(f32), fmax(f32), -nan(f32), 1e-1, -1e0, -fmax(f32), -tmin(f32), -0.0, fmax(f32), -1e1, inf(f32),
9665 1e1, -inf(f32), 1e-1, fmin(f32), nan(f32), -fmax(f32), -tmin(f32), inf(f32), tmin(f32), -fmin(f32), fmax(f32), 1e0, fmin(f32), -0.0, 1e-1, fmin(f32),
9666 1e-1, inf(f32), -1e1, inf(f32), 1e1, tmin(f32), 0.0, 1e0, inf(f32), -1e1, -fmin(f32), tmin(f32), 1e0, 1e-1, 1e-1, -fmin(f32),
9667 1e1, 1e-1, fmax(f32), fmin(f32), 1e0, -1e1, -inf(f32), -1e1, 0.0, -fmax(f32), -inf(f32), -1e0, fmax(f32), -tmin(f32), inf(f32), nan(f32),
41769668 }, .{
4177 -tmin(f32), -fmax(f32), -fmax(f32), 10.0, inf(f32), 0.1, 1.0, fmin(f32), 0.1, 10.0, fmin(f32), -fmax(f32), 1.0, fmax(f32), 0.1, -fmin(f32),
4178 0.0, -0.0, -0.0, -1.0, -nan(f32), nan(f32), -tmin(f32), 10.0, -tmin(f32), -10.0, inf(f32), 0.0, tmin(f32), 0.0, -fmax(f32), inf(f32),
4179 fmin(f32), 0.1, -10.0, tmin(f32), tmin(f32), 0.1, fmin(f32), -tmin(f32), fmin(f32), nan(f32), 0.1, -fmax(f32), -1.0, -0.0, fmin(f32), -0.0,
4180 -1.0, -0.0, -inf(f32), fmax(f32), -10.0, 1.0, inf(f32), -1.0, -tmin(f32), -tmin(f32), 0.1, -10.0, -fmin(f32), 10.0, -10.0, -inf(f32),
4181 -1.0, inf(f32), 0.1, 1.0, -nan(f32), 0.1, -10.0, -nan(f32), -tmin(f32), 0.0, fmin(f32), -nan(f32), fmax(f32), -tmin(f32), 0.0, 0.0,
4182 -fmax(f32), -inf(f32), -1.0, -0.0, 10.0, nan(f32), 0.1, tmin(f32), -10.0, 10.0, tmin(f32), -fmax(f32), 0.1, -10.0, -tmin(f32), fmax(f32),
4183 -fmax(f32), 0.1, -nan(f32), -fmin(f32), inf(f32), inf(f32), tmin(f32), tmin(f32), -tmin(f32), tmin(f32), 0.0, -0.0, 1.0, 10.0, -10.0, inf(f32),
4184 0.0, -fmin(f32), fmax(f32), -10.0, fmax(f32), -0.0, 0.0, -fmin(f32), 10.0, -fmin(f32), -fmin(f32), -fmin(f32), 10.0, fmin(f32), -inf(f32), fmax(f32),
9669 -tmin(f32), -fmax(f32), -fmax(f32), 1e1, inf(f32), 1e-1, 1e0, fmin(f32), 1e-1, 1e1, fmin(f32), -fmax(f32), 1e0, fmax(f32), 1e-1, -fmin(f32),
9670 0.0, -0.0, -0.0, -1e0, -nan(f32), nan(f32), -tmin(f32), 1e1, -tmin(f32), -1e1, inf(f32), 0.0, tmin(f32), 0.0, -fmax(f32), inf(f32),
9671 fmin(f32), 1e-1, -1e1, tmin(f32), tmin(f32), 1e-1, fmin(f32), -tmin(f32), fmin(f32), nan(f32), 1e-1, -fmax(f32), -1e0, -0.0, fmin(f32), -0.0,
9672 -1e0, -0.0, -inf(f32), fmax(f32), -1e1, 1e0, inf(f32), -1e0, -tmin(f32), -tmin(f32), 1e-1, -1e1, -fmin(f32), 1e1, -1e1, -inf(f32),
9673 -1e0, inf(f32), 1e-1, 1e0, -nan(f32), 1e-1, -1e1, -nan(f32), -tmin(f32), 0.0, fmin(f32), -nan(f32), fmax(f32), -tmin(f32), 0.0, 0.0,
9674 -fmax(f32), -inf(f32), -1e0, -0.0, 1e1, nan(f32), 1e-1, tmin(f32), -1e1, 1e1, tmin(f32), -fmax(f32), 1e-1, -1e1, -tmin(f32), fmax(f32),
9675 -fmax(f32), 1e-1, -nan(f32), -fmin(f32), inf(f32), inf(f32), tmin(f32), tmin(f32), -tmin(f32), tmin(f32), 0.0, -0.0, 1e0, 1e1, -1e1, inf(f32),
9676 0.0, -fmin(f32), fmax(f32), -1e1, fmax(f32), -0.0, 0.0, -fmin(f32), 1e1, -fmin(f32), -fmin(f32), -fmin(f32), 1e1, fmin(f32), -inf(f32), fmax(f32),
41859677 });
41869678 try testArgs(@Vector(69, f32), .{
4187 nan(f32), 0.1, -tmin(f32), fmax(f32), nan(f32), -fmax(f32), 0.1, fmax(f32), 10.0, inf(f32), -fmin(f32), -fmax(f32), inf(f32), -nan(f32), 0.1, 1.0,
4188 fmax(f32), 0.1, 10.0, 0.0, -10.0, fmax(f32), 10.0, 0.0, 1.0, 10.0, -fmax(f32), 0.0, -tmin(f32), -fmin(f32), 0.1, 1.0,
4189 fmin(f32), tmin(f32), -fmin(f32), -tmin(f32), tmin(f32), -inf(f32), -fmax(f32), -0.0, -1.0, -0.0, -fmax(f32), fmax(f32), fmin(f32), -0.0, 0.0, -inf(f32),
4190 -tmin(f32), inf(f32), -nan(f32), tmin(f32), -1.0, -tmin(f32), 10.0, -inf(f32), -fmin(f32), 0.1, -inf(f32), -1.0, nan(f32), -inf(f32), -tmin(f32), 10.0,
4191 10.0, -nan(f32), -nan(f32), tmin(f32), -nan(f32),
9679 nan(f32), 1e-1, -tmin(f32), fmax(f32), nan(f32), -fmax(f32), 1e-1, fmax(f32), 1e1, inf(f32), -fmin(f32), -fmax(f32), inf(f32), -nan(f32), 1e-1, 1e0,
9680 fmax(f32), 1e-1, 1e1, 0.0, -1e1, fmax(f32), 1e1, 0.0, 1e0, 1e1, -fmax(f32), 0.0, -tmin(f32), -fmin(f32), 1e-1, 1e0,
9681 fmin(f32), tmin(f32), -fmin(f32), -tmin(f32), tmin(f32), -inf(f32), -fmax(f32), -0.0, -1e0, -0.0, -fmax(f32), fmax(f32), fmin(f32), -0.0, 0.0, -inf(f32),
9682 -tmin(f32), inf(f32), -nan(f32), tmin(f32), -1e0, -tmin(f32), 1e1, -inf(f32), -fmin(f32), 1e-1, -inf(f32), -1e0, nan(f32), -inf(f32), -tmin(f32), 1e1,
9683 1e1, -nan(f32), -nan(f32), tmin(f32), -nan(f32),
41929684 }, .{
4193 -nan(f32), 1.0, fmax(f32), 0.1, -0.0, 1.0, -inf(f32), -fmin(f32), -nan(f32), inf(f32), 1.0, -nan(f32), -nan(f32), -inf(f32), tmin(f32), -fmin(f32),
4194 -nan(f32), 0.1, fmin(f32), -1.0, -fmax(f32), 0.1, -1.0, 0.1, 0.1, -tmin(f32), 0.1, 0.1, 10.0, fmin(f32), 0.0, nan(f32),
4195 tmin(f32), 1.0, nan(f32), -fmin(f32), tmin(f32), nan(f32), 0.1, nan(f32), 1.0, -fmax(f32), tmin(f32), 1.0, 0.0, -1.0, nan(f32), fmin(f32),
4196 -inf(f32), fmax(f32), -0.0, nan(f32), tmin(f32), tmin(f32), -inf(f32), -10.0, -nan(f32), -fmax(f32), -0.0, 0.1, -inf(f32), 1.0, nan(f32), 1.0,
4197 -10.0, fmin(f32), inf(f32), fmin(f32), 0.0,
9685 -nan(f32), 1e0, fmax(f32), 1e-1, -0.0, 1e0, -inf(f32), -fmin(f32), -nan(f32), inf(f32), 1e0, -nan(f32), -nan(f32), -inf(f32), tmin(f32), -fmin(f32),
9686 -nan(f32), 1e-1, fmin(f32), -1e0, -fmax(f32), 1e-1, -1e0, 1e-1, 1e-1, -tmin(f32), 1e-1, 1e-1, 1e1, fmin(f32), 0.0, nan(f32),
9687 tmin(f32), 1e0, nan(f32), -fmin(f32), tmin(f32), nan(f32), 1e-1, nan(f32), 1e0, -fmax(f32), tmin(f32), 1e0, 0.0, -1e0, nan(f32), fmin(f32),
9688 -inf(f32), fmax(f32), -0.0, nan(f32), tmin(f32), tmin(f32), -inf(f32), -1e1, -nan(f32), -fmax(f32), -0.0, 1e-1, -inf(f32), 1e0, nan(f32), 1e0,
9689 -1e1, fmin(f32), inf(f32), fmin(f32), 0.0,
41989690 });
41999691
42009692 try testArgs(@Vector(1, f64), .{
42019693 -0.0,
42029694 }, .{
4203 1.0,
9695 1e0,
42049696 });
42059697 try testArgs(@Vector(2, f64), .{
4206 -1.0, 0.0,
9698 -1e0, 0.0,
42079699 }, .{
42089700 -inf(f64), -fmax(f64),
42099701 });
42109702 try testArgs(@Vector(4, f64), .{
4211 -inf(f64), inf(f64), 10.0, 0.0,
9703 -inf(f64), inf(f64), 1e1, 0.0,
42129704 }, .{
4213 -tmin(f64), 1.0, nan(f64), 0.0,
9705 -tmin(f64), 1e0, nan(f64), 0.0,
42149706 });
42159707 try testArgs(@Vector(8, f64), .{
4216 0.1, -tmin(f64), -fmax(f64), 1.0, inf(f64), -10.0, -tmin(f64), -10.0,
9708 1e-1, -tmin(f64), -fmax(f64), 1e0, inf(f64), -1e1, -tmin(f64), -1e1,
42179709 }, .{
4218 tmin(f64), fmin(f64), 0.1, 10.0, -0.0, -0.0, fmax(f64), -1.0,
9710 tmin(f64), fmin(f64), 1e-1, 1e1, -0.0, -0.0, fmax(f64), -1e0,
42199711 });
42209712 try testArgs(@Vector(16, f64), .{
4221 0.1, -nan(f64), 1.0, tmin(f64), fmax(f64), -fmax(f64), -tmin(f64), -0.0, -fmin(f64), -1.0, -fmax(f64), -nan(f64), -fmax(f64), nan(f64), -0.0, 0.1,
9713 1e-1, -nan(f64), 1e0, tmin(f64), fmax(f64), -fmax(f64), -tmin(f64), -0.0, -fmin(f64), -1e0, -fmax(f64), -nan(f64), -fmax(f64), nan(f64), -0.0, 1e-1,
42229714 }, .{
4223 -1.0, -tmin(f64), -fmin(f64), 0.1, 0.1, -0.0, -nan(f64), -inf(f64), -inf(f64), -0.0, nan(f64), tmin(f64), 1.0, 0.1, tmin(f64), fmin(f64),
9715 -1e0, -tmin(f64), -fmin(f64), 1e-1, 1e-1, -0.0, -nan(f64), -inf(f64), -inf(f64), -0.0, nan(f64), tmin(f64), 1e0, 1e-1, tmin(f64), fmin(f64),
42249716 });
42259717 try testArgs(@Vector(32, f64), .{
4226 -fmax(f64), fmin(f64), 0.1, 0.1, 0.0, 1.0, -0.0, -tmin(f64), tmin(f64), inf(f64), -tmin(f64), -tmin(f64), -tmin(f64), -fmax(f64), fmin(f64), 1.0,
4227 -fmin(f64), -nan(f64), 1.0, -inf(f64), -nan(f64), -1.0, 0.0, 0.0, nan(f64), -nan(f64), -fmin(f64), fmin(f64), 0.1, nan(f64), tmin(f64), -fmax(f64),
9718 -fmax(f64), fmin(f64), 1e-1, 1e-1, 0.0, 1e0, -0.0, -tmin(f64), tmin(f64), inf(f64), -tmin(f64), -tmin(f64), -tmin(f64), -fmax(f64), fmin(f64), 1e0,
9719 -fmin(f64), -nan(f64), 1e0, -inf(f64), -nan(f64), -1e0, 0.0, 0.0, nan(f64), -nan(f64), -fmin(f64), fmin(f64), 1e-1, nan(f64), tmin(f64), -fmax(f64),
42289720 }, .{
4229 -tmin(f64), -fmax(f64), -inf(f64), -nan(f64), fmin(f64), -inf(f64), 0.1, -fmax(f64), -inf(f64), fmin(f64), inf(f64), -1.0, -tmin(f64), inf(f64), 0.1, nan(f64),
4230 fmin(f64), 10.0, -tmin(f64), -nan(f64), -inf(f64), 1.0, nan(f64), -fmin(f64), -1.0, nan(f64), -1.0, 0.0, 1.0, nan(f64), -1.0, -fmin(f64),
9721 -tmin(f64), -fmax(f64), -inf(f64), -nan(f64), fmin(f64), -inf(f64), 1e-1, -fmax(f64), -inf(f64), fmin(f64), inf(f64), -1e0, -tmin(f64), inf(f64), 1e-1, nan(f64),
9722 fmin(f64), 1e1, -tmin(f64), -nan(f64), -inf(f64), 1e0, nan(f64), -fmin(f64), -1e0, nan(f64), -1e0, 0.0, 1e0, nan(f64), -1e0, -fmin(f64),
42319723 });
42329724 try testArgs(@Vector(64, f64), .{
4233 -10.0, fmax(f64), -nan(f64), tmin(f64), 0.1, -1.0, 1.0, -0.0, -fmin(f64), 0.1, -fmin(f64), -0.0, -0.0, tmin(f64), -10.0, 0.1,
4234 -10.0, -fmax(f64), -10.0, -fmin(f64), 0.0, -10.0, nan(f64), 1.0, inf(f64), inf(f64), -inf(f64), tmin(f64), tmin(f64), 0.1, -0.0, 0.1,
4235 -0.0, 0.1, -10.0, 10.0, fmax(f64), -fmin(f64), 1.0, fmax(f64), 1.0, -10.0, fmin(f64), fmax(f64), -1.0, -0.0, -0.0, fmax(f64),
4236 -inf(f64), -inf(f64), -tmin(f64), -fmax(f64), -nan(f64), tmin(f64), -1.0, 0.0, -inf(f64), fmax(f64), nan(f64), -inf(f64), fmin(f64), -nan(f64), -nan(f64), -10.0,
9725 -1e1, fmax(f64), -nan(f64), tmin(f64), 1e-1, -1e0, 1e0, -0.0, -fmin(f64), 1e-1, -fmin(f64), -0.0, -0.0, tmin(f64), -1e1, 1e-1,
9726 -1e1, -fmax(f64), -1e1, -fmin(f64), 0.0, -1e1, nan(f64), 1e0, inf(f64), inf(f64), -inf(f64), tmin(f64), tmin(f64), 1e-1, -0.0, 1e-1,
9727 -0.0, 1e-1, -1e1, 1e1, fmax(f64), -fmin(f64), 1e0, fmax(f64), 1e0, -1e1, fmin(f64), fmax(f64), -1e0, -0.0, -0.0, fmax(f64),
9728 -inf(f64), -inf(f64), -tmin(f64), -fmax(f64), -nan(f64), tmin(f64), -1e0, 0.0, -inf(f64), fmax(f64), nan(f64), -inf(f64), fmin(f64), -nan(f64), -nan(f64), -1e1,
42379729 }, .{
4238 nan(f64), -1.0, 0.0, -10.0, -fmax(f64), -fmin(f64), -nan(f64), -tmin(f64), 0.1, -1.0, -nan(f64), -fmax(f64), 0.0, 0.0, 10.0, inf(f64),
4239 fmin(f64), 0.0, -10.0, 1.0, -tmin(f64), -inf(f64), -fmax(f64), 0.0, -fmin(f64), -1.0, -fmin(f64), tmin(f64), 1.0, -10.0, fmin(f64), 0.1,
4240 inf(f64), -0.0, tmin(f64), -fmax(f64), -tmin(f64), -fmax(f64), fmin(f64), -fmax(f64), 0.1, 1.0, 1.0, 0.0, fmin(f64), nan(f64), -10.0, tmin(f64),
4241 inf(f64), 0.1, 1.0, -nan(f64), 1.0, -fmin(f64), fmax(f64), inf(f64), fmin(f64), -inf(f64), -0.0, 0.0, -1.0, -0.0, 0.1, 0.1,
9730 nan(f64), -1e0, 0.0, -1e1, -fmax(f64), -fmin(f64), -nan(f64), -tmin(f64), 1e-1, -1e0, -nan(f64), -fmax(f64), 0.0, 0.0, 1e1, inf(f64),
9731 fmin(f64), 0.0, -1e1, 1e0, -tmin(f64), -inf(f64), -fmax(f64), 0.0, -fmin(f64), -1e0, -fmin(f64), tmin(f64), 1e0, -1e1, fmin(f64), 1e-1,
9732 inf(f64), -0.0, tmin(f64), -fmax(f64), -tmin(f64), -fmax(f64), fmin(f64), -fmax(f64), 1e-1, 1e0, 1e0, 0.0, fmin(f64), nan(f64), -1e1, tmin(f64),
9733 inf(f64), 1e-1, 1e0, -nan(f64), 1e0, -fmin(f64), fmax(f64), inf(f64), fmin(f64), -inf(f64), -0.0, 0.0, -1e0, -0.0, 1e-1, 1e-1,
42429734 });
42439735 try testArgs(@Vector(128, f64), .{
4244 nan(f64), -fmin(f64), fmax(f64), fmin(f64), -10.0, nan(f64), tmin(f64), fmax(f64), inf(f64), -nan(f64), tmin(f64), -nan(f64), -0.0, fmin(f64), fmax(f64),
4245 -inf(f64), inf(f64), -1.0, 0.0, 0.1, fmin(f64), 0.0, 0.1, -1.0, -inf(f64), 0.1, fmax(f64), fmin(f64), fmax(f64), -fmax(f64),
4246 fmin(f64), inf(f64), -fmin(f64), -10.0, -0.0, 0.1, nan(f64), -fmax(f64), -fmax(f64), -1.0, 10.0, 10.0, -1.0, -inf(f64), inf(f64),
4247 -fmin(f64), 1.0, -inf(f64), -10.0, 0.1, 1.0, 10.0, 10.0, tmin(f64), nan(f64), inf(f64), 0.0, -1.0, -10.0, 1.0,
4248 -tmin(f64), -fmax(f64), -nan(f64), 10.0, 0.1, tmin(f64), 0.0, 10.0, 0.1, -tmin(f64), -tmin(f64), 1.0, -fmax(f64), nan(f64), -fmin(f64),
4249 nan(f64), 10.0, -1.0, -0.0, -tmin(f64), nan(f64), 10.0, 10.0, -inf(f64), 0.1, -nan(f64), -10.0, -tmin(f64), -fmax(f64), -fmax(f64),
4250 inf(f64), -inf(f64), tmin(f64), 1.0, -inf(f64), -10.0, inf(f64), 0.1, -nan(f64), -inf(f64), fmax(f64), 0.1, -inf(f64), 0.1, 1.0,
4251 0.1, 0.1, 0.1, inf(f64), -inf(f64), 1.0, 10.0, 10.0, nan(f64), 10.0, -tmin(f64), 1.0, -fmin(f64), -1.0, -fmax(f64),
4252 -fmin(f64), -fmin(f64), -1.0, inf(f64), nan(f64), tmin(f64), 0.1, -1.0,
9736 nan(f64), -fmin(f64), fmax(f64), fmin(f64), -1e1, nan(f64), tmin(f64), fmax(f64), inf(f64), -nan(f64), tmin(f64), -nan(f64), -0.0, fmin(f64), fmax(f64),
9737 -inf(f64), inf(f64), -1e0, 0.0, 1e-1, fmin(f64), 0.0, 1e-1, -1e0, -inf(f64), 1e-1, fmax(f64), fmin(f64), fmax(f64), -fmax(f64),
9738 fmin(f64), inf(f64), -fmin(f64), -1e1, -0.0, 1e-1, nan(f64), -fmax(f64), -fmax(f64), -1e0, 1e1, 1e1, -1e0, -inf(f64), inf(f64),
9739 -fmin(f64), 1e0, -inf(f64), -1e1, 1e-1, 1e0, 1e1, 1e1, tmin(f64), nan(f64), inf(f64), 0.0, -1e0, -1e1, 1e0,
9740 -tmin(f64), -fmax(f64), -nan(f64), 1e1, 1e-1, tmin(f64), 0.0, 1e1, 1e-1, -tmin(f64), -tmin(f64), 1e0, -fmax(f64), nan(f64), -fmin(f64),
9741 nan(f64), 1e1, -1e0, -0.0, -tmin(f64), nan(f64), 1e1, 1e1, -inf(f64), 1e-1, -nan(f64), -1e1, -tmin(f64), -fmax(f64), -fmax(f64),
9742 inf(f64), -inf(f64), tmin(f64), 1e0, -inf(f64), -1e1, inf(f64), 1e-1, -nan(f64), -inf(f64), fmax(f64), 1e-1, -inf(f64), 1e-1, 1e0,
9743 1e-1, 1e-1, 1e-1, inf(f64), -inf(f64), 1e0, 1e1, 1e1, nan(f64), 1e1, -tmin(f64), 1e0, -fmin(f64), -1e0, -fmax(f64),
9744 -fmin(f64), -fmin(f64), -1e0, inf(f64), nan(f64), tmin(f64), 1e-1, -1e0,
42539745 }, .{
4254 0.0, 0.0, inf(f64), -0.0, 0.1, -nan(f64), 10.0, -nan(f64), tmin(f64), -10.0, -0.0, inf(f64), -fmin(f64), 0.1, fmax(f64),
4255 nan(f64), -tmin(f64), tmin(f64), 1.0, 0.1, -10.0, -nan(f64), 1.0, inf(f64), -10.0, fmin(f64), 0.1, 10.0, -10.0, 10.0,
4256 -nan(f64), -nan(f64), 0.1, 0.0, 10.0, -fmax(f64), -tmin(f64), tmin(f64), -1.0, -tmin(f64), -10.0, 0.1, -fmax(f64), 10.0, nan(f64),
4257 fmax(f64), -1.0, -1.0, -tmin(f64), fmax(f64), -10.0, 0.1, 1.0, fmin(f64), inf(f64), 0.1, tmin(f64), 0.1, -fmax(f64), fmax(f64),
4258 -10.0, -fmax(f64), fmax(f64), tmin(f64), -fmin(f64), inf(f64), 0.1, -0.0, fmax(f64), tmin(f64), 0.1, 1.0, -inf(f64), 1.0, 10.0,
4259 0.1, 0.0, -10.0, -nan(f64), 10.0, -fmin(f64), -tmin(f64), 10.0, 1.0, -tmin(f64), -1.0, -fmin(f64), -0.0, -10.0, 0.1,
4260 inf(f64), -fmax(f64), 0.1, tmin(f64), -0.0, fmax(f64), 0.0, -nan(f64), -fmin(f64), fmax(f64), -0.0, nan(f64), -inf(f64), tmin(f64), 0.1,
4261 inf(f64), 0.0, 10.0, -fmax(f64), tmin(f64), -0.0, fmin(f64), -nan(f64), -10.0, -inf(f64), nan(f64), inf(f64), -0.0, 10.0, fmax(f64),
4262 tmin(f64), -10.0, -nan(f64), 10.0, -inf(f64), -fmax(f64), -inf(f64), -1.0,
9746 0.0, 0.0, inf(f64), -0.0, 1e-1, -nan(f64), 1e1, -nan(f64), tmin(f64), -1e1, -0.0, inf(f64), -fmin(f64), 1e-1, fmax(f64),
9747 nan(f64), -tmin(f64), tmin(f64), 1e0, 1e-1, -1e1, -nan(f64), 1e0, inf(f64), -1e1, fmin(f64), 1e-1, 1e1, -1e1, 1e1,
9748 -nan(f64), -nan(f64), 1e-1, 0.0, 1e1, -fmax(f64), -tmin(f64), tmin(f64), -1e0, -tmin(f64), -1e1, 1e-1, -fmax(f64), 1e1, nan(f64),
9749 fmax(f64), -1e0, -1e0, -tmin(f64), fmax(f64), -1e1, 1e-1, 1e0, fmin(f64), inf(f64), 1e-1, tmin(f64), 1e-1, -fmax(f64), fmax(f64),
9750 -1e1, -fmax(f64), fmax(f64), tmin(f64), -fmin(f64), inf(f64), 1e-1, -0.0, fmax(f64), tmin(f64), 1e-1, 1e0, -inf(f64), 1e0, 1e1,
9751 1e-1, 0.0, -1e1, -nan(f64), 1e1, -fmin(f64), -tmin(f64), 1e1, 1e0, -tmin(f64), -1e0, -fmin(f64), -0.0, -1e1, 1e-1,
9752 inf(f64), -fmax(f64), 1e-1, tmin(f64), -0.0, fmax(f64), 0.0, -nan(f64), -fmin(f64), fmax(f64), -0.0, nan(f64), -inf(f64), tmin(f64), 1e-1,
9753 inf(f64), 0.0, 1e1, -fmax(f64), tmin(f64), -0.0, fmin(f64), -nan(f64), -1e1, -inf(f64), nan(f64), inf(f64), -0.0, 1e1, fmax(f64),
9754 tmin(f64), -1e1, -nan(f64), 1e1, -inf(f64), -fmax(f64), -inf(f64), -1e0,
42639755 });
42649756 try testArgs(@Vector(69, f64), .{
4265 inf(f64), -0.0, -fmax(f64), fmax(f64), fmax(f64), 0.0, fmin(f64), -nan(f64), 0.1, 0.1, 0.1, -fmin(f64), inf(f64), 0.1, fmax(f64), nan(f64),
4266 tmin(f64), -10.0, 10.0, -tmin(f64), -0.0, nan(f64), -10.0, fmin(f64), 0.0, -0.0, 0.1, inf(f64), -tmin(f64), -nan(f64), inf(f64), -nan(f64),
4267 -inf(f64), fmax(f64), 0.1, -fmin(f64), 0.1, -1.0, fmin(f64), fmin(f64), fmin(f64), 10.0, -fmin(f64), nan(f64), 0.0, 0.0, 10.0, nan(f64),
4268 -tmin(f64), tmin(f64), tmin(f64), fmin(f64), -0.0, -1.0, 0.1, 1.0, fmax(f64), tmin(f64), fmin(f64), 0.0, -fmin(f64), fmin(f64), -tmin(f64), 0.0,
4269 -nan(f64), 10.0, -1.0, 0.1, 0.0,
9757 inf(f64), -0.0, -fmax(f64), fmax(f64), fmax(f64), 0.0, fmin(f64), -nan(f64), 1e-1, 1e-1, 1e-1, -fmin(f64), inf(f64), 1e-1, fmax(f64), nan(f64),
9758 tmin(f64), -1e1, 1e1, -tmin(f64), -0.0, nan(f64), -1e1, fmin(f64), 0.0, -0.0, 1e-1, inf(f64), -tmin(f64), -nan(f64), inf(f64), -nan(f64),
9759 -inf(f64), fmax(f64), 1e-1, -fmin(f64), 1e-1, -1e0, fmin(f64), fmin(f64), fmin(f64), 1e1, -fmin(f64), nan(f64), 0.0, 0.0, 1e1, nan(f64),
9760 -tmin(f64), tmin(f64), tmin(f64), fmin(f64), -0.0, -1e0, 1e-1, 1e0, fmax(f64), tmin(f64), fmin(f64), 0.0, -fmin(f64), fmin(f64), -tmin(f64), 0.0,
9761 -nan(f64), 1e1, -1e0, 1e-1, 0.0,
42709762 }, .{
4271 -10.0, -0.0, fmin(f64), -fmin(f64), nan(f64), 10.0, -tmin(f64), -fmax(f64), 10.0, 0.1, -fmin(f64), inf(f64), -inf(f64), -tmin(f64), 1.0, tmin(f64),
4272 -tmin(f64), -nan(f64), fmax(f64), 0.0, -1.0, 10.0, inf(f64), fmin(f64), fmax(f64), 0.1, 0.1, fmax(f64), -inf(f64), 0.1, 0.1, fmin(f64),
4273 0.1, fmin(f64), -10.0, nan(f64), 0.0, 0.0, fmax(f64), -inf(f64), tmin(f64), inf(f64), -tmin(f64), fmax(f64), -inf(f64), -10.0, -1.0, fmin(f64),
4274 0.1, -nan(f64), fmax(f64), -fmin(f64), fmax(f64), nan(f64), -0.0, -fmax(f64), 10.0, nan(f64), inf(f64), -1.0, -fmin(f64), nan(f64), -fmin(f64), -0.0,
4275 -nan(f64), -fmin(f64), 0.1, nan(f64), 0.1,
9763 -1e1, -0.0, fmin(f64), -fmin(f64), nan(f64), 1e1, -tmin(f64), -fmax(f64), 1e1, 1e-1, -fmin(f64), inf(f64), -inf(f64), -tmin(f64), 1e0, tmin(f64),
9764 -tmin(f64), -nan(f64), fmax(f64), 0.0, -1e0, 1e1, inf(f64), fmin(f64), fmax(f64), 1e-1, 1e-1, fmax(f64), -inf(f64), 1e-1, 1e-1, fmin(f64),
9765 1e-1, fmin(f64), -1e1, nan(f64), 0.0, 0.0, fmax(f64), -inf(f64), tmin(f64), inf(f64), -tmin(f64), fmax(f64), -inf(f64), -1e1, -1e0, fmin(f64),
9766 1e-1, -nan(f64), fmax(f64), -fmin(f64), fmax(f64), nan(f64), -0.0, -fmax(f64), 1e1, nan(f64), inf(f64), -1e0, -fmin(f64), nan(f64), -fmin(f64), -0.0,
9767 -nan(f64), -fmin(f64), 1e-1, nan(f64), 1e-1,
42769768 });
42779769
42789770 try testArgs(@Vector(1, f80), .{
42799771 -nan(f80),
42809772 }, .{
4281 -1.0,
9773 -1e0,
42829774 });
42839775 try testArgs(@Vector(2, f80), .{
42849776 -fmax(f80), -inf(f80),
42859777 }, .{
4286 0.1, 10.0,
9778 1e-1, 1e1,
42879779 });
42889780 try testArgs(@Vector(4, f80), .{
4289 -0.0, -inf(f80), 0.1, 10.0,
9781 -0.0, -inf(f80), 1e-1, 1e1,
42909782 }, .{
4291 -1.0, 0.0, 0.1, -10.0,
9783 -1e0, 0.0, 1e-1, -1e1,
42929784 });
42939785 try testArgs(@Vector(8, f80), .{
4294 1.0, -0.0, -inf(f80), 0.1, -inf(f80), fmin(f80), 0.0, 10.0,
9786 1e0, -0.0, -inf(f80), 1e-1, -inf(f80), fmin(f80), 0.0, 1e1,
42959787 }, .{
4296 -0.0, -fmin(f80), fmin(f80), -nan(f80), nan(f80), inf(f80), fmin(f80), 10.0,
9788 -0.0, -fmin(f80), fmin(f80), -nan(f80), nan(f80), inf(f80), fmin(f80), 1e1,
42979789 });
42989790 try testArgs(@Vector(16, f80), .{
4299 10.0, inf(f80), -fmin(f80), 0.1, -tmin(f80), -0.0, -inf(f80), -1.0, -fmax(f80), -nan(f80), -tmin(f80), 10.0, 10.0, -inf(f80), -fmax(f80), fmax(f80),
9791 1e1, inf(f80), -fmin(f80), 1e-1, -tmin(f80), -0.0, -inf(f80), -1e0, -fmax(f80), -nan(f80), -tmin(f80), 1e1, 1e1, -inf(f80), -fmax(f80), fmax(f80),
43009792 }, .{
4301 -inf(f80), nan(f80), -fmax(f80), fmin(f80), 1.0, 0.1, -inf(f80), nan(f80), 0.1, nan(f80), -inf(f80), nan(f80), tmin(f80), 0.1, -tmin(f80), -10.0,
9793 -inf(f80), nan(f80), -fmax(f80), fmin(f80), 1e0, 1e-1, -inf(f80), nan(f80), 1e-1, nan(f80), -inf(f80), nan(f80), tmin(f80), 1e-1, -tmin(f80), -1e1,
43029794 });
43039795 try testArgs(@Vector(32, f80), .{
4304 inf(f80), -0.0, 0.1, -0.0, 0.1, -fmin(f80), -0.0, fmax(f80), nan(f80), -tmin(f80), nan(f80), -10.0, 0.0, 1.0, 10.0, -fmin(f80),
4305 fmin(f80), 0.1, inf(f80), -0.0, nan(f80), tmin(f80), -tmin(f80), fmin(f80), tmin(f80), -0.0, nan(f80), -fmax(f80), tmin(f80), -fmin(f80), 1.0, tmin(f80),
9796 inf(f80), -0.0, 1e-1, -0.0, 1e-1, -fmin(f80), -0.0, fmax(f80), nan(f80), -tmin(f80), nan(f80), -1e1, 0.0, 1e0, 1e1, -fmin(f80),
9797 fmin(f80), 1e-1, inf(f80), -0.0, nan(f80), tmin(f80), -tmin(f80), fmin(f80), tmin(f80), -0.0, nan(f80), -fmax(f80), tmin(f80), -fmin(f80), 1e0, tmin(f80),
43069798 }, .{
4307 0.0, -10.0, fmax(f80), -inf(f80), 0.1, -inf(f80), inf(f80), 10.0, -1.0, -10.0, -fmin(f80), 0.0, inf(f80), 1.0, -nan(f80), 0.0,
4308 0.1, nan(f80), 1.0, -fmax(f80), fmin(f80), -inf(f80), -fmax(f80), 0.1, -10.0, tmin(f80), fmax(f80), -0.0, -fmin(f80), -fmin(f80), fmin(f80), -tmin(f80),
9799 0.0, -1e1, fmax(f80), -inf(f80), 1e-1, -inf(f80), inf(f80), 1e1, -1e0, -1e1, -fmin(f80), 0.0, inf(f80), 1e0, -nan(f80), 0.0,
9800 1e-1, nan(f80), 1e0, -fmax(f80), fmin(f80), -inf(f80), -fmax(f80), 1e-1, -1e1, tmin(f80), fmax(f80), -0.0, -fmin(f80), -fmin(f80), fmin(f80), -tmin(f80),
43099801 });
43109802 try testArgs(@Vector(64, f80), .{
4311 -fmax(f80), 0.1, -1.0, 1.0, inf(f80), 0.1, -10.0, 0.1, fmin(f80), -fmin(f80), -10.0, -fmax(f80), 0.0, -10.0, -1.0, -nan(f80),
4312 0.0, 0.1, -1.0, -tmin(f80), 1.0, tmin(f80), fmax(f80), 0.0, -10.0, -tmin(f80), fmax(f80), -0.0, 0.1, -inf(f80), -fmax(f80), -1.0,
4313 -nan(f80), tmin(f80), -tmin(f80), -0.0, -0.0, -1.0, -0.0, fmax(f80), inf(f80), -nan(f80), 0.1, -inf(f80), -tmin(f80), nan(f80), 0.1, 10.0,
4314 nan(f80), -inf(f80), 0.1, tmin(f80), -fmin(f80), 10.0, -10.0, tmin(f80), fmin(f80), nan(f80), 0.1, -nan(f80), tmin(f80), nan(f80), fmax(f80), -fmax(f80),
9803 -fmax(f80), 1e-1, -1e0, 1e0, inf(f80), 1e-1, -1e1, 1e-1, fmin(f80), -fmin(f80), -1e1, -fmax(f80), 0.0, -1e1, -1e0, -nan(f80),
9804 0.0, 1e-1, -1e0, -tmin(f80), 1e0, tmin(f80), fmax(f80), 0.0, -1e1, -tmin(f80), fmax(f80), -0.0, 1e-1, -inf(f80), -fmax(f80), -1e0,
9805 -nan(f80), tmin(f80), -tmin(f80), -0.0, -0.0, -1e0, -0.0, fmax(f80), inf(f80), -nan(f80), 1e-1, -inf(f80), -tmin(f80), nan(f80), 1e-1, 1e1,
9806 nan(f80), -inf(f80), 1e-1, tmin(f80), -fmin(f80), 1e1, -1e1, tmin(f80), fmin(f80), nan(f80), 1e-1, -nan(f80), tmin(f80), nan(f80), fmax(f80), -fmax(f80),
43159807 }, .{
4316 -nan(f80), -fmax(f80), tmin(f80), -inf(f80), -tmin(f80), fmin(f80), -nan(f80), -fmin(f80), fmax(f80), inf(f80), -0.0, -1.0, 0.1, -fmax(f80), 1.0, -inf(f80),
4317 0.0, -nan(f80), -10.0, -1.0, -nan(f80), inf(f80), 1.0, -nan(f80), 10.0, inf(f80), tmin(f80), 0.1, tmin(f80), -tmin(f80), -inf(f80), -fmin(f80),
4318 fmax(f80), fmax(f80), 0.1, -tmin(f80), -nan(f80), -1.0, fmin(f80), -nan(f80), -nan(f80), inf(f80), -1.0, 0.1, -fmin(f80), -tmin(f80), 0.0, -0.0,
4319 0.1, -fmin(f80), -inf(f80), -1.0, -tmin(f80), 1.0, -inf(f80), -0.0, 0.0, 1.0, tmin(f80), 0.0, 0.1, -nan(f80), fmax(f80), 1.0,
9808 -nan(f80), -fmax(f80), tmin(f80), -inf(f80), -tmin(f80), fmin(f80), -nan(f80), -fmin(f80), fmax(f80), inf(f80), -0.0, -1e0, 1e-1, -fmax(f80), 1e0, -inf(f80),
9809 0.0, -nan(f80), -1e1, -1e0, -nan(f80), inf(f80), 1e0, -nan(f80), 1e1, inf(f80), tmin(f80), 1e-1, tmin(f80), -tmin(f80), -inf(f80), -fmin(f80),
9810 fmax(f80), fmax(f80), 1e-1, -tmin(f80), -nan(f80), -1e0, fmin(f80), -nan(f80), -nan(f80), inf(f80), -1e0, 1e-1, -fmin(f80), -tmin(f80), 0.0, -0.0,
9811 1e-1, -fmin(f80), -inf(f80), -1e0, -tmin(f80), 1e0, -inf(f80), -0.0, 0.0, 1e0, tmin(f80), 0.0, 1e-1, -nan(f80), fmax(f80), 1e0,
43209812 });
43219813 try testArgs(@Vector(128, f80), .{
4322 0.1, -0.0, 0.1, 0.0, fmin(f80), -1.0, 1.0, -inf(f80), fmax(f80), -fmin(f80), nan(f80), 10.0, 0.1, 0.1, -fmin(f80), -inf(f80),
4323 -1.0, -inf(f80), 1.0, -fmin(f80), inf(f80), -nan(f80), 10.0, inf(f80), tmin(f80), nan(f80), -10.0, inf(f80), 10.0, inf(f80), -10.0, 0.0,
4324 -10.0, fmin(f80), -tmin(f80), 1.0, -fmax(f80), nan(f80), 0.0, fmax(f80), 0.1, -1.0, -fmin(f80), inf(f80), -tmin(f80), nan(f80), -tmin(f80), 10.0,
4325 -10.0, -tmin(f80), -1.0, -tmin(f80), -fmax(f80), 10.0, -1.0, -inf(f80), -nan(f80), 0.0, 1.0, fmax(f80), -tmin(f80), -fmin(f80), fmin(f80), fmin(f80),
4326 -10.0, -fmax(f80), -tmin(f80), inf(f80), 1.0, 0.0, tmin(f80), -nan(f80), -fmin(f80), 0.1, -nan(f80), 0.0, 0.1, -10.0, -0.0, -nan(f80),
4327 1.0, 10.0, -10.0, fmin(f80), -nan(f80), fmax(f80), -0.0, 1.0, inf(f80), 1.0, -fmin(f80), -fmin(f80), 0.0, 0.1, inf(f80), 10.0,
4328 tmin(f80), -1.0, fmax(f80), -0.0, fmax(f80), fmax(f80), 0.1, -fmin(f80), -10.0, 1.0, -fmin(f80), -fmax(f80), fmin(f80), -fmax(f80), -0.0, -1.0,
4329 -nan(f80), -inf(f80), nan(f80), -fmax(f80), inf(f80), -inf(f80), -nan(f80), fmin(f80), nan(f80), -1.0, tmin(f80), tmin(f80), 0.1, 10.0, -tmin(f80), -nan(f80),
9814 1e-1, -0.0, 1e-1, 0.0, fmin(f80), -1e0, 1e0, -inf(f80), fmax(f80), -fmin(f80), nan(f80), 1e1, 1e-1, 1e-1, -fmin(f80), -inf(f80),
9815 -1e0, -inf(f80), 1e0, -fmin(f80), inf(f80), -nan(f80), 1e1, inf(f80), tmin(f80), nan(f80), -1e1, inf(f80), 1e1, inf(f80), -1e1, 0.0,
9816 -1e1, fmin(f80), -tmin(f80), 1e0, -fmax(f80), nan(f80), 0.0, fmax(f80), 1e-1, -1e0, -fmin(f80), inf(f80), -tmin(f80), nan(f80), -tmin(f80), 1e1,
9817 -1e1, -tmin(f80), -1e0, -tmin(f80), -fmax(f80), 1e1, -1e0, -inf(f80), -nan(f80), 0.0, 1e0, fmax(f80), -tmin(f80), -fmin(f80), fmin(f80), fmin(f80),
9818 -1e1, -fmax(f80), -tmin(f80), inf(f80), 1e0, 0.0, tmin(f80), -nan(f80), -fmin(f80), 1e-1, -nan(f80), 0.0, 1e-1, -1e1, -0.0, -nan(f80),
9819 1e0, 1e1, -1e1, fmin(f80), -nan(f80), fmax(f80), -0.0, 1e0, inf(f80), 1e0, -fmin(f80), -fmin(f80), 0.0, 1e-1, inf(f80), 1e1,
9820 tmin(f80), -1e0, fmax(f80), -0.0, fmax(f80), fmax(f80), 1e-1, -fmin(f80), -1e1, 1e0, -fmin(f80), -fmax(f80), fmin(f80), -fmax(f80), -0.0, -1e0,
9821 -nan(f80), -inf(f80), nan(f80), -fmax(f80), inf(f80), -inf(f80), -nan(f80), fmin(f80), nan(f80), -1e0, tmin(f80), tmin(f80), 1e-1, 1e1, -tmin(f80), -nan(f80),
43309822 }, .{
4331 -1.0, -0.0, 0.0, fmax(f80), -1.0, -0.0, 0.1, tmin(f80), -inf(f80), 10.0, -0.0, 0.1, -tmin(f80), -fmax(f80), tmin(f80), inf(f80),
4332 0.1, 1.0, tmin(f80), nan(f80), -fmax(f80), 10.0, fmin(f80), -1.0, -fmax(f80), nan(f80), -fmin(f80), 10.0, -1.0, tmin(f80), inf(f80), -0.0,
4333 tmin(f80), 1.0, 0.0, -fmin(f80), 0.0, 10.0, -fmax(f80), -0.0, -inf(f80), fmin(f80), -0.0, -0.0, -0.0, -fmax(f80), 0.1, fmax(f80),
4334 -tmin(f80), tmin(f80), -fmax(f80), 10.0, -fmax(f80), 0.1, fmax(f80), -10.0, 0.1, 1.0, -1.0, -1.0, nan(f80), -nan(f80), 10.0, -nan(f80),
4335 nan(f80), -10.0, -tmin(f80), fmin(f80), -tmin(f80), -fmin(f80), tmin(f80), -0.0, 0.1, fmax(f80), tmin(f80), tmin(f80), nan(f80), 0.1, 10.0, 0.1,
4336 inf(f80), inf(f80), 1.0, -inf(f80), -fmax(f80), 0.0, 1.0, -fmax(f80), fmax(f80), nan(f80), fmin(f80), 0.1, -1.0, 1.0, 0.1, -tmin(f80),
4337 10.0, 0.1, -fmax(f80), 0.0, nan(f80), -tmin(f80), 0.1, fmax(f80), fmax(f80), 0.1, -1.0, inf(f80), nan(f80), 10.0, fmax(f80), -nan(f80),
4338 -10.0, -1.0, tmin(f80), fmin(f80), inf(f80), fmax(f80), -fmin(f80), fmin(f80), -inf(f80), -tmin(f80), 1.0, nan(f80), -fmin(f80), -fmin(f80), fmax(f80), 1.0,
9823 -1e0, -0.0, 0.0, fmax(f80), -1e0, -0.0, 1e-1, tmin(f80), -inf(f80), 1e1, -0.0, 1e-1, -tmin(f80), -fmax(f80), tmin(f80), inf(f80),
9824 1e-1, 1e0, tmin(f80), nan(f80), -fmax(f80), 1e1, fmin(f80), -1e0, -fmax(f80), nan(f80), -fmin(f80), 1e1, -1e0, tmin(f80), inf(f80), -0.0,
9825 tmin(f80), 1e0, 0.0, -fmin(f80), 0.0, 1e1, -fmax(f80), -0.0, -inf(f80), fmin(f80), -0.0, -0.0, -0.0, -fmax(f80), 1e-1, fmax(f80),
9826 -tmin(f80), tmin(f80), -fmax(f80), 1e1, -fmax(f80), 1e-1, fmax(f80), -1e1, 1e-1, 1e0, -1e0, -1e0, nan(f80), -nan(f80), 1e1, -nan(f80),
9827 nan(f80), -1e1, -tmin(f80), fmin(f80), -tmin(f80), -fmin(f80), tmin(f80), -0.0, 1e-1, fmax(f80), tmin(f80), tmin(f80), nan(f80), 1e-1, 1e1, 1e-1,
9828 inf(f80), inf(f80), 1e0, -inf(f80), -fmax(f80), 0.0, 1e0, -fmax(f80), fmax(f80), nan(f80), fmin(f80), 1e-1, -1e0, 1e0, 1e-1, -tmin(f80),
9829 1e1, 1e-1, -fmax(f80), 0.0, nan(f80), -tmin(f80), 1e-1, fmax(f80), fmax(f80), 1e-1, -1e0, inf(f80), nan(f80), 1e1, fmax(f80), -nan(f80),
9830 -1e1, -1e0, tmin(f80), fmin(f80), inf(f80), fmax(f80), -fmin(f80), fmin(f80), -inf(f80), -tmin(f80), 1e0, nan(f80), -fmin(f80), -fmin(f80), fmax(f80), 1e0,
43399831 });
43409832 try testArgs(@Vector(69, f80), .{
4341 -10.0, tmin(f80), 0.1, -nan(f80), -inf(f80), -nan(f80), fmin(f80), -0.0, 10.0, fmax(f80), -fmin(f80), 0.1, -nan(f80), inf(f80), 1.0, -1.0,
4342 inf(f80), fmin(f80), -fmax(f80), 0.1, nan(f80), 0.0, 0.0, nan(f80), -10.0, fmax(f80), fmin(f80), -fmax(f80), 1.0, 0.1, 0.0, -fmin(f80),
4343 -tmin(f80), 0.0, -10.0, fmin(f80), 1.0, 10.0, 0.1, nan(f80), -10.0, fmax(f80), 0.1, fmin(f80), -inf(f80), 0.0, tmin(f80), inf(f80),
4344 fmax(f80), 1.0, 0.1, nan(f80), inf(f80), tmin(f80), tmin(f80), -fmax(f80), 0.0, fmin(f80), -inf(f80), 0.1, -tmin(f80), 0.1, -1.0, 0.1,
4345 -fmax(f80), -1.0, 0.1, -1.0, fmax(f80),
9833 -1e1, tmin(f80), 1e-1, -nan(f80), -inf(f80), -nan(f80), fmin(f80), -0.0, 1e1, fmax(f80), -fmin(f80), 1e-1, -nan(f80), inf(f80), 1e0, -1e0,
9834 inf(f80), fmin(f80), -fmax(f80), 1e-1, nan(f80), 0.0, 0.0, nan(f80), -1e1, fmax(f80), fmin(f80), -fmax(f80), 1e0, 1e-1, 0.0, -fmin(f80),
9835 -tmin(f80), 0.0, -1e1, fmin(f80), 1e0, 1e1, 1e-1, nan(f80), -1e1, fmax(f80), 1e-1, fmin(f80), -inf(f80), 0.0, tmin(f80), inf(f80),
9836 fmax(f80), 1e0, 1e-1, nan(f80), inf(f80), tmin(f80), tmin(f80), -fmax(f80), 0.0, fmin(f80), -inf(f80), 1e-1, -tmin(f80), 1e-1, -1e0, 1e-1,
9837 -fmax(f80), -1e0, 1e-1, -1e0, fmax(f80),
43469838 }, .{
4347 -1.0, fmin(f80), inf(f80), -nan(f80), -0.0, fmin(f80), -0.0, nan(f80), -fmax(f80), 0.1, 1.0, -10.0, -tmin(f80), -fmin(f80), 10.0, inf(f80),
4348 -10.0, -tmin(f80), -fmin(f80), 10.0, 0.0, -tmin(f80), 10.0, -10.0, 0.1, 0.1, tmin(f80), fmax(f80), 0.0, 0.1, 0.1, -10.0,
4349 fmin(f80), nan(f80), -10.0, -10.0, -10.0, 0.0, -0.0, 0.1, fmin(f80), fmin(f80), -0.0, -fmin(f80), -nan(f80), -inf(f80), 0.0, -inf(f80),
4350 inf(f80), fmax(f80), -tmin(f80), inf(f80), 0.1, -nan(f80), 0.1, tmin(f80), -10.0, -fmax(f80), -fmax(f80), inf(f80), -nan(f80), 1.0, -inf(f80), 10.0,
4351 nan(f80), 10.0, -10.0, 0.0, -fmin(f80),
9839 -1e0, fmin(f80), inf(f80), -nan(f80), -0.0, fmin(f80), -0.0, nan(f80), -fmax(f80), 1e-1, 1e0, -1e1, -tmin(f80), -fmin(f80), 1e1, inf(f80),
9840 -1e1, -tmin(f80), -fmin(f80), 1e1, 0.0, -tmin(f80), 1e1, -1e1, 1e-1, 1e-1, tmin(f80), fmax(f80), 0.0, 1e-1, 1e-1, -1e1,
9841 fmin(f80), nan(f80), -1e1, -1e1, -1e1, 0.0, -0.0, 1e-1, fmin(f80), fmin(f80), -0.0, -fmin(f80), -nan(f80), -inf(f80), 0.0, -inf(f80),
9842 inf(f80), fmax(f80), -tmin(f80), inf(f80), 1e-1, -nan(f80), 1e-1, tmin(f80), -1e1, -fmax(f80), -fmax(f80), inf(f80), -nan(f80), 1e0, -inf(f80), 1e1,
9843 nan(f80), 1e1, -1e1, 0.0, -fmin(f80),
43529844 });
43539845
43549846 try testArgs(@Vector(1, f128), .{
......@@ -4359,76 +9851,76 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
43599851 try testArgs(@Vector(2, f128), .{
43609852 0.0, -inf(f128),
43619853 }, .{
4362 0.1, -fmin(f128),
9854 1e-1, -fmin(f128),
43639855 });
43649856 try testArgs(@Vector(4, f128), .{
4365 0.1, fmax(f128), 10.0, -fmax(f128),
9857 1e-1, fmax(f128), 1e1, -fmax(f128),
43669858 }, .{
43679859 -tmin(f128), fmax(f128), -0.0, -0.0,
43689860 });
43699861 try testArgs(@Vector(8, f128), .{
4370 10.0, -fmin(f128), 0.0, -inf(f128), 10.0, -0.0, -1.0, -fmin(f128),
9862 1e1, -fmin(f128), 0.0, -inf(f128), 1e1, -0.0, -1e0, -fmin(f128),
43719863 }, .{
4372 fmin(f128), tmin(f128), -1.0, -10.0, 0.0, -tmin(f128), 0.0, 0.1,
9864 fmin(f128), tmin(f128), -1e0, -1e1, 0.0, -tmin(f128), 0.0, 1e-1,
43739865 });
43749866 try testArgs(@Vector(16, f128), .{
4375 -fmin(f128), -10.0, -fmin(f128), 0.1, -10.0, 1.0, -fmax(f128), tmin(f128), -nan(f128), -tmin(f128), 10.0, -inf(f128), -1.0, tmin(f128), -0.0, nan(f128),
9867 -fmin(f128), -1e1, -fmin(f128), 1e-1, -1e1, 1e0, -fmax(f128), tmin(f128), -nan(f128), -tmin(f128), 1e1, -inf(f128), -1e0, tmin(f128), -0.0, nan(f128),
43769868 }, .{
4377 -fmax(f128), fmin(f128), inf(f128), tmin(f128), -10.0, 10.0, fmax(f128), 1.0, -inf(f128), -inf(f128), -fmax(f128), -nan(f128), 1.0, -inf(f128), tmin(f128), tmin(f128),
9869 -fmax(f128), fmin(f128), inf(f128), tmin(f128), -1e1, 1e1, fmax(f128), 1e0, -inf(f128), -inf(f128), -fmax(f128), -nan(f128), 1e0, -inf(f128), tmin(f128), tmin(f128),
43789870 });
43799871 try testArgs(@Vector(32, f128), .{
4380 -0.0, -1.0, 1.0, -fmax(f128), -fmax(f128), 0.1, -fmin(f128), -fmin(f128), -1.0, -tmin(f128), -0.0, -fmax(f128), tmin(f128), inf(f128), 0.0, fmax(f128),
4381 -nan(f128), -0.0, -inf(f128), -1.0, 0.1, -fmin(f128), tmin(f128), -10.0, fmax(f128), -nan(f128), -nan(f128), -fmax(f128), 0.1, inf(f128), -0.0, tmin(f128),
9872 -0.0, -1e0, 1e0, -fmax(f128), -fmax(f128), 1e-1, -fmin(f128), -fmin(f128), -1e0, -tmin(f128), -0.0, -fmax(f128), tmin(f128), inf(f128), 0.0, fmax(f128),
9873 -nan(f128), -0.0, -inf(f128), -1e0, 1e-1, -fmin(f128), tmin(f128), -1e1, fmax(f128), -nan(f128), -nan(f128), -fmax(f128), 1e-1, inf(f128), -0.0, tmin(f128),
43829874 }, .{
4383 -1.0, -10.0, -fmin(f128), -fmin(f128), inf(f128), tmin(f128), nan(f128), 0.0, -fmin(f128), 0.1, -nan(f128), 0.1, -0.0, tmin(f128), 1.0, 0.0,
4384 fmin(f128), fmax(f128), -fmax(f128), -tmin(f128), fmin(f128), -0.0, -1.0, -nan(f128), -inf(f128), 1.0, nan(f128), 1.0, 0.1, -0.0, -fmax(f128), -10.0,
9875 -1e0, -1e1, -fmin(f128), -fmin(f128), inf(f128), tmin(f128), nan(f128), 0.0, -fmin(f128), 1e-1, -nan(f128), 1e-1, -0.0, tmin(f128), 1e0, 0.0,
9876 fmin(f128), fmax(f128), -fmax(f128), -tmin(f128), fmin(f128), -0.0, -1e0, -nan(f128), -inf(f128), 1e0, nan(f128), 1e0, 1e-1, -0.0, -fmax(f128), -1e1,
43859877 });
43869878 try testArgs(@Vector(64, f128), .{
4387 -1.0, -0.0, nan(f128), 0.1, -10.0, 0.0, 1.0, 1.0, -inf(f128), fmin(f128), fmax(f128), nan(f128), -nan(f128), inf(f128), -0.0,
4388 0.1, -inf(f128), -fmax(f128), 10.0, -tmin(f128), -tmin(f128), -fmax(f128), 1.0, 0.1, 0.1, nan(f128), 10.0, 1.0, -tmin(f128), 10.0,
4389 -nan(f128), fmax(f128), fmax(f128), 0.0, fmax(f128), inf(f128), 1.0, -0.0, 0.1, -tmin(f128), fmin(f128), fmax(f128), tmin(f128), inf(f128), -10.0,
4390 -1.0, -1.0, -1.0, -inf(f128), 10.0, -tmin(f128), nan(f128), nan(f128), 0.1, fmin(f128), 0.1, tmin(f128), -10.0, 0.1, 10.0,
4391 fmax(f128), fmax(f128), 0.1, -fmax(f128),
9879 -1e0, -0.0, nan(f128), 1e-1, -1e1, 0.0, 1e0, 1e0, -inf(f128), fmin(f128), fmax(f128), nan(f128), -nan(f128), inf(f128), -0.0,
9880 1e-1, -inf(f128), -fmax(f128), 1e1, -tmin(f128), -tmin(f128), -fmax(f128), 1e0, 1e-1, 1e-1, nan(f128), 1e1, 1e0, -tmin(f128), 1e1,
9881 -nan(f128), fmax(f128), fmax(f128), 0.0, fmax(f128), inf(f128), 1e0, -0.0, 1e-1, -tmin(f128), fmin(f128), fmax(f128), tmin(f128), inf(f128), -1e1,
9882 -1e0, -1e0, -1e0, -inf(f128), 1e1, -tmin(f128), nan(f128), nan(f128), 1e-1, fmin(f128), 1e-1, tmin(f128), -1e1, 1e-1, 1e1,
9883 fmax(f128), fmax(f128), 1e-1, -fmax(f128),
43929884 }, .{
4393 -0.0, 0.1, -0.0, -fmin(f128), 10.0, 0.0, 1.0, -inf(f128), tmin(f128), -1.0, fmin(f128), -nan(f128), -10.0, 0.1, -10.0, 0.1,
4394 0.1, tmin(f128), nan(f128), -1.0, 0.0, -10.0, -10.0, fmax(f128), -fmax(f128), inf(f128), -nan(f128), 0.1, -nan(f128), 1.0, fmax(f128), inf(f128),
4395 nan(f128), fmin(f128), 10.0, inf(f128), 0.0, -inf(f128), 0.1, 0.1, 0.1, -1.0, 0.1, -10.0, inf(f128), -nan(f128), 0.1, inf(f128),
4396 inf(f128), inf(f128), -10.0, -tmin(f128), 0.1, -inf(f128), -fmin(f128), 1.0, -tmin(f128), 1.0, -tmin(f128), -inf(f128), -0.0, -nan(f128), -1.0, -fmax(f128),
9885 -0.0, 1e-1, -0.0, -fmin(f128), 1e1, 0.0, 1e0, -inf(f128), tmin(f128), -1e0, fmin(f128), -nan(f128), -1e1, 1e-1, -1e1, 1e-1,
9886 1e-1, tmin(f128), nan(f128), -1e0, 0.0, -1e1, -1e1, fmax(f128), -fmax(f128), inf(f128), -nan(f128), 1e-1, -nan(f128), 1e0, fmax(f128), inf(f128),
9887 nan(f128), fmin(f128), 1e1, inf(f128), 0.0, -inf(f128), 1e-1, 1e-1, 1e-1, -1e0, 1e-1, -1e1, inf(f128), -nan(f128), 1e-1, inf(f128),
9888 inf(f128), inf(f128), -1e1, -tmin(f128), 1e-1, -inf(f128), -fmin(f128), 1e0, -tmin(f128), 1e0, -tmin(f128), -inf(f128), -0.0, -nan(f128), -1e0, -fmax(f128),
43979889 });
43989890 try testArgs(@Vector(128, f128), .{
4399 -inf(f128), tmin(f128), -fmax(f128), 1.0, fmin(f128), -fmax(f128), -1.0, 0.1, -fmax(f128), -fmin(f128), -10.0, nan(f128), 0.1, nan(f128),
4400 inf(f128), -1.0, tmin(f128), -inf(f128), 0.0, fmax(f128), tmin(f128), -fmin(f128), fmin(f128), -10.0, -fmin(f128), -10.0, 1.0, -nan(f128),
4401 -inf(f128), fmin(f128), inf(f128), -tmin(f128), 0.1, 0.0, 10.0, 1.0, -tmin(f128), -tmin(f128), tmin(f128), 1.0, fmin(f128), 0.1,
4402 0.1, 0.1, fmax(f128), 0.1, inf(f128), 0.0, fmin(f128), -fmin(f128), 10.0, 10.0, -10.0, tmin(f128), inf(f128), inf(f128),
4403 -fmin(f128), 0.0, 0.1, -nan(f128), 0.1, -inf(f128), -nan(f128), -1.0, fmin(f128), -0.0, 10.0, -tmin(f128), 10.0, 1.0,
4404 0.1, -0.0, -tmin(f128), 0.1, -1.0, -tmin(f128), -fmin(f128), tmin(f128), 0.1, -tmin(f128), -nan(f128), -10.0, -inf(f128), 0.0,
4405 0.1, 0.0, -fmin(f128), 0.0, 10.0, 10.0, tmin(f128), inf(f128), -nan(f128), -inf(f128), -1.0, -fmin(f128), -10.0, -fmin(f128),
4406 -inf(f128), -fmax(f128), tmin(f128), tmin(f128), -fmin(f128), 0.1, fmin(f128), fmin(f128), -fmin(f128), nan(f128), -1.0, -0.0, -0.0, 0.1,
4407 fmax(f128), 0.0, -fmax(f128), nan(f128), nan(f128), nan(f128), nan(f128), -nan(f128), fmin(f128), -inf(f128), inf(f128), -fmax(f128), -10.0, fmin(f128),
4408 0.1, fmax(f128),
9891 -inf(f128), tmin(f128), -fmax(f128), 1e0, fmin(f128), -fmax(f128), -1e0, 1e-1, -fmax(f128), -fmin(f128), -1e1, nan(f128), 1e-1, nan(f128),
9892 inf(f128), -1e0, tmin(f128), -inf(f128), 0.0, fmax(f128), tmin(f128), -fmin(f128), fmin(f128), -1e1, -fmin(f128), -1e1, 1e0, -nan(f128),
9893 -inf(f128), fmin(f128), inf(f128), -tmin(f128), 1e-1, 0.0, 1e1, 1e0, -tmin(f128), -tmin(f128), tmin(f128), 1e0, fmin(f128), 1e-1,
9894 1e-1, 1e-1, fmax(f128), 1e-1, inf(f128), 0.0, fmin(f128), -fmin(f128), 1e1, 1e1, -1e1, tmin(f128), inf(f128), inf(f128),
9895 -fmin(f128), 0.0, 1e-1, -nan(f128), 1e-1, -inf(f128), -nan(f128), -1e0, fmin(f128), -0.0, 1e1, -tmin(f128), 1e1, 1e0,
9896 1e-1, -0.0, -tmin(f128), 1e-1, -1e0, -tmin(f128), -fmin(f128), tmin(f128), 1e-1, -tmin(f128), -nan(f128), -1e1, -inf(f128), 0.0,
9897 1e-1, 0.0, -fmin(f128), 0.0, 1e1, 1e1, tmin(f128), inf(f128), -nan(f128), -inf(f128), -1e0, -fmin(f128), -1e1, -fmin(f128),
9898 -inf(f128), -fmax(f128), tmin(f128), tmin(f128), -fmin(f128), 1e-1, fmin(f128), fmin(f128), -fmin(f128), nan(f128), -1e0, -0.0, -0.0, 1e-1,
9899 fmax(f128), 0.0, -fmax(f128), nan(f128), nan(f128), nan(f128), nan(f128), -nan(f128), fmin(f128), -inf(f128), inf(f128), -fmax(f128), -1e1, fmin(f128),
9900 1e-1, fmax(f128),
44099901 }, .{
4410 0.0, 10.0, 0.1, inf(f128), -0.0, -1.0, nan(f128), -10.0, -inf(f128), 0.1, -tmin(f128), 1.0, inf(f128), 0.1, -1.0,
4411 10.0, 0.0, 1.0, nan(f128), tmin(f128), fmax(f128), 10.0, 0.1, 0.1, -fmin(f128), -inf(f128), -nan(f128), -fmin(f128), -0.0, -inf(f128),
4412 -nan(f128), fmax(f128), -fmin(f128), -tmin(f128), -fmin(f128), -fmax(f128), nan(f128), fmin(f128), -fmax(f128), fmax(f128), 1.0, 10.0, -fmax(f128), nan(f128), -fmax(f128),
4413 -inf(f128), nan(f128), -nan(f128), tmin(f128), -1.0, 0.1, 0.1, -1.0, -nan(f128), fmax(f128), 10.0, -inf(f128), 10.0, -0.0, -1.0,
4414 -0.0, -tmin(f128), 10.0, -1.0, -fmax(f128), fmin(f128), fmax(f128), tmin(f128), 10.0, fmin(f128), -nan(f128), 1.0, -tmin(f128), -1.0, fmax(f128),
4415 1.0, -tmin(f128), 0.1, -nan(f128), inf(f128), 0.1, 0.1, fmax(f128), -fmin(f128), fmin(f128), -0.0, fmax(f128), -fmax(f128), -tmin(f128), tmin(f128),
4416 nan(f128), 0.1, tmin(f128), -1.0, fmin(f128), -nan(f128), fmax(f128), 1.0, nan(f128), -nan(f128), inf(f128), -fmin(f128), fmin(f128), 0.1, 10.0,
4417 -tmin(f128), -10.0, 0.0, 0.1, -fmin(f128), -0.0, 0.0, -10.0, fmax(f128), nan(f128), nan(f128), -fmin(f128), -fmax(f128), 10.0, 0.0,
4418 fmin(f128), 10.0, -tmin(f128), -tmin(f128), 0.0, -10.0, 1.0, -fmin(f128),
9902 0.0, 1e1, 1e-1, inf(f128), -0.0, -1e0, nan(f128), -1e1, -inf(f128), 1e-1, -tmin(f128), 1e0, inf(f128), 1e-1, -1e0,
9903 1e1, 0.0, 1e0, nan(f128), tmin(f128), fmax(f128), 1e1, 1e-1, 1e-1, -fmin(f128), -inf(f128), -nan(f128), -fmin(f128), -0.0, -inf(f128),
9904 -nan(f128), fmax(f128), -fmin(f128), -tmin(f128), -fmin(f128), -fmax(f128), nan(f128), fmin(f128), -fmax(f128), fmax(f128), 1e0, 1e1, -fmax(f128), nan(f128), -fmax(f128),
9905 -inf(f128), nan(f128), -nan(f128), tmin(f128), -1e0, 1e-1, 1e-1, -1e0, -nan(f128), fmax(f128), 1e1, -inf(f128), 1e1, -0.0, -1e0,
9906 -0.0, -tmin(f128), 1e1, -1e0, -fmax(f128), fmin(f128), fmax(f128), tmin(f128), 1e1, fmin(f128), -nan(f128), 1e0, -tmin(f128), -1e0, fmax(f128),
9907 1e0, -tmin(f128), 1e-1, -nan(f128), inf(f128), 1e-1, 1e-1, fmax(f128), -fmin(f128), fmin(f128), -0.0, fmax(f128), -fmax(f128), -tmin(f128), tmin(f128),
9908 nan(f128), 1e-1, tmin(f128), -1e0, fmin(f128), -nan(f128), fmax(f128), 1e0, nan(f128), -nan(f128), inf(f128), -fmin(f128), fmin(f128), 1e-1, 1e1,
9909 -tmin(f128), -1e1, 0.0, 1e-1, -fmin(f128), -0.0, 0.0, -1e1, fmax(f128), nan(f128), nan(f128), -fmin(f128), -fmax(f128), 1e1, 0.0,
9910 fmin(f128), 1e1, -tmin(f128), -tmin(f128), 0.0, -1e1, 1e0, -fmin(f128),
44199911 });
44209912 try testArgs(@Vector(69, f128), .{
4421 -1.0, nan(f128), 0.1, 0.1, 0.1, -1.0, -10.0, inf(f128), -0.0, inf(f128), tmin(f128), 0.0, -fmax(f128), -tmin(f128), -10.0, -fmax(f128),
4422 -0.0, 0.0, nan(f128), inf(f128), 1.0, -1.0, 0.1, -0.0, 1.0, fmax(f128), -fmax(f128), 0.0, inf(f128), -inf(f128), -tmin(f128), -inf(f128),
4423 10.0, fmin(f128), 10.0, -10.0, 0.1, 1.0, -0.0, nan(f128), tmin(f128), inf(f128), inf(f128), -nan(f128), -nan(f128), 1.0, -tmin(f128), 0.0,
4424 fmin(f128), fmax(f128), fmin(f128), -10.0, nan(f128), 0.0, -nan(f128), -0.0, -nan(f128), 0.1, -10.0, -tmin(f128), fmax(f128), 1.0, fmin(f128), fmax(f128),
4425 nan(f128), -inf(f128), 1.0, fmin(f128), -nan(f128),
9913 -1e0, nan(f128), 1e-1, 1e-1, 1e-1, -1e0, -1e1, inf(f128), -0.0, inf(f128), tmin(f128), 0.0, -fmax(f128), -tmin(f128), -1e1, -fmax(f128),
9914 -0.0, 0.0, nan(f128), inf(f128), 1e0, -1e0, 1e-1, -0.0, 1e0, fmax(f128), -fmax(f128), 0.0, inf(f128), -inf(f128), -tmin(f128), -inf(f128),
9915 1e1, fmin(f128), 1e1, -1e1, 1e-1, 1e0, -0.0, nan(f128), tmin(f128), inf(f128), inf(f128), -nan(f128), -nan(f128), 1e0, -tmin(f128), 0.0,
9916 fmin(f128), fmax(f128), fmin(f128), -1e1, nan(f128), 0.0, -nan(f128), -0.0, -nan(f128), 1e-1, -1e1, -tmin(f128), fmax(f128), 1e0, fmin(f128), fmax(f128),
9917 nan(f128), -inf(f128), 1e0, fmin(f128), -nan(f128),
44269918 }, .{
4427 -inf(f128), fmax(f128), 0.0, nan(f128), -10.0, tmin(f128), nan(f128), 1.0, 10.0, -fmin(f128), fmin(f128), tmin(f128), 0.0, -fmin(f128), -0.0, fmin(f128),
4428 inf(f128), inf(f128), fmin(f128), fmin(f128), -tmin(f128), -fmax(f128), 10.0, nan(f128), -0.0, 1.0, 10.0, -10.0, -inf(f128), fmin(f128), -fmax(f128), 0.1,
4429 -1.0, -nan(f128), -10.0, tmin(f128), inf(f128), nan(f128), 0.0, -10.0, tmin(f128), 0.0, -fmax(f128), -tmin(f128), 0.1, 0.1, 10.0, 0.1,
4430 fmax(f128), 0.1, 0.0, -fmin(f128), -inf(f128), -inf(f128), -nan(f128), 0.1, -fmax(f128), fmax(f128), -fmax(f128), -0.0, -tmin(f128), -1.0, nan(f128), 0.1,
4431 -1.0, -inf(f128), tmin(f128), inf(f128), inf(f128),
9919 -inf(f128), fmax(f128), 0.0, nan(f128), -1e1, tmin(f128), nan(f128), 1e0, 1e1, -fmin(f128), fmin(f128), tmin(f128), 0.0, -fmin(f128), -0.0, fmin(f128),
9920 inf(f128), inf(f128), fmin(f128), fmin(f128), -tmin(f128), -fmax(f128), 1e1, nan(f128), -0.0, 1e0, 1e1, -1e1, -inf(f128), fmin(f128), -fmax(f128), 1e-1,
9921 -1e0, -nan(f128), -1e1, tmin(f128), inf(f128), nan(f128), 0.0, -1e1, tmin(f128), 0.0, -fmax(f128), -tmin(f128), 1e-1, 1e-1, 1e1, 1e-1,
9922 fmax(f128), 1e-1, 0.0, -fmin(f128), -inf(f128), -inf(f128), -nan(f128), 1e-1, -fmax(f128), fmax(f128), -fmax(f128), -0.0, -tmin(f128), -1e0, nan(f128), 1e-1,
9923 -1e0, -inf(f128), tmin(f128), inf(f128), inf(f128),
44329924 });
44339925 }
44349926 };
......@@ -4463,6 +9955,65 @@ test clz {
44639955 try test_clz.testIntVectors();
44649956}
44659957
9958inline fn intCast(comptime Result: type, comptime Type: type, rhs: Type, comptime ct_rhs: Type) Result {
9959 @setRuntimeSafety(false); // TODO
9960 const res_info = switch (@typeInfo(Result)) {
9961 .int => |info| info,
9962 .vector => |info| @typeInfo(info.child).int,
9963 else => @compileError(@typeName(Result)),
9964 };
9965 const rhs_info = @typeInfo(Scalar(Type)).int;
9966 const min_bits = @min(res_info.bits, rhs_info.bits);
9967 return @intCast(switch (@as(union(enum) {
9968 shift: std.math.Log2Int(Scalar(Type)),
9969 mask: std.math.Log2IntCeil(Scalar(Type)),
9970 }, switch (res_info.signedness) {
9971 .signed => switch (rhs_info.signedness) {
9972 .signed => .{ .shift = rhs_info.bits - min_bits },
9973 .unsigned => .{ .mask = min_bits - @intFromBool(res_info.bits <= rhs_info.bits) },
9974 },
9975 .unsigned => switch (rhs_info.signedness) {
9976 .signed => .{ .mask = min_bits - @intFromBool(res_info.bits >= rhs_info.bits) },
9977 .unsigned => .{ .mask = min_bits },
9978 },
9979 })) {
9980 // TODO: if (bits == 0) rhs else rhs >> bits,
9981 .shift => |bits| if (bits == 0) rhs else switch (@typeInfo(Type)) {
9982 .int => if (ct_rhs < 0)
9983 rhs | std.math.minInt(Type) >> bits
9984 else
9985 rhs & std.math.maxInt(Type) >> bits,
9986 .vector => rhs | @select(
9987 Scalar(Type),
9988 ct_rhs < splat(Type, 0),
9989 splat(Type, std.math.minInt(Scalar(Type)) >> bits),
9990 splat(Type, 0),
9991 ) & ~@select(
9992 Scalar(Type),
9993 ct_rhs >= splat(Type, 0),
9994 splat(Type, std.math.minInt(Scalar(Type)) >> bits),
9995 splat(Type, 0),
9996 ),
9997 else => comptime unreachable,
9998 },
9999 .mask => |bits| if (bits == rhs_info.bits) rhs else rhs & splat(Type, (1 << bits) - 1),
10000 });
10001}
10002test intCast {
10003 const test_int_cast = cast(intCast, .{});
10004 try test_int_cast.testInts();
10005 try test_int_cast.testIntVectors();
10006}
10007
10008inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
10009 return @floatCast(rhs);
10010}
10011test floatCast {
10012 const test_float_cast = cast(floatCast, .{ .strict = true });
10013 try test_float_cast.testFloats();
10014 try test_float_cast.testFloatVectors();
10015}
10016
446610017inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
446710018 return lhs == rhs;
446810019}
test/cases/compile_errors/anytype_param_requires_comptime.zig+1-1
......@@ -15,6 +15,6 @@ pub export fn entry() void {
1515// error
1616//
1717// :7:25: error: unable to resolve comptime value
18// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_463.C' must be comptime-known
18// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_464.C' must be comptime-known
1919// :4:16: note: struct requires comptime because of this field
2020// :4:16: note: types are not available at runtime
test/cases/compile_errors/bogus_method_call_on_slice.zig+1-1
......@@ -16,5 +16,5 @@ pub export fn entry2() void {
1616//
1717// :3:6: error: no field or member function named 'copy' in '[]const u8'
1818// :9:8: error: no field or member function named 'bar' in '@TypeOf(.{})'
19// :12:18: error: no field or member function named 'bar' in 'tmp.entry2__struct_467'
19// :12:18: error: no field or member function named 'bar' in 'tmp.entry2__struct_468'
2020// :12:6: note: struct declared here
test/cases/compile_errors/coerce_anon_struct.zig+1-1
......@@ -6,6 +6,6 @@ export fn foo() void {
66
77// error
88//
9// :4:16: error: expected type 'tmp.T', found 'tmp.foo__struct_456'
9// :4:16: error: expected type 'tmp.T', found 'tmp.foo__struct_457'
1010// :3:16: note: struct declared here
1111// :1:11: note: struct declared here