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 {...@@ -450,7 +450,7 @@ pub fn build(b: *std.Build) !void {
450 .skip_non_native = skip_non_native,450 .skip_non_native = skip_non_native,
451 .skip_libc = skip_libc,451 .skip_libc = skip_libc,
452 .use_llvm = use_llvm,452 .use_llvm = use_llvm,
453 .max_rss = 1 * 1024 * 1024 * 1024,453 .max_rss = 1.25 * 1024 * 1024 * 1024,
454 }));454 }));
455455
456 test_modules_step.dependOn(tests.addModuleTests(b, .{456 test_modules_step.dependOn(tests.addModuleTests(b, .{
lib/std/zig/Zir.zig+2-1
...@@ -2114,7 +2114,7 @@ pub const Inst = struct {...@@ -2114,7 +2114,7 @@ pub const Inst = struct {
2114 ref_start_index = static_len,2114 ref_start_index = static_len,
2115 _,2115 _,
21162116
2117 pub const static_len = 92;2117 pub const static_len = 93;
21182118
2119 pub fn toRef(i: Index) Inst.Ref {2119 pub fn toRef(i: Index) Inst.Ref {
2120 return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i));2120 return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i));
...@@ -2215,6 +2215,7 @@ pub const Inst = struct {...@@ -2215,6 +2215,7 @@ pub const Inst = struct {
2215 vector_4_u64_type,2215 vector_4_u64_type,
2216 vector_4_f16_type,2216 vector_4_f16_type,
2217 vector_8_f16_type,2217 vector_8_f16_type,
2218 vector_2_f32_type,
2218 vector_4_f32_type,2219 vector_4_f32_type,
2219 vector_8_f32_type,2220 vector_8_f32_type,
2220 vector_2_f64_type,2221 vector_2_f64_type,
src/Air.zig+3-14
...@@ -266,7 +266,8 @@ pub const Inst = struct {...@@ -266,7 +266,8 @@ pub const Inst = struct {
266 /// Boolean or binary NOT.266 /// Boolean or binary NOT.
267 /// Uses the `ty_op` field.267 /// Uses the `ty_op` field.
268 not,268 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.
270 /// Uses the `ty_op` field.271 /// Uses the `ty_op` field.
271 bitcast,272 bitcast,
272 /// Uses the `ty_pl` field with payload `Block`. A block runs its body which always ends273 /// Uses the `ty_pl` field with payload `Block`. A block runs its body which always ends
...@@ -517,14 +518,6 @@ pub const Inst = struct {...@@ -517,14 +518,6 @@ pub const Inst = struct {
517 /// Read a value from a pointer.518 /// Read a value from a pointer.
518 /// Uses the `ty_op` field.519 /// Uses the `ty_op` field.
519 load,520 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,
528 /// Return a value from a function.521 /// Return a value from a function.
529 /// Result type is always noreturn; no instructions in a block follow this one.522 /// Result type is always noreturn; no instructions in a block follow this one.
530 /// Uses the `un_op` field.523 /// Uses the `un_op` field.
...@@ -1008,6 +1001,7 @@ pub const Inst = struct {...@@ -1008,6 +1001,7 @@ pub const Inst = struct {
1008 vector_4_u64_type = @intFromEnum(InternPool.Index.vector_4_u64_type),1001 vector_4_u64_type = @intFromEnum(InternPool.Index.vector_4_u64_type),
1009 vector_4_f16_type = @intFromEnum(InternPool.Index.vector_4_f16_type),1002 vector_4_f16_type = @intFromEnum(InternPool.Index.vector_4_f16_type),
1010 vector_8_f16_type = @intFromEnum(InternPool.Index.vector_8_f16_type),1003 vector_8_f16_type = @intFromEnum(InternPool.Index.vector_8_f16_type),
1004 vector_2_f32_type = @intFromEnum(InternPool.Index.vector_2_f32_type),
1011 vector_4_f32_type = @intFromEnum(InternPool.Index.vector_4_f32_type),1005 vector_4_f32_type = @intFromEnum(InternPool.Index.vector_4_f32_type),
1012 vector_8_f32_type = @intFromEnum(InternPool.Index.vector_8_f32_type),1006 vector_8_f32_type = @intFromEnum(InternPool.Index.vector_8_f32_type),
1013 vector_2_f64_type = @intFromEnum(InternPool.Index.vector_2_f64_type),1007 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)...@@ -1542,7 +1536,6 @@ pub fn typeOfIndex(air: *const Air, inst: Air.Inst.Index, ip: *const InternPool)
1542 .c_va_end,1536 .c_va_end,
1543 => return Type.void,1537 => return Type.void,
15441538
1545 .int_from_ptr,
1546 .slice_len,1539 .slice_len,
1547 .ret_addr,1540 .ret_addr,
1548 .frame_addr,1541 .frame_addr,
...@@ -1552,8 +1545,6 @@ pub fn typeOfIndex(air: *const Air, inst: Air.Inst.Index, ip: *const InternPool)...@@ -1552,8 +1545,6 @@ pub fn typeOfIndex(air: *const Air, inst: Air.Inst.Index, ip: *const InternPool)
1552 .wasm_memory_grow => return Type.isize,1545 .wasm_memory_grow => return Type.isize,
1553 .wasm_memory_size => return Type.usize,1546 .wasm_memory_size => return Type.usize,
15541547
1555 .int_from_bool => return Type.u1,
1556
1557 .tag_name, .error_name => return Type.slice_const_u8_sentinel_0,1548 .tag_name, .error_name => return Type.slice_const_u8_sentinel_0,
15581549
1559 .call, .call_always_tail, .call_never_tail, .call_never_inline => {1550 .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 {...@@ -1815,8 +1806,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
1815 .is_non_err_ptr,1806 .is_non_err_ptr,
1816 .bool_and,1807 .bool_and,
1817 .bool_or,1808 .bool_or,
1818 .int_from_ptr,
1819 .int_from_bool,
1820 .fptrunc,1809 .fptrunc,
1821 .fpext,1810 .fpext,
1822 .intcast,1811 .intcast,
src/Air/types_resolved.zig-2
...@@ -208,8 +208,6 @@ fn checkBody(air: Air, body: []const Air.Inst.Index, zcu: *Zcu) bool {...@@ -208,8 +208,6 @@ fn checkBody(air: Air, body: []const Air.Inst.Index, zcu: *Zcu) bool {
208 .is_non_err,208 .is_non_err,
209 .is_err_ptr,209 .is_err_ptr,
210 .is_non_err_ptr,210 .is_non_err_ptr,
211 .int_from_ptr,
212 .int_from_bool,
213 .ret,211 .ret,
214 .ret_safe,212 .ret_safe,
215 .ret_load,213 .ret_load,
src/InternPool.zig+5
...@@ -4593,6 +4593,7 @@ pub const Index = enum(u32) {...@@ -4593,6 +4593,7 @@ pub const Index = enum(u32) {
4593 vector_4_u64_type,4593 vector_4_u64_type,
4594 vector_4_f16_type,4594 vector_4_f16_type,
4595 vector_8_f16_type,4595 vector_8_f16_type,
4596 vector_2_f32_type,
4596 vector_4_f32_type,4597 vector_4_f32_type,
4597 vector_8_f32_type,4598 vector_8_f32_type,
4598 vector_2_f64_type,4599 vector_2_f64_type,
...@@ -5124,6 +5125,8 @@ pub const static_keys = [_]Key{...@@ -5124,6 +5125,8 @@ pub const static_keys = [_]Key{
5124 .{ .vector_type = .{ .len = 4, .child = .f16_type } },5125 .{ .vector_type = .{ .len = 4, .child = .f16_type } },
5125 // @Vector(8, f16)5126 // @Vector(8, f16)
5126 .{ .vector_type = .{ .len = 8, .child = .f16_type } },5127 .{ .vector_type = .{ .len = 8, .child = .f16_type } },
5128 // @Vector(2, f32)
5129 .{ .vector_type = .{ .len = 2, .child = .f32_type } },
5127 // @Vector(4, f32)5130 // @Vector(4, f32)
5128 .{ .vector_type = .{ .len = 4, .child = .f32_type } },5131 .{ .vector_type = .{ .len = 4, .child = .f32_type } },
5129 // @Vector(8, f32)5132 // @Vector(8, f32)
...@@ -11778,6 +11781,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {...@@ -11778,6 +11781,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
11778 .vector_4_u64_type,11781 .vector_4_u64_type,
11779 .vector_4_f16_type,11782 .vector_4_f16_type,
11780 .vector_8_f16_type,11783 .vector_8_f16_type,
11784 .vector_2_f32_type,
11781 .vector_4_f32_type,11785 .vector_4_f32_type,
11782 .vector_8_f32_type,11786 .vector_8_f32_type,
11783 .vector_2_f64_type,11787 .vector_2_f64_type,
...@@ -12117,6 +12121,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId {...@@ -12117,6 +12121,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId {
12117 .vector_4_u64_type,12121 .vector_4_u64_type,
12118 .vector_4_f16_type,12122 .vector_4_f16_type,
12119 .vector_8_f16_type,12123 .vector_8_f16_type,
12124 .vector_2_f32_type,
12120 .vector_4_f32_type,12125 .vector_4_f32_type,
12121 .vector_8_f32_type,12126 .vector_8_f32_type,
12122 .vector_2_f64_type,12127 .vector_2_f64_type,
src/Liveness.zig-4
...@@ -402,8 +402,6 @@ pub fn categorizeOperand(...@@ -402,8 +402,6 @@ pub fn categorizeOperand(
402 .is_non_err,402 .is_non_err,
403 .is_err_ptr,403 .is_err_ptr,
404 .is_non_err_ptr,404 .is_non_err_ptr,
405 .int_from_ptr,
406 .int_from_bool,
407 .is_named_enum_value,405 .is_named_enum_value,
408 .tag_name,406 .tag_name,
409 .error_name,407 .error_name,
...@@ -1028,8 +1026,6 @@ fn analyzeInst(...@@ -1028,8 +1026,6 @@ fn analyzeInst(
1028 .is_non_err,1026 .is_non_err,
1029 .is_err_ptr,1027 .is_err_ptr,
1030 .is_non_err_ptr,1028 .is_non_err_ptr,
1031 .int_from_ptr,
1032 .int_from_bool,
1033 .is_named_enum_value,1029 .is_named_enum_value,
1034 .tag_name,1030 .tag_name,
1035 .error_name,1031 .error_name,
src/Liveness/Verify.zig-2
...@@ -130,8 +130,6 @@ fn verifyBody(self: *Verify, body: []const Air.Inst.Index) Error!void {...@@ -130,8 +130,6 @@ fn verifyBody(self: *Verify, body: []const Air.Inst.Index) Error!void {
130 .is_non_err,130 .is_non_err,
131 .is_err_ptr,131 .is_err_ptr,
132 .is_non_err_ptr,132 .is_non_err_ptr,
133 .int_from_ptr,
134 .int_from_bool,
135 .is_named_enum_value,133 .is_named_enum_value,
136 .tag_name,134 .tag_name,
137 .error_name,135 .error_name,
src/Sema.zig+71-33
...@@ -10038,6 +10038,8 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -10038,6 +10038,8 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
10038 };10038 };
10039 return sema.failWithOwnedErrorMsg(block, msg);10039 return sema.failWithOwnedErrorMsg(block, msg);
10040 }10040 }
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;
10041 if (try sema.resolveValueIntable(operand)) |operand_val| ct: {10043 if (try sema.resolveValueIntable(operand)) |operand_val| ct: {
10042 if (!is_vector) {10044 if (!is_vector) {
10043 if (operand_val.isUndef(zcu)) {10045 if (operand_val.isUndef(zcu)) {
...@@ -10048,8 +10050,6 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -10048,8 +10050,6 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
10048 (try operand_val.toUnsignedIntSema(pt)),10050 (try operand_val.toUnsignedIntSema(pt)),
10049 )).toIntern());10051 )).toIntern());
10050 }10052 }
10051 const len = operand_ty.vectorLen(zcu);
10052 const dest_ty = try pt.vectorType(.{ .child = .usize_type, .len = len });
10053 const new_elems = try sema.arena.alloc(InternPool.Index, len);10053 const new_elems = try sema.arena.alloc(InternPool.Index, len);
10054 for (new_elems, 0..) |*new_elem, i| {10054 for (new_elems, 0..) |*new_elem, i| {
10055 const ptr_val = try operand_val.elemValue(pt, i);10055 const ptr_val = try operand_val.elemValue(pt, i);
...@@ -10073,16 +10073,14 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -10073,16 +10073,14 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
10073 }10073 }
10074 try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), ptr_src);10074 try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), ptr_src);
10075 try sema.validateRuntimeValue(block, ptr_src, operand);10075 try sema.validateRuntimeValue(block, ptr_src, operand);
10076 if (!is_vector) {10076 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
10077 return block.addUnOp(.int_from_ptr, operand);10077 return block.addBitCast(dest_ty, operand);
10078 }10078 }
10079 const len = operand_ty.vectorLen(zcu);
10080 const dest_ty = try pt.vectorType(.{ .child = .usize_type, .len = len });
10081 const new_elems = try sema.arena.alloc(Air.Inst.Ref, len);10079 const new_elems = try sema.arena.alloc(Air.Inst.Ref, len);
10082 for (new_elems, 0..) |*new_elem, i| {10080 for (new_elems, 0..) |*new_elem, i| {
10083 const idx_ref = try pt.intRef(Type.usize, i);10081 const idx_ref = try pt.intRef(Type.usize, i);
10084 const old_elem = try block.addBinOp(.array_elem_val, operand, idx_ref);10082 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);
10086 }10084 }
10087 return block.addAggregateInit(dest_ty, new_elems);10085 return block.addAggregateInit(dest_ty, new_elems);
10088}10086}
...@@ -10569,7 +10567,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -10569,7 +10567,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
10569 if (dst_bits >= src_bits) {10567 if (dst_bits >= src_bits) {
10570 return sema.coerce(block, dest_ty, operand, operand_src);10568 return sema.coerce(block, dest_ty, operand, operand_src);
10571 }10569 }
10572 if (!is_vector) {10570 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
10573 return block.addTyOp(.fptrunc, dest_ty, operand);10571 return block.addTyOp(.fptrunc, dest_ty, operand);
10574 }10572 }
10575 const vec_len = operand_ty.vectorLen(zcu);10573 const vec_len = operand_ty.vectorLen(zcu);
...@@ -14746,7 +14744,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -14746,7 +14744,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
14746 });14744 });
1474714745
14748 const many_ty = slice_ty.slicePtrFieldType(zcu);14746 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
14751 // lhs_dest_slice = dest[0..lhs.len]14749 // lhs_dest_slice = dest[0..lhs.len]
14752 const slice_ty_ref = Air.internedToRef(slice_ty.toIntern());14750 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...@@ -14796,7 +14794,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
14796 try sema.storePtr2(block, src, elem_ptr, src, init, lhs_src, .store);14794 try sema.storePtr2(block, src, elem_ptr, src, init, lhs_src, .store);
14797 }14795 }
1479814796
14799 return block.addTyOp(.bitcast, constant_alloc_ty, mutable_alloc);14797 return block.addBitCast(constant_alloc_ty, mutable_alloc);
14800 }14798 }
1480114799
14802 var elem_i: u32 = 0;14800 var elem_i: u32 = 0;
...@@ -14829,7 +14827,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -14829,7 +14827,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
14829 try sema.storePtr2(block, src, elem_ptr, src, init, lhs_src, .store);14827 try sema.storePtr2(block, src, elem_ptr, src, init, lhs_src, .store);
14830 }14828 }
1483114829
14832 return block.addTyOp(.bitcast, constant_alloc_ty, mutable_alloc);14830 return block.addBitCast(constant_alloc_ty, mutable_alloc);
14833 }14831 }
1483414832
14835 const element_refs = try sema.arena.alloc(Air.Inst.Ref, result_len);14833 const element_refs = try sema.arena.alloc(Air.Inst.Ref, result_len);
...@@ -16596,8 +16594,8 @@ fn analyzeArithmetic(...@@ -16596,8 +16594,8 @@ fn analyzeArithmetic(
16596 };16594 };
1659716595
16598 try sema.requireRuntimeBlock(block, src, runtime_src);16596 try sema.requireRuntimeBlock(block, src, runtime_src);
16599 const lhs_int = try block.addUnOp(.int_from_ptr, lhs);16597 const lhs_int = try block.addBitCast(.usize, lhs);
16600 const rhs_int = try block.addUnOp(.int_from_ptr, rhs);16598 const rhs_int = try block.addBitCast(.usize, rhs);
16601 const address = try block.addBinOp(.sub_wrap, lhs_int, rhs_int);16599 const address = try block.addBinOp(.sub_wrap, lhs_int, rhs_int);
16602 return try block.addBinOp(.div_exact, address, try pt.intRef(Type.usize, elem_size));16600 return try block.addBinOp(.div_exact, address, try pt.intRef(Type.usize, elem_size));
16603 }16601 }
...@@ -21215,14 +21213,14 @@ fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError...@@ -21215,14 +21213,14 @@ fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
21215 if (operand_scalar_ty.toIntern() != .bool_type) {21213 if (operand_scalar_ty.toIntern() != .bool_type) {
21216 return sema.fail(block, src, "expected 'bool', found '{}'", .{operand_scalar_ty.zigTypeTag(zcu)});21214 return sema.fail(block, src, "expected 'bool', found '{}'", .{operand_scalar_ty.zigTypeTag(zcu)});
21217 }21215 }
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;
21218 if (try sema.resolveValue(operand)) |val| {21218 if (try sema.resolveValue(operand)) |val| {
21219 if (!is_vector) {21219 if (!is_vector) {
21220 if (val.isUndef(zcu)) return pt.undefRef(Type.u1);21220 if (val.isUndef(zcu)) return pt.undefRef(Type.u1);
21221 if (val.toBool()) return Air.internedToRef((try pt.intValue(Type.u1, 1)).toIntern());21221 if (val.toBool()) return Air.internedToRef((try pt.intValue(Type.u1, 1)).toIntern());
21222 return Air.internedToRef((try pt.intValue(Type.u1, 0)).toIntern());21222 return Air.internedToRef((try pt.intValue(Type.u1, 0)).toIntern());
21223 }21223 }
21224 const len = operand_ty.vectorLen(zcu);
21225 const dest_ty = try pt.vectorType(.{ .child = .u1_type, .len = len });
21226 if (val.isUndef(zcu)) return pt.undefRef(dest_ty);21224 if (val.isUndef(zcu)) return pt.undefRef(dest_ty);
21227 const new_elems = try sema.arena.alloc(InternPool.Index, len);21225 const new_elems = try sema.arena.alloc(InternPool.Index, len);
21228 for (new_elems, 0..) |*new_elem, i| {21226 for (new_elems, 0..) |*new_elem, i| {
...@@ -21240,16 +21238,14 @@ fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError...@@ -21240,16 +21238,14 @@ fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
21240 .storage = .{ .elems = new_elems },21238 .storage = .{ .elems = new_elems },
21241 } }));21239 } }));
21242 }21240 }
21243 if (!is_vector) {21241 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
21244 return block.addUnOp(.int_from_bool, operand);21242 return block.addBitCast(dest_ty, operand);
21245 }21243 }
21246 const len = operand_ty.vectorLen(zcu);
21247 const dest_ty = try pt.vectorType(.{ .child = .u1_type, .len = len });
21248 const new_elems = try sema.arena.alloc(Air.Inst.Ref, len);21244 const new_elems = try sema.arena.alloc(Air.Inst.Ref, len);
21249 for (new_elems, 0..) |*new_elem, i| {21245 for (new_elems, 0..) |*new_elem, i| {
21250 const idx_ref = try pt.intRef(Type.usize, i);21246 const idx_ref = try pt.intRef(Type.usize, i);
21251 const old_elem = try block.addBinOp(.array_elem_val, operand, idx_ref);21247 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);
21253 }21249 }
21254 return block.addAggregateInit(dest_ty, new_elems);21250 return block.addAggregateInit(dest_ty, new_elems);
21255}21251}
...@@ -22842,14 +22838,27 @@ fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro...@@ -22842,14 +22838,27 @@ fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
22842 .storage = .{ .repeated_elem = (try pt.intValue(dest_scalar_ty, 0)).toIntern() },22838 .storage = .{ .repeated_elem = (try pt.intValue(dest_scalar_ty, 0)).toIntern() },
22843 } }));22839 } }));
22844 }22840 }
22845 if (!is_vector) {22841 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
22846 const result = try block.addTyOp(if (block.float_mode == .optimized) .int_from_float_optimized else .int_from_float, dest_ty, operand);22842 const result = try block.addTyOp(if (block.float_mode == .optimized) .int_from_float_optimized else .int_from_float, dest_ty, operand);
22847 if (block.wantSafety()) {22843 if (block.wantSafety()) {
22848 const back = try block.addTyOp(.float_from_int, operand_ty, result);22844 const back = try block.addTyOp(.float_from_int, operand_ty, result);
22849 const diff = try block.addBinOp(.sub, operand, back);22845 const diff = try block.addBinOp(if (block.float_mode == .optimized) .sub_optimized else .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()));22846 const ok = if (is_vector) ok: {
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()));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);
22852 const ok = try block.addBinOp(.bool_and, ok_pos, ok_neg);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 };
22853 try sema.addSafetyCheck(block, src, ok, .integer_part_out_of_bounds);22862 try sema.addSafetyCheck(block, src, ok, .integer_part_out_of_bounds);
22854 }22863 }
22855 return result;22864 return result;
...@@ -22901,7 +22910,7 @@ fn zirFloatFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro...@@ -22901,7 +22910,7 @@ fn zirFloatFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
22901 }22910 }
2290222911
22903 try sema.requireRuntimeBlock(block, src, operand_src);22912 try sema.requireRuntimeBlock(block, src, operand_src);
22904 if (!is_vector) {22913 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
22905 return block.addTyOp(.float_from_int, dest_ty, operand);22914 return block.addTyOp(.float_from_int, dest_ty, operand);
22906 }22915 }
22907 const len = operand_ty.vectorLen(zcu);22916 const len = operand_ty.vectorLen(zcu);
...@@ -22980,17 +22989,37 @@ fn zirPtrFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!...@@ -22980,17 +22989,37 @@ fn zirPtrFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
22980 });22989 });
22981 }22990 }
22982 try sema.requireRuntimeBlock(block, src, operand_src);22991 try sema.requireRuntimeBlock(block, src, operand_src);
22983 if (!is_vector) {22992 if (!is_vector or zcu.backendSupportsFeature(.all_vector_instructions)) {
22984 if (block.wantSafety() and (try elem_ty.hasRuntimeBitsSema(pt) or elem_ty.zigTypeTag(zcu) == .@"fn")) {22993 if (block.wantSafety() and (try elem_ty.hasRuntimeBitsSema(pt) or elem_ty.zigTypeTag(zcu) == .@"fn")) {
22985 if (!ptr_ty.isAllowzeroPtr(zcu)) {22994 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);
22987 try sema.addSafetyCheck(block, src, is_non_zero, .cast_to_null);23006 try sema.addSafetyCheck(block, src, is_non_zero, .cast_to_null);
22988 }23007 }
22989 if (ptr_align.compare(.gt, .@"1")) {23008 if (ptr_align.compare(.gt, .@"1")) {
22990 const align_bytes_minus_1 = ptr_align.toByteUnits().? - 1;23009 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());
22992 const remainder = try block.addBinOp(.bit_and, operand_coerced, align_minus_1);23011 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);
22994 try sema.addSafetyCheck(block, src, is_aligned, .incorrect_alignment);23023 try sema.addSafetyCheck(block, src, is_aligned, .incorrect_alignment);
22995 }23024 }
22996 }23025 }
...@@ -23543,7 +23572,11 @@ fn ptrCastFull(...@@ -23543,7 +23572,11 @@ fn ptrCastFull(
23543 if (block.wantSafety() and operand_ty.ptrAllowsZero(zcu) and !dest_ty.ptrAllowsZero(zcu) and23572 if (block.wantSafety() and operand_ty.ptrAllowsZero(zcu) and !dest_ty.ptrAllowsZero(zcu) and
23544 (try Type.fromInterned(dest_info.child).hasRuntimeBitsSema(pt) or Type.fromInterned(dest_info.child).zigTypeTag(zcu) == .@"fn"))23573 (try Type.fromInterned(dest_info.child).hasRuntimeBitsSema(pt) or Type.fromInterned(dest_info.child).zigTypeTag(zcu) == .@"fn"))
23545 {23574 {
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);
23547 const is_non_zero = try block.addBinOp(.cmp_neq, ptr_int, .zero_usize);23580 const is_non_zero = try block.addBinOp(.cmp_neq, ptr_int, .zero_usize);
23548 const ok = if (src_info.flags.size == .slice and dest_info.flags.size == .slice) ok: {23581 const ok = if (src_info.flags.size == .slice and dest_info.flags.size == .slice) ok: {
23549 const len = try sema.analyzeSliceLen(block, operand_src, ptr);23582 const len = try sema.analyzeSliceLen(block, operand_src, ptr);
...@@ -23559,7 +23592,11 @@ fn ptrCastFull(...@@ -23559,7 +23592,11 @@ fn ptrCastFull(
23559 {23592 {
23560 const align_bytes_minus_1 = dest_align.toByteUnits().? - 1;23593 const align_bytes_minus_1 = dest_align.toByteUnits().? - 1;
23561 const align_minus_1 = Air.internedToRef((try pt.intValue(Type.usize, align_bytes_minus_1)).toIntern());23594 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);
23563 const remainder = try block.addBinOp(.bit_and, ptr_int, align_minus_1);23600 const remainder = try block.addBinOp(.bit_and, ptr_int, align_minus_1);
23564 const is_aligned = try block.addBinOp(.cmp_eq, remainder, .zero_usize);23601 const is_aligned = try block.addBinOp(.cmp_eq, remainder, .zero_usize);
23565 const ok = if (src_info.flags.size == .slice and dest_info.flags.size == .slice) ok: {23602 const ok = if (src_info.flags.size == .slice and dest_info.flags.size == .slice) ok: {
...@@ -31407,7 +31444,7 @@ fn coerceCompatiblePtrs(...@@ -31407,7 +31444,7 @@ fn coerceCompatiblePtrs(
31407 try sema.analyzeSlicePtr(block, inst_src, inst, inst_ty)31444 try sema.analyzeSlicePtr(block, inst_src, inst, inst_ty)
31408 else31445 else
31409 inst;31446 inst;
31410 const ptr_int = try block.addUnOp(.int_from_ptr, actual_ptr);31447 const ptr_int = try block.addBitCast(.usize, actual_ptr);
31411 const is_non_zero = try block.addBinOp(.cmp_neq, ptr_int, .zero_usize);31448 const is_non_zero = try block.addBinOp(.cmp_neq, ptr_int, .zero_usize);
31412 const ok = if (inst_ty.isSlice(zcu)) ok: {31449 const ok = if (inst_ty.isSlice(zcu)) ok: {
31413 const len = try sema.analyzeSliceLen(block, inst_src, inst);31450 const len = try sema.analyzeSliceLen(block, inst_src, inst);
...@@ -36700,6 +36737,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {...@@ -36700,6 +36737,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
36700 .vector_4_u64_type,36737 .vector_4_u64_type,
36701 .vector_4_f16_type,36738 .vector_4_f16_type,
36702 .vector_8_f16_type,36739 .vector_8_f16_type,
36740 .vector_2_f32_type,
36703 .vector_4_f32_type,36741 .vector_4_f32_type,
36704 .vector_8_f32_type,36742 .vector_8_f32_type,
36705 .vector_2_f64_type,36743 .vector_2_f64_type,
src/Type.zig+1
...@@ -4216,6 +4216,7 @@ pub const vector_2_u64: Type = .{ .ip_index = .vector_2_u64_type };...@@ -4216,6 +4216,7 @@ pub const vector_2_u64: Type = .{ .ip_index = .vector_2_u64_type };
4216pub const vector_4_u64: Type = .{ .ip_index = .vector_4_u64_type };4216pub const vector_4_u64: Type = .{ .ip_index = .vector_4_u64_type };
4217pub const vector_4_f16: Type = .{ .ip_index = .vector_4_f16_type };4217pub const vector_4_f16: Type = .{ .ip_index = .vector_4_f16_type };
4218pub const vector_8_f16: Type = .{ .ip_index = .vector_8_f16_type };4218pub const vector_8_f16: Type = .{ .ip_index = .vector_8_f16_type };
4219pub const vector_2_f32: Type = .{ .ip_index = .vector_2_f32_type };
4219pub const vector_4_f32: Type = .{ .ip_index = .vector_4_f32_type };4220pub const vector_4_f32: Type = .{ .ip_index = .vector_4_f32_type };
4220pub const vector_8_f32: Type = .{ .ip_index = .vector_8_f32_type };4221pub const vector_8_f32: Type = .{ .ip_index = .vector_8_f32_type };
4221pub const vector_2_f64: Type = .{ .ip_index = .vector_2_f64_type };4222pub const vector_2_f64: Type = .{ .ip_index = .vector_2_f64_type };
src/Zcu.zig+9
...@@ -3336,6 +3336,15 @@ pub const Feature = enum {...@@ -3336,6 +3336,15 @@ pub const Feature = enum {
3336 safety_checked_instructions,3336 safety_checked_instructions,
3337 /// If the backend supports running from another thread.3337 /// If the backend supports running from another thread.
3338 separate_thread,3338 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,
3339};3348};
33403349
3341pub fn backendSupportsFeature(zcu: *const Zcu, comptime feature: Feature) bool {3350pub 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 {...@@ -734,7 +734,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
734 .fpext => try self.airFpext(inst),734 .fpext => try self.airFpext(inst),
735 .intcast => try self.airIntCast(inst),735 .intcast => try self.airIntCast(inst),
736 .trunc => try self.airTrunc(inst),736 .trunc => try self.airTrunc(inst),
737 .int_from_bool => try self.airIntFromBool(inst),
738 .is_non_null => try self.airIsNonNull(inst),737 .is_non_null => try self.airIsNonNull(inst),
739 .is_non_null_ptr => try self.airIsNonNullPtr(inst),738 .is_non_null_ptr => try self.airIsNonNullPtr(inst),
740 .is_null => try self.airIsNull(inst),739 .is_null => try self.airIsNull(inst),
...@@ -746,7 +745,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -746,7 +745,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
746 .load => try self.airLoad(inst),745 .load => try self.airLoad(inst),
747 .loop => try self.airLoop(inst),746 .loop => try self.airLoop(inst),
748 .not => try self.airNot(inst),747 .not => try self.airNot(inst),
749 .int_from_ptr => try self.airIntFromPtr(inst),
750 .ret => try self.airRet(inst),748 .ret => try self.airRet(inst),
751 .ret_safe => try self.airRet(inst), // TODO749 .ret_safe => try self.airRet(inst), // TODO
752 .ret_load => try self.airRetLoad(inst),750 .ret_load => try self.airRetLoad(inst),
...@@ -1294,13 +1292,6 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) InnerError!void {...@@ -1294,13 +1292,6 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) InnerError!void {
1294 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1292 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1295}1293}
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
1304fn airNot(self: *Self, inst: Air.Inst.Index) InnerError!void {1295fn airNot(self: *Self, inst: Air.Inst.Index) InnerError!void {
1305 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;1296 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1306 const pt = self.pt;1297 const pt = self.pt;
...@@ -5906,12 +5897,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I...@@ -5906,12 +5897,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I
5906 }5897 }
5907}5898}
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
5915fn airBitCast(self: *Self, inst: Air.Inst.Index) InnerError!void {5900fn airBitCast(self: *Self, inst: Air.Inst.Index) InnerError!void {
5916 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;5901 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
5917 const result = if (self.liveness.isUnused(inst)) .dead else result: {5902 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 {...@@ -723,7 +723,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
723 .fpext => try self.airFpext(inst),723 .fpext => try self.airFpext(inst),
724 .intcast => try self.airIntCast(inst),724 .intcast => try self.airIntCast(inst),
725 .trunc => try self.airTrunc(inst),725 .trunc => try self.airTrunc(inst),
726 .int_from_bool => try self.airIntFromBool(inst),
727 .is_non_null => try self.airIsNonNull(inst),726 .is_non_null => try self.airIsNonNull(inst),
728 .is_non_null_ptr => try self.airIsNonNullPtr(inst),727 .is_non_null_ptr => try self.airIsNonNullPtr(inst),
729 .is_null => try self.airIsNull(inst),728 .is_null => try self.airIsNull(inst),
...@@ -735,7 +734,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -735,7 +734,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
735 .load => try self.airLoad(inst),734 .load => try self.airLoad(inst),
736 .loop => try self.airLoop(inst),735 .loop => try self.airLoop(inst),
737 .not => try self.airNot(inst),736 .not => try self.airNot(inst),
738 .int_from_ptr => try self.airIntFromPtr(inst),
739 .ret => try self.airRet(inst),737 .ret => try self.airRet(inst),
740 .ret_safe => try self.airRet(inst), // TODO738 .ret_safe => try self.airRet(inst), // TODO
741 .ret_load => try self.airRetLoad(inst),739 .ret_load => try self.airRetLoad(inst),
...@@ -1258,13 +1256,6 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void {...@@ -1258,13 +1256,6 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void {
1258 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1256 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1259}1257}
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
1268fn airNot(self: *Self, inst: Air.Inst.Index) !void {1259fn airNot(self: *Self, inst: Air.Inst.Index) !void {
1269 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;1260 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1270 const pt = self.pt;1261 const pt = self.pt;
...@@ -5874,12 +5865,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I...@@ -5874,12 +5865,6 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I
5874 }5865 }
5875}5866}
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
5883fn airBitCast(self: *Self, inst: Air.Inst.Index) !void {5868fn airBitCast(self: *Self, inst: Air.Inst.Index) !void {
5884 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;5869 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
5885 const result = if (self.liveness.isUnused(inst)) .dead else result: {5870 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 {...@@ -1557,7 +1557,6 @@ fn genBody(func: *Func, body: []const Air.Inst.Index) InnerError!void {
1557 .fpext => try func.airFpext(inst),1557 .fpext => try func.airFpext(inst),
1558 .intcast => try func.airIntCast(inst),1558 .intcast => try func.airIntCast(inst),
1559 .trunc => try func.airTrunc(inst),1559 .trunc => try func.airTrunc(inst),
1560 .int_from_bool => try func.airIntFromBool(inst),
1561 .is_non_null => try func.airIsNonNull(inst),1560 .is_non_null => try func.airIsNonNull(inst),
1562 .is_non_null_ptr => try func.airIsNonNullPtr(inst),1561 .is_non_null_ptr => try func.airIsNonNullPtr(inst),
1563 .is_null => try func.airIsNull(inst),1562 .is_null => try func.airIsNull(inst),
...@@ -1569,7 +1568,6 @@ fn genBody(func: *Func, body: []const Air.Inst.Index) InnerError!void {...@@ -1569,7 +1568,6 @@ fn genBody(func: *Func, body: []const Air.Inst.Index) InnerError!void {
1569 .load => try func.airLoad(inst),1568 .load => try func.airLoad(inst),
1570 .loop => try func.airLoop(inst),1569 .loop => try func.airLoop(inst),
1571 .not => try func.airNot(inst),1570 .not => try func.airNot(inst),
1572 .int_from_ptr => try func.airIntFromPtr(inst),
1573 .ret => try func.airRet(inst, false),1571 .ret => try func.airRet(inst, false),
1574 .ret_safe => try func.airRet(inst, true),1572 .ret_safe => try func.airRet(inst, true),
1575 .ret_load => try func.airRetLoad(inst),1573 .ret_load => try func.airRetLoad(inst),
...@@ -2299,13 +2297,6 @@ fn airTrunc(func: *Func, inst: Air.Inst.Index) !void {...@@ -2299,13 +2297,6 @@ fn airTrunc(func: *Func, inst: Air.Inst.Index) !void {
2299 return func.finishAir(inst, operand, .{ ty_op.operand, .none, .none });2297 return func.finishAir(inst, operand, .{ ty_op.operand, .none, .none });
2300}2298}
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
2309fn airNot(func: *Func, inst: Air.Inst.Index) !void {2300fn airNot(func: *Func, inst: Air.Inst.Index) !void {
2310 const ty_op = func.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;2301 const ty_op = func.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
2311 const result: MCValue = if (func.liveness.isUnused(inst)) .unreach else result: {2302 const result: MCValue = if (func.liveness.isUnused(inst)) .unreach else result: {
...@@ -7262,21 +7253,6 @@ fn genSetMem(...@@ -7262,21 +7253,6 @@ fn genSetMem(
7262 }7253 }
7263}7254}
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
7280fn airBitCast(func: *Func, inst: Air.Inst.Index) !void {7256fn airBitCast(func: *Func, inst: Air.Inst.Index) !void {
7281 const pt = func.pt;7257 const pt = func.pt;
7282 const zcu = pt.zcu;7258 const zcu = pt.zcu;
...@@ -7285,8 +7261,9 @@ fn airBitCast(func: *Func, inst: Air.Inst.Index) !void {...@@ -7285,8 +7261,9 @@ fn airBitCast(func: *Func, inst: Air.Inst.Index) !void {
7285 const result = if (func.liveness.isUnused(inst)) .unreach else result: {7261 const result = if (func.liveness.isUnused(inst)) .unreach else result: {
7286 const src_mcv = try func.resolveInst(ty_op.operand);7262 const src_mcv = try func.resolveInst(ty_op.operand);
72877263
7288 const dst_ty = func.typeOfIndex(inst);
7289 const src_ty = func.typeOf(ty_op.operand);7264 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
7291 const src_lock = if (src_mcv.getReg()) |reg| func.register_manager.lockReg(reg) else null;7268 const src_lock = if (src_mcv.getReg()) |reg| func.register_manager.lockReg(reg) else null;
7292 defer if (src_lock) |lock| func.register_manager.unlockReg(lock);7269 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 {...@@ -577,7 +577,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
577 .fpext => @panic("TODO try self.airFpext(inst)"),577 .fpext => @panic("TODO try self.airFpext(inst)"),
578 .intcast => try self.airIntCast(inst),578 .intcast => try self.airIntCast(inst),
579 .trunc => try self.airTrunc(inst),579 .trunc => try self.airTrunc(inst),
580 .int_from_bool => try self.airIntFromBool(inst),
581 .is_non_null => try self.airIsNonNull(inst),580 .is_non_null => try self.airIsNonNull(inst),
582 .is_non_null_ptr => @panic("TODO try self.airIsNonNullPtr(inst)"),581 .is_non_null_ptr => @panic("TODO try self.airIsNonNullPtr(inst)"),
583 .is_null => try self.airIsNull(inst),582 .is_null => try self.airIsNull(inst),
...@@ -589,7 +588,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -589,7 +588,6 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
589 .load => try self.airLoad(inst),588 .load => try self.airLoad(inst),
590 .loop => try self.airLoop(inst),589 .loop => try self.airLoop(inst),
591 .not => try self.airNot(inst),590 .not => try self.airNot(inst),
592 .int_from_ptr => try self.airIntFromPtr(inst),
593 .ret => try self.airRet(inst),591 .ret => try self.airRet(inst),
594 .ret_safe => try self.airRet(inst), // TODO592 .ret_safe => try self.airRet(inst), // TODO
595 .ret_load => try self.airRetLoad(inst),593 .ret_load => try self.airRetLoad(inst),
...@@ -1077,13 +1075,6 @@ fn airBinOp(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {...@@ -1077,13 +1075,6 @@ fn airBinOp(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
1077 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });1075 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });
1078}1076}
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
1087fn airPtrArithmetic(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {1078fn airPtrArithmetic(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
1088 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;1079 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
1089 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;1080 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 {...@@ -2230,12 +2221,6 @@ fn airPtrSlicePtrPtr(self: *Self, inst: Air.Inst.Index) !void {
2230 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });2221 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2231}2222}
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
2239fn airRem(self: *Self, inst: Air.Inst.Index) !void {2224fn airRem(self: *Self, inst: Air.Inst.Index) !void {
2240 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;2225 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
2241 const lhs = try self.resolveInst(bin_op.lhs);2226 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 {...@@ -1926,7 +1926,6 @@ fn genInst(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
1926 .br => cg.airBr(inst),1926 .br => cg.airBr(inst),
1927 .repeat => cg.airRepeat(inst),1927 .repeat => cg.airRepeat(inst),
1928 .switch_dispatch => return cg.fail("TODO implement `switch_dispatch`", .{}),1928 .switch_dispatch => return cg.fail("TODO implement `switch_dispatch`", .{}),
1929 .int_from_bool => cg.airIntFromBool(inst),
1930 .cond_br => cg.airCondBr(inst),1929 .cond_br => cg.airCondBr(inst),
1931 .intcast => cg.airIntcast(inst),1930 .intcast => cg.airIntcast(inst),
1932 .fptrunc => cg.airFptrunc(inst),1931 .fptrunc => cg.airFptrunc(inst),
...@@ -1972,7 +1971,6 @@ fn genInst(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {...@@ -1972,7 +1971,6 @@ fn genInst(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
1972 .ptr_sub => cg.airPtrBinOp(inst, .sub),1971 .ptr_sub => cg.airPtrBinOp(inst, .sub),
1973 .ptr_elem_ptr => cg.airPtrElemPtr(inst),1972 .ptr_elem_ptr => cg.airPtrElemPtr(inst),
1974 .ptr_elem_val => cg.airPtrElemVal(inst),1973 .ptr_elem_val => cg.airPtrElemVal(inst),
1975 .int_from_ptr => cg.airIntFromPtr(inst),
1976 .ret => cg.airRet(inst),1974 .ret => cg.airRet(inst),
1977 .ret_safe => cg.airRet(inst), // TODO1975 .ret_safe => cg.airRet(inst), // TODO
1978 .ret_ptr => cg.airRetPtr(inst),1976 .ret_ptr => cg.airRetPtr(inst),
...@@ -3777,7 +3775,11 @@ fn airBitcast(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {...@@ -3777,7 +3775,11 @@ fn airBitcast(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
3777 break :result try cg.wrapOperand(operand, wanted_ty);3775 break :result try cg.wrapOperand(operand, wanted_ty);
3778 }3776 }
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 };
3781 };3783 };
3782 return cg.finishAir(inst, result, &.{ty_op.operand});3784 return cg.finishAir(inst, result, &.{ty_op.operand});
3783}3785}
...@@ -4637,14 +4639,6 @@ fn trunc(cg: *CodeGen, operand: WValue, wanted_ty: Type, given_ty: Type) InnerEr...@@ -4637,14 +4639,6 @@ fn trunc(cg: *CodeGen, operand: WValue, wanted_ty: Type, given_ty: Type) InnerEr
4637 return result;4639 return result;
4638}4640}
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
4648fn airArrayToSlice(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {4642fn airArrayToSlice(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
4649 const zcu = cg.pt.zcu;4643 const zcu = cg.pt.zcu;
4650 const ty_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;4644 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 {...@@ -4668,21 +4662,6 @@ fn airArrayToSlice(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
4668 return cg.finishAir(inst, slice_local, &.{ty_op.operand});4662 return cg.finishAir(inst, slice_local, &.{ty_op.operand});
4669}4663}
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
4686fn airPtrElemVal(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {4665fn airPtrElemVal(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
4687 const zcu = cg.pt.zcu;4666 const zcu = cg.pt.zcu;
4688 const bin_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;4667 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 {...@@ -1339,7 +1339,7 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {
1339 self.mir_extra.appendAssumeCapacity(switch (field.type) {1339 self.mir_extra.appendAssumeCapacity(switch (field.type) {
1340 u32 => @field(extra, field.name),1340 u32 => @field(extra, field.name),
1341 i32, Mir.Memory.Info => @bitCast(@field(extra, field.name)),1341 i32, Mir.Memory.Info => @bitCast(@field(extra, field.name)),
1342 bits.FrameIndex => @intFromEnum(@field(extra, field.name)),1342 FrameIndex => @intFromEnum(@field(extra, field.name)),
1343 else => @compileError("bad field type: " ++ field.name ++ ": " ++ @typeName(field.type)),1343 else => @compileError("bad field type: " ++ field.name ++ ": " ++ @typeName(field.type)),
1344 });1344 });
1345 }1345 }
...@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2414}2414}
24152415
2416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2416fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417 @setEvalBranchQuota(3_900);2417 @setEvalBranchQuota(4_500);
2418 const pt = cg.pt;2418 const pt = cg.pt;
2419 const zcu = pt.zcu;2419 const zcu = pt.zcu;
2420 const ip = &zcu.intern_pool;2420 const ip = &zcu.intern_pool;
...@@ -2499,9 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2499,9 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2499 .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),2499 .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),
25002500
2501 .bitcast => try cg.airBitCast(inst),2501 .bitcast => try cg.airBitCast(inst),
2502 .fptrunc => try cg.airFptrunc(inst),
2503 .fpext => try cg.airFpext(inst),
2504 .intcast => try cg.airIntCast(inst),
2505 .trunc => try cg.airTrunc(inst),2502 .trunc => try cg.airTrunc(inst),
2506 .is_non_null => try cg.airIsNonNull(inst),2503 .is_non_null => try cg.airIsNonNull(inst),
2507 .is_null => try cg.airIsNull(inst),2504 .is_null => try cg.airIsNull(inst),
...@@ -2591,7 +2588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2591,7 +2588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2591 },2588 },
2592 .dst_temps = .{.{ .rc = .general_purpose }},2589 .dst_temps = .{.{ .rc = .general_purpose }},
2593 .each = .{ .once = &.{2590 .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), ._, ._ },
2595 } },2592 } },
2596 }, .{2593 }, .{
2597 .dst_constraints = .{.{ .elem_size_is = 1 }},2594 .dst_constraints = .{.{ .elem_size_is = 1 }},
...@@ -2600,7 +2597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2600,7 +2597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2600 },2597 },
2601 .dst_temps = .{.{ .rc = .general_purpose }},2598 .dst_temps = .{.{ .rc = .general_purpose }},
2602 .each = .{ .once = &.{2599 .each = .{ .once = &.{
2603 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },2600 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2604 } },2601 } },
2605 }, .{2602 }, .{
2606 .dst_constraints = .{.{ .elem_size_is = 2 }},2603 .dst_constraints = .{.{ .elem_size_is = 2 }},
...@@ -2609,7 +2606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2609,7 +2606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2609 },2606 },
2610 .dst_temps = .{.{ .rc = .general_purpose }},2607 .dst_temps = .{.{ .rc = .general_purpose }},
2611 .each = .{ .once = &.{2608 .each = .{ .once = &.{
2612 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"2", .src1), ._, ._ },2609 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
2613 } },2610 } },
2614 }, .{2611 }, .{
2615 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},2612 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
...@@ -2618,8 +2615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2618,8 +2615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2618 },2615 },
2619 .dst_temps = .{.{ .rc = .general_purpose }},2616 .dst_temps = .{.{ .rc = .general_purpose }},
2620 .each = .{ .once = &.{2617 .each = .{ .once = &.{
2621 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"2", .src1), ._, ._ },2618 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2622 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2619 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2623 } },2620 } },
2624 }, .{2621 }, .{
2625 .dst_constraints = .{.{ .elem_size_is = 4 }},2622 .dst_constraints = .{.{ .elem_size_is = 4 }},
...@@ -2628,7 +2625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2628,7 +2625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2628 },2625 },
2629 .dst_temps = .{.{ .rc = .general_purpose }},2626 .dst_temps = .{.{ .rc = .general_purpose }},
2630 .each = .{ .once = &.{2627 .each = .{ .once = &.{
2631 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"4", .src1), ._, ._ },2628 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2632 } },2629 } },
2633 }, .{2630 }, .{
2634 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},2631 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
...@@ -2637,8 +2634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2637,8 +2634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2637 },2634 },
2638 .dst_temps = .{.{ .ref = .src1 }},2635 .dst_temps = .{.{ .ref = .src1 }},
2639 .each = .{ .once = &.{2636 .each = .{ .once = &.{
2640 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"4", .src1), ._, ._ },2637 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2641 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2638 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2642 } },2639 } },
2643 }, .{2640 }, .{
2644 .required_features = .{ .@"64bit", null, null, null },2641 .required_features = .{ .@"64bit", null, null, null },
...@@ -2648,7 +2645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2648,7 +2645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2648 },2645 },
2649 .dst_temps = .{.{ .rc = .general_purpose }},2646 .dst_temps = .{.{ .rc = .general_purpose }},
2650 .each = .{ .once = &.{2647 .each = .{ .once = &.{
2651 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"8", .src1), ._, ._ },2648 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
2652 } },2649 } },
2653 }, .{2650 }, .{
2654 .required_features = .{ .@"64bit", null, null, null },2651 .required_features = .{ .@"64bit", null, null, null },
...@@ -2658,8 +2655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2658,8 +2655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2658 },2655 },
2659 .dst_temps = .{.{ .ref = .src1 }},2656 .dst_temps = .{.{ .ref = .src1 }},
2660 .each = .{ .once = &.{2657 .each = .{ .once = &.{
2661 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"8", .src1), ._, ._ },2658 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2662 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2659 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2663 } },2660 } },
2664 }, .{2661 }, .{
2665 .dst_constraints = .{.po2_elem_size},2662 .dst_constraints = .{.po2_elem_size},
...@@ -2670,7 +2667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2670,7 +2667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2670 .clobbers = .{ .eflags = true },2667 .clobbers = .{ .eflags = true },
2671 .each = .{ .once = &.{2668 .each = .{ .once = &.{
2672 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },2669 .{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2673 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },2670 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2674 } },2671 } },
2675 }, .{2672 }, .{
2676 .patterns = &.{2673 .patterns = &.{
...@@ -2680,7 +2677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2680,7 +2677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2680 .clobbers = .{ .eflags = true },2677 .clobbers = .{ .eflags = true },
2681 .each = .{ .once = &.{2678 .each = .{ .once = &.{
2682 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },2679 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
2683 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2680 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2684 } },2681 } },
2685 } }) catch |err| switch (err) {2682 } }) catch |err| switch (err) {
2686 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{2683 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
...@@ -2707,7 +2704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2707,7 +2704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2707 },2704 },
2708 .dst_temps = .{.{ .rc = .general_purpose }},2705 .dst_temps = .{.{ .rc = .general_purpose }},
2709 .each = .{ .once = &.{2706 .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), ._, ._ },
2711 } },2708 } },
2712 }, .{2709 }, .{
2713 .dst_constraints = .{.{ .elem_size_is = 1 }},2710 .dst_constraints = .{.{ .elem_size_is = 1 }},
...@@ -2718,7 +2715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2718,7 +2715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2718 .clobbers = .{ .eflags = true },2715 .clobbers = .{ .eflags = true },
2719 .each = .{ .once = &.{2716 .each = .{ .once = &.{
2720 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2717 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2721 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },2718 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2722 } },2719 } },
2723 }, .{2720 }, .{
2724 .dst_constraints = .{.{ .elem_size_is = 2 }},2721 .dst_constraints = .{.{ .elem_size_is = 2 }},
...@@ -2729,7 +2726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2729,7 +2726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2729 .clobbers = .{ .eflags = true },2726 .clobbers = .{ .eflags = true },
2730 .each = .{ .once = &.{2727 .each = .{ .once = &.{
2731 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2728 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2732 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"2", .src1), ._, ._ },2729 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
2733 } },2730 } },
2734 }, .{2731 }, .{
2735 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},2732 .dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
...@@ -2739,9 +2736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2739,9 +2736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2739 .dst_temps = .{.{ .rc = .general_purpose }},2736 .dst_temps = .{.{ .rc = .general_purpose }},
2740 .clobbers = .{ .eflags = true },2737 .clobbers = .{ .eflags = true },
2741 .each = .{ .once = &.{2738 .each = .{ .once = &.{
2742 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"2", .src1), ._, ._ },2739 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
2743 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },2740 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2744 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2741 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2745 } },2742 } },
2746 }, .{2743 }, .{
2747 .dst_constraints = .{.{ .elem_size_is = 4 }},2744 .dst_constraints = .{.{ .elem_size_is = 4 }},
...@@ -2752,7 +2749,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2752,7 +2749,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2752 .clobbers = .{ .eflags = true },2749 .clobbers = .{ .eflags = true },
2753 .each = .{ .once = &.{2750 .each = .{ .once = &.{
2754 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2751 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2755 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"4", .src1), ._, ._ },2752 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
2756 } },2753 } },
2757 }, .{2754 }, .{
2758 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},2755 .dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
...@@ -2762,9 +2759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2762,9 +2759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2762 .dst_temps = .{.{ .rc = .general_purpose }},2759 .dst_temps = .{.{ .rc = .general_purpose }},
2763 .clobbers = .{ .eflags = true },2760 .clobbers = .{ .eflags = true },
2764 .each = .{ .once = &.{2761 .each = .{ .once = &.{
2765 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"4", .src1), ._, ._ },2762 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
2766 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },2763 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2767 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2764 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2768 } },2765 } },
2769 }, .{2766 }, .{
2770 .required_features = .{ .@"64bit", null, null, null },2767 .required_features = .{ .@"64bit", null, null, null },
...@@ -2776,7 +2773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2776,7 +2773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2776 .clobbers = .{ .eflags = true },2773 .clobbers = .{ .eflags = true },
2777 .each = .{ .once = &.{2774 .each = .{ .once = &.{
2778 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2775 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2779 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"8", .src1), ._, ._ },2776 .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
2780 } },2777 } },
2781 }, .{2778 }, .{
2782 .required_features = .{ .@"64bit", null, null, null },2779 .required_features = .{ .@"64bit", null, null, null },
...@@ -2787,9 +2784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2787,9 +2784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2787 .dst_temps = .{.{ .rc = .general_purpose }},2784 .dst_temps = .{.{ .rc = .general_purpose }},
2788 .clobbers = .{ .eflags = true },2785 .clobbers = .{ .eflags = true },
2789 .each = .{ .once = &.{2786 .each = .{ .once = &.{
2790 .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"8", .src1), ._, ._ },2787 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
2791 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },2788 .{ ._, ._, .neg, .dst0p, ._, ._, ._ },
2792 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2789 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2793 } },2790 } },
2794 }, .{2791 }, .{
2795 .dst_constraints = .{.po2_elem_size},2792 .dst_constraints = .{.po2_elem_size},
...@@ -2801,7 +2798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2801,7 +2798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2801 .each = .{ .once = &.{2798 .each = .{ .once = &.{
2802 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },2799 .{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
2803 .{ ._, ._, .neg, .src1p, ._, ._, ._ },2800 .{ ._, ._, .neg, .src1p, ._, ._, ._ },
2804 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },2801 .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
2805 } },2802 } },
2806 }, .{2803 }, .{
2807 .patterns = &.{2804 .patterns = &.{
...@@ -2811,7 +2808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2811,7 +2808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2811 .clobbers = .{ .eflags = true },2808 .clobbers = .{ .eflags = true },
2812 .each = .{ .once = &.{2809 .each = .{ .once = &.{
2813 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },2810 .{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
2814 .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },2811 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
2815 } },2812 } },
2816 } }) catch |err| switch (err) {2813 } }) catch |err| switch (err) {
2817 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{2814 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
...@@ -4542,7 +4539,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4542,7 +4539,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4542 .dst_temps = .{.{ .rc = .sse }},4539 .dst_temps = .{.{ .rc = .sse }},
4543 .each = .{ .once = &.{4540 .each = .{ .once = &.{
4544 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4541 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4545 .{ ._, ._dqa, .mov, .dst0x, .lea(.xword, .tmp0), ._, ._ },4542 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
4546 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },4543 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
4547 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },4544 .{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
4548 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },4545 .{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
...@@ -4680,7 +4677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4680,7 +4677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4680 .clobbers = .{ .eflags = true },4677 .clobbers = .{ .eflags = true },
4681 .each = .{ .once = &.{4678 .each = .{ .once = &.{
4682 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4679 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
4683 .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },4680 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
4684 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },4681 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
4685 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },4682 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
4686 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },4683 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
...@@ -4999,7 +4996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4999,7 +4996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4999 .dst_temps = .{.{ .rc = .sse }},4996 .dst_temps = .{.{ .rc = .sse }},
5000 .each = .{ .once = &.{4997 .each = .{ .once = &.{
5001 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },4998 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5002 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },4999 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5003 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },5000 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
5004 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },5001 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
5005 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },5002 .{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
...@@ -5030,7 +5027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5030,7 +5027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5030 .dst_temps = .{.{ .ref = .src0 }},5027 .dst_temps = .{.{ .ref = .src0 }},
5031 .each = .{ .once = &.{5028 .each = .{ .once = &.{
5032 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5029 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5033 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },5030 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5034 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },5031 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
5035 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },5032 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
5036 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },5033 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
...@@ -5062,7 +5059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5062,7 +5059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5062 .dst_temps = .{.{ .rc = .sse }},5059 .dst_temps = .{.{ .rc = .sse }},
5063 .each = .{ .once = &.{5060 .each = .{ .once = &.{
5064 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5061 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5065 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },5062 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
5066 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },5063 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
5067 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },5064 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
5068 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },5065 .{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
...@@ -5092,7 +5089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5092,7 +5089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5092 .clobbers = .{ .eflags = true },5089 .clobbers = .{ .eflags = true },
5093 .each = .{ .once = &.{5090 .each = .{ .once = &.{
5094 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5095 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },5092 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
5096 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5093 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5097 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5094 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
5098 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5095 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
...@@ -5128,7 +5125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5128,7 +5125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5128 .clobbers = .{ .eflags = true },5125 .clobbers = .{ .eflags = true },
5129 .each = .{ .once = &.{5126 .each = .{ .once = &.{
5130 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5127 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5131 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },5128 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5132 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5133 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5130 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5134 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5131 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
...@@ -5164,7 +5161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5164,7 +5161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5164 .clobbers = .{ .eflags = true },5161 .clobbers = .{ .eflags = true },
5165 .each = .{ .once = &.{5162 .each = .{ .once = &.{
5166 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },5163 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
5167 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },5164 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
5168 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },5165 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5169 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },5166 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
5170 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },5167 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
...@@ -5266,7 +5263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5266,7 +5263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5266 .{ ._, ._c, .cl, ._, ._, ._, ._ },5263 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5267 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5264 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5268 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5265 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5269 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },5266 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5270 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },5267 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5271 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },5268 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5272 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5269 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
...@@ -5305,7 +5302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5305,7 +5302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5305 .{ ._, ._c, .cl, ._, ._, ._, ._ },5302 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5306 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5303 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5307 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5304 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5308 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },5305 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5309 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },5306 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5310 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },5307 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5311 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5308 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
...@@ -5344,7 +5341,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5344,7 +5341,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5344 .{ ._, ._c, .cl, ._, ._, ._, ._ },5341 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5345 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5342 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5346 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5343 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5347 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },5344 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5348 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },5345 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5349 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },5346 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5350 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },5347 .{ ._, ._, .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 {...@@ -5381,7 +5378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5381 .{ ._, ._c, .cl, ._, ._, ._, ._ },5378 .{ ._, ._c, .cl, ._, ._, ._, ._ },
5382 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },5379 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
5383 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },5380 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
5384 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },5381 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
5385 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },5382 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
5386 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },5383 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
5387 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },5384 .{ ._, ._, .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 {...@@ -5569,13 +5566,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5569 .dst_temps = .{.mem},5566 .dst_temps = .{.mem},
5570 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5571 .each = .{ .once = &.{5568 .each = .{ .once = &.{
5572 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5569 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5573 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },5570 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
5574 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },5571 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
5575 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },5572 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
5576 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },5573 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5577 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },5574 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5578 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },5575 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5579 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5580 } },5577 } },
5581 }, .{5578 }, .{
...@@ -5602,14 +5599,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5602,14 +5599,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5602 .dst_temps = .{.mem},5599 .dst_temps = .{.mem},
5603 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5604 .each = .{ .once = &.{5601 .each = .{ .once = &.{
5605 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5602 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5606 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },5603 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5607 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },5604 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5608 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },5605 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
5609 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },5606 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
5610 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },5607 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5611 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },5608 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
5612 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },5609 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5613 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5610 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5614 } },5611 } },
5615 }, .{5612 }, .{
...@@ -5636,7 +5633,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5636,7 +5633,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5636 .dst_temps = .{.mem},5633 .dst_temps = .{.mem},
5637 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5634 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5638 .each = .{ .once = &.{5635 .each = .{ .once = &.{
5639 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5640 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },5637 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
5641 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },5638 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
5642 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },5639 .{ ._, .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 {...@@ -5644,7 +5641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5644 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },5641 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
5645 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },5642 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
5646 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },5643 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
5647 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },5644 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5648 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5645 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5649 } },5646 } },
5650 }, .{5647 }, .{
...@@ -5659,7 +5656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5659,7 +5656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5659 .call_frame = .{ .alignment = .@"16" },5656 .call_frame = .{ .alignment = .@"16" },
5660 .extra_temps = .{5657 .extra_temps = .{
5661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },5658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
5662 .{ .type = .f16, .kind = .{ .reg = .eax } },5659 .{ .type = .f16, .kind = .{ .reg = .ax } },
5663 .{ .type = .f32, .kind = .mem },5660 .{ .type = .f32, .kind = .mem },
5664 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },5661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
5665 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },5662 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
...@@ -5671,7 +5668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5671,7 +5668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5671 .dst_temps = .{.mem},5668 .dst_temps = .{.mem},
5672 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },5669 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
5673 .each = .{ .once = &.{5670 .each = .{ .once = &.{
5674 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5671 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5675 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },5672 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
5676 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },5673 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
5677 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },5674 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
...@@ -5682,7 +5679,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5682,7 +5679,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5682 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },5679 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
5683 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },5680 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
5684 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },5681 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
5685 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },5682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
5686 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5687 } },5684 } },
5688 }, .{5685 }, .{
...@@ -5880,14 +5877,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5880,14 +5877,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5880 .dst_temps = .{.mem},5877 .dst_temps = .{.mem},
5881 .clobbers = .{ .eflags = true },5878 .clobbers = .{ .eflags = true },
5882 .each = .{ .once = &.{5879 .each = .{ .once = &.{
5883 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5880 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5884 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },5881 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
5885 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },5882 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
5886 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },5883 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
5887 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },5884 .{ ._, .v_ps, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
5888 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },5885 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
5889 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },5886 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
5890 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },5887 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
5891 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5888 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5892 } },5889 } },
5893 }, .{5890 }, .{
...@@ -5913,7 +5910,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5913,7 +5910,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5913 .dst_temps = .{.mem},5910 .dst_temps = .{.mem},
5914 .clobbers = .{ .eflags = true },5911 .clobbers = .{ .eflags = true },
5915 .each = .{ .once = &.{5912 .each = .{ .once = &.{
5916 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5913 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5917 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5914 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5918 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5915 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5919 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },5916 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -5921,7 +5918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5921,7 +5918,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5921 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },5918 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
5922 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },5919 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
5923 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },5920 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
5924 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },5921 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5925 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5926 } },5923 } },
5927 }, .{5924 }, .{
...@@ -5947,7 +5944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5947,7 +5944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5947 .dst_temps = .{.mem},5944 .dst_temps = .{.mem},
5948 .clobbers = .{ .eflags = true },5945 .clobbers = .{ .eflags = true },
5949 .each = .{ .once = &.{5946 .each = .{ .once = &.{
5950 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },5947 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
5951 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },5948 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
5952 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },5949 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
5953 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },5950 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -5957,7 +5954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -5957,7 +5954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5957 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },5954 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
5958 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },5955 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
5959 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },5956 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
5960 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },5957 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
5961 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },5958 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
5962 } },5959 } },
5963 }, .{5960 }, .{
...@@ -6181,14 +6178,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6181,14 +6178,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6181 .dst_temps = .{.mem},6178 .dst_temps = .{.mem},
6182 .clobbers = .{ .eflags = true },6179 .clobbers = .{ .eflags = true },
6183 .each = .{ .once = &.{6180 .each = .{ .once = &.{
6184 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6181 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6185 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },6182 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
6186 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },6183 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
6187 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },6184 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
6188 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },6185 .{ ._, .v_pd, .max, .tmp1y, .tmp2y, .tmp1y, ._ },
6189 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },6186 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
6190 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },6187 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
6191 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },6188 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
6192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6193 } },6190 } },
6194 }, .{6191 }, .{
...@@ -6214,7 +6211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6214,7 +6211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6214 .dst_temps = .{.mem},6211 .dst_temps = .{.mem},
6215 .clobbers = .{ .eflags = true },6212 .clobbers = .{ .eflags = true },
6216 .each = .{ .once = &.{6213 .each = .{ .once = &.{
6217 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6214 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6218 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },6215 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6219 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },6216 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6220 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },6217 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -6222,7 +6219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6222,7 +6219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6222 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },6219 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
6223 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },6220 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
6224 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },6221 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
6225 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },6222 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6226 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6227 } },6224 } },
6228 }, .{6225 }, .{
...@@ -6248,7 +6245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6248,7 +6245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6248 .dst_temps = .{.mem},6245 .dst_temps = .{.mem},
6249 .clobbers = .{ .eflags = true },6246 .clobbers = .{ .eflags = true },
6250 .each = .{ .once = &.{6247 .each = .{ .once = &.{
6251 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6248 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6252 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },6249 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6253 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },6250 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6254 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },6251 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -6258,7 +6255,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6258,7 +6255,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6258 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },6255 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
6259 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },6256 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
6260 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },6257 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6261 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },6258 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6262 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6259 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6263 } },6260 } },
6264 }, .{6261 }, .{
...@@ -6285,14 +6282,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6285,14 +6282,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6285 .dst_temps = .{.mem},6282 .dst_temps = .{.mem},
6286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },6283 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6287 .each = .{ .once = &.{6284 .each = .{ .once = &.{
6288 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6289 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },6286 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
6290 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },6287 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
6291 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },6288 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
6292 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },6289 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
6293 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },6290 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6294 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },6291 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
6295 .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ },6292 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
6296 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6297 } },6294 } },
6298 }, .{6295 }, .{
...@@ -6582,12 +6579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6582,12 +6579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6582 .dst_temps = .{.mem},6579 .dst_temps = .{.mem},
6583 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },6580 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6584 .each = .{ .once = &.{6581 .each = .{ .once = &.{
6585 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6586 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },6583 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6587 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },6584 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6588 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },6585 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6589 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },6586 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6590 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },6587 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6591 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6592 } },6589 } },
6593 }, .{6590 }, .{
...@@ -6614,12 +6611,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6614,12 +6611,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6614 .dst_temps = .{.mem},6611 .dst_temps = .{.mem},
6615 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },6612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6616 .each = .{ .once = &.{6613 .each = .{ .once = &.{
6617 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6614 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6618 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },6615 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6619 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },6616 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6620 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },6617 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6621 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },6618 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6622 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },6619 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6623 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6624 } },6621 } },
6625 }, .{6622 }, .{
...@@ -6646,12 +6643,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -6646,12 +6643,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6646 .dst_temps = .{.mem},6643 .dst_temps = .{.mem},
6647 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },6644 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
6648 .each = .{ .once = &.{6645 .each = .{ .once = &.{
6649 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },6646 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
6650 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },6647 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
6651 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },6648 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
6652 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },6649 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
6653 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },6650 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
6654 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },6651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
6655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },6652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
6656 } },6653 } },
6657 } }) catch |err| switch (err) {6654 } }) catch |err| switch (err) {
...@@ -8382,7 +8379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8382,7 +8379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8382 .dst_temps = .{.{ .rc = .sse }},8379 .dst_temps = .{.{ .rc = .sse }},
8383 .each = .{ .once = &.{8380 .each = .{ .once = &.{
8384 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8381 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8385 .{ ._, ._dqa, .mov, .dst0x, .lea(.xword, .tmp0), ._, ._ },8382 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
8386 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },8383 .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
8387 .{ ._, .p_, .xor, .dst0x, .src1x, ._, ._ },8384 .{ ._, .p_, .xor, .dst0x, .src1x, ._, ._ },
8388 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },8385 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
...@@ -8520,7 +8517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8520,7 +8517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8520 .clobbers = .{ .eflags = true },8517 .clobbers = .{ .eflags = true },
8521 .each = .{ .once = &.{8518 .each = .{ .once = &.{
8522 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8519 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8523 .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },8520 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
8524 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },8521 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
8525 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },8522 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
8526 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },8523 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
...@@ -8843,7 +8840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8843,7 +8840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8843 .dst_temps = .{.{ .rc = .sse }},8840 .dst_temps = .{.{ .rc = .sse }},
8844 .each = .{ .once = &.{8841 .each = .{ .once = &.{
8845 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8842 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8846 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },8843 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
8847 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },8844 .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
8848 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },8845 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
8849 .{ ._, .vp_q, .cmpgt, .dst0x, .dst0x, .tmp2x, ._ },8846 .{ ._, .vp_q, .cmpgt, .dst0x, .dst0x, .tmp2x, ._ },
...@@ -8874,7 +8871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8874,7 +8871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8874 .dst_temps = .{.{ .ref = .src0 }},8871 .dst_temps = .{.{ .ref = .src0 }},
8875 .each = .{ .once = &.{8872 .each = .{ .once = &.{
8876 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8873 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8877 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },8874 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
8878 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },8875 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
8879 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },8876 .{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
8880 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },8877 .{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
...@@ -8906,7 +8903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8906,7 +8903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8906 .dst_temps = .{.{ .rc = .sse }},8903 .dst_temps = .{.{ .rc = .sse }},
8907 .each = .{ .once = &.{8904 .each = .{ .once = &.{
8908 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8905 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8909 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },8906 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
8910 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },8907 .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
8911 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },8908 .{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
8912 .{ ._, .vp_q, .cmpgt, .dst0y, .dst0y, .tmp2y, ._ },8909 .{ ._, .vp_q, .cmpgt, .dst0y, .dst0y, .tmp2y, ._ },
...@@ -8936,7 +8933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8936,7 +8933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8936 .clobbers = .{ .eflags = true },8933 .clobbers = .{ .eflags = true },
8937 .each = .{ .once = &.{8934 .each = .{ .once = &.{
8938 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8935 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8939 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },8936 .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
8940 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },8937 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
8941 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },8938 .{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
8942 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },8939 .{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
...@@ -8972,7 +8969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -8972,7 +8969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8972 .clobbers = .{ .eflags = true },8969 .clobbers = .{ .eflags = true },
8973 .each = .{ .once = &.{8970 .each = .{ .once = &.{
8974 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },8971 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
8975 .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },8972 .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
8976 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },8973 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
8977 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },8974 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
8978 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },8975 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
...@@ -9008,7 +9005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9008,7 +9005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9008 .clobbers = .{ .eflags = true },9005 .clobbers = .{ .eflags = true },
9009 .each = .{ .once = &.{9006 .each = .{ .once = &.{
9010 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },9007 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
9011 .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },9008 .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
9012 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },9009 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9013 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },9010 .{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
9014 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },9011 .{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
...@@ -9110,7 +9107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9110,7 +9107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9110 .{ ._, ._c, .cl, ._, ._, ._, ._ },9107 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9111 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },9108 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
9112 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },9109 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9113 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },9110 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
9114 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },9111 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
9115 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },9112 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
9116 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },9113 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
...@@ -9149,7 +9146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9149,7 +9146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9149 .{ ._, ._c, .cl, ._, ._, ._, ._ },9146 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9150 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },9147 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
9151 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },9148 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9152 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },9149 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
9153 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },9150 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
9154 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },9151 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
9155 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },9152 .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
...@@ -9188,7 +9185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9188,7 +9185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9188 .{ ._, ._c, .cl, ._, ._, ._, ._ },9185 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9189 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },9186 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
9190 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },9187 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9191 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },9188 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
9192 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },9189 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
9193 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },9190 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
9194 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },9191 .{ ._, ._, .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 {...@@ -9225,7 +9222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9225 .{ ._, ._c, .cl, ._, ._, ._, ._ },9222 .{ ._, ._c, .cl, ._, ._, ._, ._ },
9226 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },9223 .{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
9227 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },9224 .{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
9228 .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },9225 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
9229 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },9226 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
9230 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },9227 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
9231 .{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },9228 .{ ._, ._, .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 {...@@ -9413,13 +9410,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9413 .dst_temps = .{.mem},9410 .dst_temps = .{.mem},
9414 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },9411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9415 .each = .{ .once = &.{9412 .each = .{ .once = &.{
9416 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9413 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9417 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },9414 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
9418 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },9415 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_size), .ui(0) },
9419 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },9416 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0) },
9420 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },9417 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
9421 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },9418 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
9422 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },9419 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9424 } },9421 } },
9425 }, .{9422 }, .{
...@@ -9446,14 +9443,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9446,14 +9443,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9446 .dst_temps = .{.mem},9443 .dst_temps = .{.mem},
9447 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },9444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9448 .each = .{ .once = &.{9445 .each = .{ .once = &.{
9449 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9450 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },9447 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
9451 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },9448 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
9452 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },9449 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },
9453 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },9450 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_size), .ui(0), ._ },
9454 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },9451 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
9455 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },9452 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_size), .tmp1x, .ui(0), ._ },
9456 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },9453 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9457 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9458 } },9455 } },
9459 }, .{9456 }, .{
...@@ -9480,7 +9477,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9480,7 +9477,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9480 .dst_temps = .{.mem},9477 .dst_temps = .{.mem},
9481 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },9478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9482 .each = .{ .once = &.{9479 .each = .{ .once = &.{
9483 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9484 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },9481 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
9485 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },9482 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
9486 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_size), .ui(0), ._ },9483 .{ ._, .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 {...@@ -9488,7 +9485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9488 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },9485 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
9489 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },9486 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
9490 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },9487 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp4w, ._, ._ },
9491 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },9488 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9492 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9489 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9493 } },9490 } },
9494 }, .{9491 }, .{
...@@ -9503,7 +9500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9503,7 +9500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9503 .call_frame = .{ .alignment = .@"16" },9500 .call_frame = .{ .alignment = .@"16" },
9504 .extra_temps = .{9501 .extra_temps = .{
9505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },9502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9506 .{ .type = .f16, .kind = .{ .reg = .eax } },9503 .{ .type = .f16, .kind = .{ .reg = .ax } },
9507 .{ .type = .f32, .kind = .mem },9504 .{ .type = .f32, .kind = .mem },
9508 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },9505 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
9509 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },9506 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
...@@ -9515,7 +9512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9515,7 +9512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9515 .dst_temps = .{.mem},9512 .dst_temps = .{.mem},
9516 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },9513 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
9517 .each = .{ .once = &.{9514 .each = .{ .once = &.{
9518 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9515 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9519 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },9516 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_size), ._, ._ },
9520 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },9517 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
9521 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },9518 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
...@@ -9526,7 +9523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9526,7 +9523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9526 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },9523 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
9527 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },9524 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
9528 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },9525 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_size), .tmp1w, ._, ._ },
9529 .{ ._, ._, .add, .tmp0q, .si(2), ._, ._ },9526 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
9530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9527 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9531 } },9528 } },
9532 }, .{9529 }, .{
...@@ -9724,14 +9721,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9724,14 +9721,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9724 .dst_temps = .{.mem},9721 .dst_temps = .{.mem},
9725 .clobbers = .{ .eflags = true },9722 .clobbers = .{ .eflags = true },
9726 .each = .{ .once = &.{9723 .each = .{ .once = &.{
9727 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9724 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9728 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },9725 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
9729 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },9726 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
9730 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },9727 .{ ._, .v_ps, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
9731 .{ ._, .v_ps, .min, .tmp1y, .tmp2y, .tmp1y, ._ },9728 .{ ._, .v_ps, .min, .tmp1y, .tmp2y, .tmp1y, ._ },
9732 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },9729 .{ ._, .v_ps, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
9733 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },9730 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
9734 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },9731 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
9735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9732 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9736 } },9733 } },
9737 }, .{9734 }, .{
...@@ -9757,7 +9754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9757,7 +9754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9757 .dst_temps = .{.mem},9754 .dst_temps = .{.mem},
9758 .clobbers = .{ .eflags = true },9755 .clobbers = .{ .eflags = true },
9759 .each = .{ .once = &.{9756 .each = .{ .once = &.{
9760 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9761 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },9758 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
9762 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },9759 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9763 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },9760 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -9765,7 +9762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9765,7 +9762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9765 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },9762 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
9766 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },9763 .{ ._, ._ps, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
9767 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },9764 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
9768 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },9765 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9769 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9766 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9770 } },9767 } },
9771 }, .{9768 }, .{
...@@ -9791,7 +9788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9791,7 +9788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9791 .dst_temps = .{.mem},9788 .dst_temps = .{.mem},
9792 .clobbers = .{ .eflags = true },9789 .clobbers = .{ .eflags = true },
9793 .each = .{ .once = &.{9790 .each = .{ .once = &.{
9794 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },9791 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
9795 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },9792 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
9796 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },9793 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
9797 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },9794 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -9801,7 +9798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -9801,7 +9798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9801 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },9798 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
9802 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },9799 .{ ._, ._ps, .@"or", .tmp1x, .tmp3x, ._, ._ },
9803 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },9800 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
9804 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },9801 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
9805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },9802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
9806 } },9803 } },
9807 }, .{9804 }, .{
...@@ -10025,14 +10022,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10025,14 +10022,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10025 .dst_temps = .{.mem},10022 .dst_temps = .{.mem},
10026 .clobbers = .{ .eflags = true },10023 .clobbers = .{ .eflags = true },
10027 .each = .{ .once = &.{10024 .each = .{ .once = &.{
10028 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10025 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10029 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },10026 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
10030 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },10027 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
10031 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },10028 .{ ._, .v_pd, .cmp, .tmp3y, .tmp1y, .tmp1y, .vp(.unord) },
10032 .{ ._, .v_pd, .min, .tmp1y, .tmp2y, .tmp1y, ._ },10029 .{ ._, .v_pd, .min, .tmp1y, .tmp2y, .tmp1y, ._ },
10033 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },10030 .{ ._, .v_pd, .blendv, .tmp1y, .tmp1y, .tmp2y, .tmp3y },
10034 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },10031 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp1y, ._, ._ },
10035 .{ ._, ._, .add, .tmp0q, .si(32), ._, ._ },10032 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
10036 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10037 } },10034 } },
10038 }, .{10035 }, .{
...@@ -10058,7 +10055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10058,7 +10055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10058 .dst_temps = .{.mem},10055 .dst_temps = .{.mem},
10059 .clobbers = .{ .eflags = true },10056 .clobbers = .{ .eflags = true },
10060 .each = .{ .once = &.{10057 .each = .{ .once = &.{
10061 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10058 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10062 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },10059 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10063 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },10060 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10064 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },10061 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -10066,7 +10063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10066,7 +10063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10066 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },10063 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .vp(.unord), ._ },
10067 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },10064 .{ ._, ._pd, .blendv, .tmp3x, .tmp2x, .tmp1x, ._ },
10068 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },10065 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },
10069 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },10066 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10070 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10067 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10071 } },10068 } },
10072 }, .{10069 }, .{
...@@ -10092,7 +10089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10092,7 +10089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10092 .dst_temps = .{.mem},10089 .dst_temps = .{.mem},
10093 .clobbers = .{ .eflags = true },10090 .clobbers = .{ .eflags = true },
10094 .each = .{ .once = &.{10091 .each = .{ .once = &.{
10095 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10096 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },10093 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10097 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },10094 .{ ._, ._pd, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10098 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },10095 .{ ._, ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
...@@ -10102,7 +10099,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10102,7 +10099,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10102 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },10099 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
10103 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },10100 .{ ._, ._pd, .@"or", .tmp1x, .tmp3x, ._, ._ },
10104 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },10101 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10105 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },10102 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10106 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10103 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10107 } },10104 } },
10108 }, .{10105 }, .{
...@@ -10129,14 +10126,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10129,14 +10126,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10129 .dst_temps = .{.mem},10126 .dst_temps = .{.mem},
10130 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },10127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10131 .each = .{ .once = &.{10128 .each = .{ .once = &.{
10132 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10133 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },10130 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
10134 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },10131 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
10135 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },10132 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_size), ._, ._ },
10136 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },10133 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_size), ._, ._ },
10137 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },10134 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10138 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },10135 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_size), .tmp1q, ._, ._ },
10139 .{ ._, ._, .add, .tmp0q, .si(8), ._, ._ },10136 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
10140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10137 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10141 } },10138 } },
10142 }, .{10139 }, .{
...@@ -10414,12 +10411,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10414,12 +10411,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10414 .dst_temps = .{.mem},10411 .dst_temps = .{.mem},
10415 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },10412 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10416 .each = .{ .once = &.{10413 .each = .{ .once = &.{
10417 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10414 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10418 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },10415 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10419 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },10416 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10420 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },10417 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10421 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },10418 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10422 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },10419 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10424 } },10421 } },
10425 }, .{10422 }, .{
...@@ -10446,12 +10443,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10446,12 +10443,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10446 .dst_temps = .{.mem},10443 .dst_temps = .{.mem},
10447 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },10444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10448 .each = .{ .once = &.{10445 .each = .{ .once = &.{
10449 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10450 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },10447 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10451 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },10448 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10452 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },10449 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10453 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },10450 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10454 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },10451 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10452 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10456 } },10453 } },
10457 }, .{10454 }, .{
...@@ -10478,12 +10475,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10478,12 +10475,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10478 .dst_temps = .{.mem},10475 .dst_temps = .{.mem},
10479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },10476 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
10480 .each = .{ .once = &.{10477 .each = .{ .once = &.{
10481 .{ ._, ._, .mov, .tmp0q, .sa(.src0, .sub_size), ._, ._ },10478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
10482 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },10479 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
10483 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },10480 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
10484 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },10481 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
10485 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },10482 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp1x, ._, ._ },
10486 .{ ._, ._, .add, .tmp0q, .si(16), ._, ._ },10483 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
10487 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },10484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
10488 } },10485 } },
10489 } }) catch |err| switch (err) {10486 } }) catch |err| switch (err) {
...@@ -10999,7 +10996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -10999,7 +10996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
10999 .dst_temps = .{.{ .ref = .src0 }},10996 .dst_temps = .{.{ .ref = .src0 }},
11000 .each = .{ .once = &.{10997 .each = .{ .once = &.{
11001 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },10998 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11002 .{ ._, .p_, .xor, .dst0q, .lea(.qword, .tmp0), ._, ._ },10999 .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ },
11003 } },11000 } },
11004 }, .{11001 }, .{
11005 .required_features = .{ .avx, null, null, null },11002 .required_features = .{ .avx, null, null, null },
...@@ -11033,7 +11030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11033,7 +11030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11033 .dst_temps = .{.{ .rc = .sse }},11030 .dst_temps = .{.{ .rc = .sse }},
11034 .each = .{ .once = &.{11031 .each = .{ .once = &.{
11035 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11032 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11036 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.xword, .tmp0), ._ },11033 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
11037 } },11034 } },
11038 }, .{11035 }, .{
11039 .required_features = .{ .sse2, null, null, null },11036 .required_features = .{ .sse2, null, null, null },
...@@ -11067,7 +11064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11067,7 +11064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11067 .dst_temps = .{.{ .ref = .src0 }},11064 .dst_temps = .{.{ .ref = .src0 }},
11068 .each = .{ .once = &.{11065 .each = .{ .once = &.{
11069 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11066 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11070 .{ ._, .p_, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },11067 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
11071 } },11068 } },
11072 }, .{11069 }, .{
11073 .required_features = .{ .sse, null, null, null },11070 .required_features = .{ .sse, null, null, null },
...@@ -11089,7 +11086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11089,7 +11086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11089 .dst_temps = .{.{ .ref = .src0 }},11086 .dst_temps = .{.{ .ref = .src0 }},
11090 .each = .{ .once = &.{11087 .each = .{ .once = &.{
11091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11092 .{ ._, ._ps, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },11089 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
11093 } },11090 } },
11094 }, .{11091 }, .{
11095 .required_features = .{ .avx2, null, null, null },11092 .required_features = .{ .avx2, null, null, null },
...@@ -11123,7 +11120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11123,7 +11120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11123 .dst_temps = .{.{ .rc = .sse }},11120 .dst_temps = .{.{ .rc = .sse }},
11124 .each = .{ .once = &.{11121 .each = .{ .once = &.{
11125 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11122 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11126 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },11123 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
11127 } },11124 } },
11128 }, .{11125 }, .{
11129 .required_features = .{ .avx, null, null, null },11126 .required_features = .{ .avx, null, null, null },
...@@ -11157,7 +11154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11157,7 +11154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11157 .dst_temps = .{.{ .rc = .sse }},11154 .dst_temps = .{.{ .rc = .sse }},
11158 .each = .{ .once = &.{11155 .each = .{ .once = &.{
11159 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11156 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11160 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },11157 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
11161 } },11158 } },
11162 }, .{11159 }, .{
11163 .required_features = .{ .avx2, null, null, null },11160 .required_features = .{ .avx2, null, null, null },
...@@ -11814,7 +11811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11814,7 +11811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11814 .dst_temps = .{.{ .ref = .src0 }},11811 .dst_temps = .{.{ .ref = .src0 }},
11815 .each = .{ .once = &.{11812 .each = .{ .once = &.{
11816 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11813 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11817 .{ ._, .p_, .xor, .dst0q, .lea(.qword, .tmp0), ._, ._ },11814 .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ },
11818 } },11815 } },
11819 }, .{11816 }, .{
11820 .required_features = .{ .avx, null, null, null },11817 .required_features = .{ .avx, null, null, null },
...@@ -11848,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11848,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11848 .dst_temps = .{.{ .rc = .sse }},11845 .dst_temps = .{.{ .rc = .sse }},
11849 .each = .{ .once = &.{11846 .each = .{ .once = &.{
11850 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11847 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11851 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.xword, .tmp0), ._ },11848 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
11852 } },11849 } },
11853 }, .{11850 }, .{
11854 .required_features = .{ .sse2, null, null, null },11851 .required_features = .{ .sse2, null, null, null },
...@@ -11882,7 +11879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11882,7 +11879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11882 .dst_temps = .{.{ .ref = .src0 }},11879 .dst_temps = .{.{ .ref = .src0 }},
11883 .each = .{ .once = &.{11880 .each = .{ .once = &.{
11884 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11881 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11885 .{ ._, .p_, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },11882 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
11886 } },11883 } },
11887 }, .{11884 }, .{
11888 .required_features = .{ .sse, null, null, null },11885 .required_features = .{ .sse, null, null, null },
...@@ -11904,7 +11901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11904,7 +11901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11904 .dst_temps = .{.{ .ref = .src0 }},11901 .dst_temps = .{.{ .ref = .src0 }},
11905 .each = .{ .once = &.{11902 .each = .{ .once = &.{
11906 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11903 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11907 .{ ._, ._ps, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },11904 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
11908 } },11905 } },
11909 }, .{11906 }, .{
11910 .required_features = .{ .avx2, null, null, null },11907 .required_features = .{ .avx2, null, null, null },
...@@ -11938,7 +11935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11938,7 +11935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11938 .dst_temps = .{.{ .rc = .sse }},11935 .dst_temps = .{.{ .rc = .sse }},
11939 .each = .{ .once = &.{11936 .each = .{ .once = &.{
11940 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11937 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11941 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },11938 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
11942 } },11939 } },
11943 }, .{11940 }, .{
11944 .required_features = .{ .avx, null, null, null },11941 .required_features = .{ .avx, null, null, null },
...@@ -11972,7 +11969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11972,7 +11969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11972 .dst_temps = .{.{ .rc = .sse }},11969 .dst_temps = .{.{ .rc = .sse }},
11973 .each = .{ .once = &.{11970 .each = .{ .once = &.{
11974 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },11971 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
11975 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },11972 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
11976 } },11973 } },
11977 }, .{11974 }, .{
11978 .required_features = .{ .@"64bit", null, null, null },11975 .required_features = .{ .@"64bit", null, null, null },
...@@ -11992,13 +11989,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -11992,13 +11989,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
11992 },11989 },
11993 .dst_temps = .{.mem},11990 .dst_temps = .{.mem},
11994 .each = .{ .once = &.{11991 .each = .{ .once = &.{
11995 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ },11992 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
11996 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },11993 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
11997 .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_src0_unaligned_size), ._, ._ },11994 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ },
11998 .{ ._, ._, .xor, .tmp2q, .leaia(.qword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ },11995 .{ ._, ._, .xor, .tmp2q, .leai(.tmp1q, .tmp0), ._, ._ },
11999 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_src0_unaligned_size), .tmp2q, ._, ._ },11996 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
12000 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },11997 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
12001 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },11998 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
11999 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
12002 } },12000 } },
12003 }, .{12001 }, .{
12004 .patterns = &.{12002 .patterns = &.{
...@@ -12017,13 +12015,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -12017,13 +12015,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
12017 },12015 },
12018 .dst_temps = .{.mem},12016 .dst_temps = .{.mem},
12019 .each = .{ .once = &.{12017 .each = .{ .once = &.{
12020 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_src0_unaligned_size), ._, ._ },12018 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
12021 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },12019 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
12022 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_src0_unaligned_size), ._, ._ },12020 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ },
12023 .{ ._, ._, .xor, .tmp2d, .leaia(.dword, .tmp1, .tmp0, .add_src0_unaligned_size), ._, ._ },12021 .{ ._, ._, .xor, .tmp2d, .leai(.tmp1d, .tmp0), ._, ._ },
12024 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_src0_unaligned_size), .tmp2d, ._, ._ },12022 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
12025 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },12023 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 4), ._, ._ },
12026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },12024 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
12025 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
12027 } },12026 } },
12028 } }) catch |err| switch (err) {12027 } }) catch |err| switch (err) {
12029 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{12028 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
...@@ -13161,7 +13160,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13161,7 +13160,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13161 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13162 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13161 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13163 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13162 .{ .@"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), ._, ._ },
13165 } },13164 } },
13166 }, .{13165 }, .{
13167 .required_features = .{ .@"64bit", .lzcnt, null, null },13166 .required_features = .{ .@"64bit", .lzcnt, null, null },
...@@ -13190,7 +13189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13190,7 +13189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13191 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13190 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13192 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13191 .{ .@"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), ._, ._ },
13194 } },13193 } },
13195 }, .{13194 }, .{
13196 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },13195 .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 {...@@ -13220,7 +13219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13220 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13219 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13221 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },13220 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
13222 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13221 .{ ._, ._, .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), ._, ._ },
13224 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },13223 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
13225 } },13224 } },
13226 }, .{13225 }, .{
...@@ -13250,7 +13249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13250,7 +13249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13250 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },13249 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
13251 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13252 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13251 .{ ._, ._, .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), ._, ._ },
13254 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },13253 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
13255 } },13254 } },
13256 }, .{13255 }, .{
...@@ -13281,7 +13280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13281,7 +13280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13281 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13282 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13281 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13283 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13282 .{ .@"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), ._, ._ },
13285 } },13284 } },
13286 }, .{13285 }, .{
13287 .required_features = .{ .@"64bit", .lzcnt, null, null },13286 .required_features = .{ .@"64bit", .lzcnt, null, null },
...@@ -13310,7 +13309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13310,7 +13309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13310 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13309 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13311 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13310 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13312 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13311 .{ .@"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), ._, ._ },
13314 } },13313 } },
13315 }, .{13314 }, .{
13316 .required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },13315 .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 {...@@ -13340,7 +13339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13339 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13341 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },13340 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
13342 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13341 .{ ._, ._, .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), ._, ._ },
13344 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },13343 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
13345 } },13344 } },
13346 }, .{13345 }, .{
...@@ -13370,7 +13369,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13370,7 +13369,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13370 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },13369 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
13371 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13372 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13371 .{ ._, ._, .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), ._, ._ },
13374 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },13373 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
13375 } },13374 } },
13376 }, .{13375 }, .{
...@@ -13404,7 +13403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13404,7 +13403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13404 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13403 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13405 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13404 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13406 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13405 .{ .@"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), ._, ._ },
13408 } },13407 } },
13409 }, .{13408 }, .{
13410 .required_features = .{ .@"64bit", .lzcnt, null, null },13409 .required_features = .{ .@"64bit", .lzcnt, null, null },
...@@ -13436,7 +13435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13436,7 +13435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13436 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13437 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13436 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13438 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13437 .{ .@"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), ._, ._ },
13440 } },13439 } },
13441 }, .{13440 }, .{
13442 .required_features = .{ .@"64bit", null, null, null },13441 .required_features = .{ .@"64bit", null, null, null },
...@@ -13467,7 +13466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13467,7 +13466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13467 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },13466 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
13468 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13469 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13468 .{ ._, ._, .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), ._, ._ },
13471 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },13470 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
13472 } },13471 } },
13473 }, .{13472 }, .{
...@@ -13501,7 +13500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13501,7 +13500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13501 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13500 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13502 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13501 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13503 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13502 .{ .@"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), ._, ._ },
13505 } },13504 } },
13506 }, .{13505 }, .{
13507 .required_features = .{ .@"64bit", .lzcnt, null, null },13506 .required_features = .{ .@"64bit", .lzcnt, null, null },
...@@ -13533,7 +13532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13533,7 +13532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13533 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13532 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13534 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13533 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
13535 .{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },13534 .{ .@"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), ._, ._ },
13537 } },13536 } },
13538 }, .{13537 }, .{
13539 .required_features = .{ .@"64bit", null, null, null },13538 .required_features = .{ .@"64bit", null, null, null },
...@@ -13564,7 +13563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13564,7 +13563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13564 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },13563 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
13565 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },13564 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
13566 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },13565 .{ ._, ._, .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), ._, ._ },
13568 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },13567 .{ ._, ._, .neg, .dst0d, ._, ._, ._ },
13569 } },13568 } },
13570 }, .{13569 }, .{
...@@ -14558,8 +14557,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14558,8 +14557,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14558 } },14557 } },
14559 }, .{14558 }, .{
14560 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },14559 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14561 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14562 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },14560 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14561 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14563 .patterns = &.{14562 .patterns = &.{
14564 .{ .src = .{ .to_mem, .none } },14563 .{ .src = .{ .to_mem, .none } },
14565 },14564 },
...@@ -14581,7 +14580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14581,7 +14580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14581 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14580 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14582 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },14581 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
14583 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14582 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14584 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14583 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14585 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },14584 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
14586 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14585 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14587 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14586 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
...@@ -14590,16 +14589,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14590,16 +14589,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14590 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14589 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14591 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14590 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14592 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14591 .{ .@"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), ._, ._ },
14594 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },14593 .{ ._, ._, .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), ._, ._ },
14596 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14595 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14597 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14596 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14598 } },14597 } },
14599 }, .{14598 }, .{
14600 .required_features = .{ .@"64bit", .lzcnt, null, null },14599 .required_features = .{ .@"64bit", .lzcnt, null, null },
14601 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14602 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },14600 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14601 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14603 .patterns = &.{14602 .patterns = &.{
14604 .{ .src = .{ .to_mem, .none } },14603 .{ .src = .{ .to_mem, .none } },
14605 },14604 },
...@@ -14621,7 +14620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14621,7 +14620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14621 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14620 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14622 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },14621 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
14623 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14622 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14624 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14623 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14625 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14624 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14626 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14625 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
14627 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14626 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
...@@ -14629,16 +14628,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14629,16 +14628,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14629 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14628 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14630 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14629 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14631 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14630 .{ .@"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), ._, ._ },
14633 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },14632 .{ ._, ._, .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), ._, ._ },
14635 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14634 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14636 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14635 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14637 } },14636 } },
14638 }, .{14637 }, .{
14639 .required_features = .{ .@"64bit", null, null, null },14638 .required_features = .{ .@"64bit", null, null, null },
14640 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14641 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },14639 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14640 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14642 .patterns = &.{14641 .patterns = &.{
14643 .{ .src = .{ .to_mem, .none } },14642 .{ .src = .{ .to_mem, .none } },
14644 },14643 },
...@@ -14660,24 +14659,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14660,24 +14659,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14660 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14659 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14661 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },14660 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
14662 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14661 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14663 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14662 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14664 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },14663 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
14665 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },14664 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
14666 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14665 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
14667 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },14666 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
14668 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14667 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14669 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14668 .{ ._, ._, .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), ._, ._ },
14671 .{ ._, ._, .neg, .tmp3b, ._, ._, ._ },14670 .{ ._, ._, .neg, .tmp3b, ._, ._, ._ },
14672 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },14671 .{ ._, ._, .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), ._, ._ },
14674 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14673 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14675 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14676 } },14675 } },
14677 }, .{14676 }, .{
14678 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },14677 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14679 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14680 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },14678 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14679 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14681 .patterns = &.{14680 .patterns = &.{
14682 .{ .src = .{ .to_mem, .none } },14681 .{ .src = .{ .to_mem, .none } },
14683 },14682 },
...@@ -14699,7 +14698,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14699,7 +14698,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14699 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14698 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14700 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },14699 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
14701 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14700 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14702 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14701 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14703 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },14702 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
14704 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14703 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14705 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14704 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
...@@ -14708,16 +14707,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14708,16 +14707,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14708 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14707 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14709 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14708 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14710 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14709 .{ .@"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), ._, ._ },
14712 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },14711 .{ ._, ._, .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), ._, ._ },
14714 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14713 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14716 } },14715 } },
14717 }, .{14716 }, .{
14718 .required_features = .{ .@"64bit", .lzcnt, null, null },14717 .required_features = .{ .@"64bit", .lzcnt, null, null },
14719 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14720 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },14718 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14719 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14721 .patterns = &.{14720 .patterns = &.{
14722 .{ .src = .{ .to_mem, .none } },14721 .{ .src = .{ .to_mem, .none } },
14723 },14722 },
...@@ -14739,7 +14738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14739,7 +14738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14739 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14738 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14740 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },14739 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
14741 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14740 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14742 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14741 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14743 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14742 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14744 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14743 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
14745 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14744 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
...@@ -14747,16 +14746,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14747,16 +14746,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14747 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14746 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14748 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14747 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14749 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14748 .{ .@"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), ._, ._ },
14751 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },14750 .{ ._, ._, .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), ._, ._ },
14753 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14752 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14753 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14755 } },14754 } },
14756 }, .{14755 }, .{
14757 .required_features = .{ .@"64bit", null, null, null },14756 .required_features = .{ .@"64bit", null, null, null },
14758 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14759 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },14757 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14758 .dst_constraints = .{.{ .scalar_int_is = .byte }},
14760 .patterns = &.{14759 .patterns = &.{
14761 .{ .src = .{ .to_mem, .none } },14760 .{ .src = .{ .to_mem, .none } },
14762 },14761 },
...@@ -14778,24 +14777,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14778,24 +14777,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14778 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14777 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14779 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },14778 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
14780 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14779 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14781 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14780 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14782 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },14781 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
14783 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },14782 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
14784 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14783 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
14785 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },14784 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
14786 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14785 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14787 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14786 .{ ._, ._, .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), ._, ._ },
14789 .{ ._, ._, .neg, .tmp3b, ._, ._, ._ },14788 .{ ._, ._, .neg, .tmp3b, ._, ._, ._ },
14790 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },14789 .{ ._, ._, .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), ._, ._ },
14792 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14791 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14792 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14794 } },14793 } },
14795 }, .{14794 }, .{
14796 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },14795 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14797 .dst_constraints = .{.{ .scalar_int_is = .word }},
14798 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },14796 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14797 .dst_constraints = .{.{ .scalar_int_is = .word }},
14799 .patterns = &.{14798 .patterns = &.{
14800 .{ .src = .{ .to_mem, .none } },14799 .{ .src = .{ .to_mem, .none } },
14801 },14800 },
...@@ -14817,7 +14816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14817,7 +14816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14817 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14816 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14818 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },14817 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
14819 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14818 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14820 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14819 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14821 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },14820 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
14822 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14821 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14823 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14822 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
...@@ -14826,16 +14825,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14826,16 +14825,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14826 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14825 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14827 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14826 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14828 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14827 .{ .@"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), ._, ._ },
14830 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },14829 .{ ._, ._, .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), ._, ._ },
14832 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14831 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14834 } },14833 } },
14835 }, .{14834 }, .{
14836 .required_features = .{ .@"64bit", .lzcnt, null, null },14835 .required_features = .{ .@"64bit", .lzcnt, null, null },
14837 .dst_constraints = .{.{ .scalar_int_is = .word }},
14838 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },14836 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14837 .dst_constraints = .{.{ .scalar_int_is = .word }},
14839 .patterns = &.{14838 .patterns = &.{
14840 .{ .src = .{ .to_mem, .none } },14839 .{ .src = .{ .to_mem, .none } },
14841 },14840 },
...@@ -14857,7 +14856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14857,7 +14856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14857 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14856 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14858 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },14857 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
14859 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14858 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14860 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14859 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14861 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14860 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14862 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14861 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
14863 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14862 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
...@@ -14865,16 +14864,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14865,16 +14864,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14865 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14864 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14866 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14865 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14867 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14866 .{ .@"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), ._, ._ },
14869 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },14868 .{ ._, ._, .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), ._, ._ },
14871 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14870 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14872 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14873 } },14872 } },
14874 }, .{14873 }, .{
14875 .required_features = .{ .@"64bit", null, null, null },14874 .required_features = .{ .@"64bit", null, null, null },
14876 .dst_constraints = .{.{ .scalar_int_is = .word }},
14877 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },14875 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
14876 .dst_constraints = .{.{ .scalar_int_is = .word }},
14878 .patterns = &.{14877 .patterns = &.{
14879 .{ .src = .{ .to_mem, .none } },14878 .{ .src = .{ .to_mem, .none } },
14880 },14879 },
...@@ -14896,24 +14895,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14896,24 +14895,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14896 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14895 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14897 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },14896 .{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
14898 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14897 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14899 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14898 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14900 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },14899 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
14901 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },14900 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
14902 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14901 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
14903 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },14902 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
14904 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14903 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14905 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14904 .{ ._, ._, .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), ._, ._ },
14907 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },14906 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
14908 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },14907 .{ ._, ._, .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), ._, ._ },
14910 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14909 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14911 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14910 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14912 } },14911 } },
14913 }, .{14912 }, .{
14914 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },14913 .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
14915 .dst_constraints = .{.{ .scalar_int_is = .word }},
14916 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },14914 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14915 .dst_constraints = .{.{ .scalar_int_is = .word }},
14917 .patterns = &.{14916 .patterns = &.{
14918 .{ .src = .{ .to_mem, .none } },14917 .{ .src = .{ .to_mem, .none } },
14919 },14918 },
...@@ -14935,7 +14934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14935,7 +14934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14935 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14934 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14936 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },14935 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
14937 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14936 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14938 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14937 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14939 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },14938 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
14940 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14939 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14941 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14940 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
...@@ -14944,16 +14943,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14944,16 +14943,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14944 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14943 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14945 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14944 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14946 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14945 .{ .@"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), ._, ._ },
14948 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },14947 .{ ._, ._, .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), ._, ._ },
14950 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14949 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14950 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14952 } },14951 } },
14953 }, .{14952 }, .{
14954 .required_features = .{ .@"64bit", .lzcnt, null, null },14953 .required_features = .{ .@"64bit", .lzcnt, null, null },
14955 .dst_constraints = .{.{ .scalar_int_is = .word }},
14956 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },14954 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14955 .dst_constraints = .{.{ .scalar_int_is = .word }},
14957 .patterns = &.{14956 .patterns = &.{
14958 .{ .src = .{ .to_mem, .none } },14957 .{ .src = .{ .to_mem, .none } },
14959 },14958 },
...@@ -14975,7 +14974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14975,7 +14974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14975 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },14974 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
14976 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },14975 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
14977 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },14976 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
14978 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },14977 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
14979 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },14978 .{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
14980 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },14979 .{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
14981 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },14980 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
...@@ -14983,16 +14982,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14983,16 +14982,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14983 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },14982 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
14984 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },14983 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
14985 .{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },14984 .{ .@"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), ._, ._ },
14987 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },14986 .{ ._, ._, .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), ._, ._ },
14989 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },14988 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
14990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },14989 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14991 } },14990 } },
14992 }, .{14991 }, .{
14993 .required_features = .{ .@"64bit", null, null, null },14992 .required_features = .{ .@"64bit", null, null, null },
14994 .dst_constraints = .{.{ .scalar_int_is = .word }},
14995 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },14993 .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
14994 .dst_constraints = .{.{ .scalar_int_is = .word }},
14996 .patterns = &.{14995 .patterns = &.{
14997 .{ .src = .{ .to_mem, .none } },14996 .{ .src = .{ .to_mem, .none } },
14998 },14997 },
...@@ -15014,17 +15013,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15014,17 +15013,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15014 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },15013 .{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
15015 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },15014 .{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
15016 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },15015 .{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
15017 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },15016 .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
15018 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },15017 .{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
15019 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15018 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15020 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },15019 .{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
15021 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },15020 .{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
15022 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },15021 .{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
15023 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },15022 .{ ._, ._, .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), ._, ._ },
15025 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },15024 .{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
15026 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },15025 .{ ._, ._, .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), ._, ._ },
15028 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },15027 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
15029 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15030 } },15029 } },
...@@ -15524,7 +15523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15524,7 +15523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15524 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },15523 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
15525 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },15524 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
15526 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },15525 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
15527 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },15526 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
15528 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },15527 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
15529 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15530 },15529 },
...@@ -15536,7 +15535,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15536,7 +15535,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15536 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },15535 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
15537 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },15536 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
15538 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },15537 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
15539 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },15538 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
15540 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },15539 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
15541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15542 },15541 },
...@@ -15570,7 +15569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15570,7 +15569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15570 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },15569 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
15571 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },15570 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
15572 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },15571 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15573 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15572 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15574 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },15573 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
15575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15576 },15575 },
...@@ -15583,7 +15582,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15583,7 +15582,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15583 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },15582 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
15584 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },15583 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
15585 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },15584 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15586 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15585 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15587 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },15586 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
15588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15587 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15589 },15588 },
...@@ -15616,7 +15615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15616,7 +15615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15616 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },15615 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
15617 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },15616 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
15618 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },15617 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15619 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },15618 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
15620 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },15619 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
15621 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15622 },15621 },
...@@ -15628,7 +15627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15628,7 +15627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15628 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },15627 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
15629 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },15628 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
15630 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },15629 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15631 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },15630 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
15632 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },15631 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
15633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15632 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15634 },15633 },
...@@ -15663,7 +15662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15663,7 +15662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15663 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },15662 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
15664 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },15663 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
15665 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },15664 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15666 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },15665 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
15667 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },15666 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
15668 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15667 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15669 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },15668 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -15687,7 +15686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15687,7 +15686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15687 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },15686 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
15688 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },15687 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
15689 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },15688 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15690 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },15689 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
15691 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },15690 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
15692 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15691 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15693 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },15692 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -15730,7 +15729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15730,7 +15729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15730 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },15729 .{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
15731 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },15730 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
15732 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },15731 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15733 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15732 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15734 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },15733 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15734 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15736 },15735 },
...@@ -15742,7 +15741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15742,7 +15741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15742 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },15741 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
15743 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },15742 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
15744 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },15743 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15745 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15744 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15746 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },15745 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15746 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15748 },15747 },
...@@ -15776,7 +15775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15776,7 +15775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15776 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },15775 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
15777 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },15776 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
15778 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },15777 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15779 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },15778 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
15780 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },15779 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15781 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15782 },15781 },
...@@ -15789,7 +15788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15789,7 +15788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15789 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },15788 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
15790 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },15789 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
15791 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },15790 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
15792 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },15791 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
15793 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },15792 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15794 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15793 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15795 },15794 },
...@@ -15824,7 +15823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15824,7 +15823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15824 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },15823 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
15825 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },15824 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
15826 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },15825 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15827 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },15826 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
15828 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },15827 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
15829 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15828 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15830 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },15829 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -15848,7 +15847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15848,7 +15847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15848 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },15847 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
15849 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },15848 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
15850 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },15849 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15851 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },15850 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
15852 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },15851 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
15853 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15852 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15854 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },15853 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -15893,7 +15892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15893,7 +15892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15893 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },15892 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
15894 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },15893 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
15895 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },15894 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15896 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15895 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15897 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },15896 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
15898 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15897 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15899 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },15898 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -15917,7 +15916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15917,7 +15916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15917 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },15916 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
15918 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },15917 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
15919 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },15918 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
15920 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15919 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15921 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },15920 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
15922 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },15921 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
15923 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },15922 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -15960,7 +15959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15960,7 +15959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15960 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },15959 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
15961 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },15960 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
15962 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },15961 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15963 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15962 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15964 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },15963 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15965 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15966 },15965 },
...@@ -15972,7 +15971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -15972,7 +15971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
15972 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },15971 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
15973 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },15972 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
15974 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },15973 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
15975 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },15974 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
15976 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },15975 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
15977 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },15976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
15978 },15977 },
...@@ -16006,7 +16005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16006,7 +16005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16006 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },16005 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
16007 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },16006 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
16008 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },16007 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16009 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },16008 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
16010 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },16009 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
16011 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16012 },16011 },
...@@ -16019,7 +16018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16019,7 +16018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16019 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },16018 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
16020 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },16019 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
16021 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },16020 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16022 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },16021 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
16023 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },16022 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
16024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16023 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16025 },16024 },
...@@ -16054,7 +16053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16054,7 +16053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16054 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },16053 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
16055 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },16054 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
16056 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },16055 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16057 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },16056 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
16058 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16057 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16059 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16058 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16060 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },16059 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -16078,7 +16077,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16078,7 +16077,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16078 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },16077 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
16079 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },16078 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
16080 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },16079 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16081 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },16080 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
16082 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16081 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16083 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16082 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16084 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },16083 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -16123,7 +16122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16123,7 +16122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16123 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },16122 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
16124 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },16123 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
16125 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },16124 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16126 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },16125 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
16127 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16126 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16128 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16127 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16129 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },16128 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -16147,7 +16146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16147,7 +16146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16147 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },16146 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
16148 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },16147 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
16149 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },16148 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
16150 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },16149 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
16151 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16150 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16152 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16151 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16153 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },16152 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -16190,7 +16189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16190,7 +16189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16190 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },16189 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
16191 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },16190 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
16192 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },16191 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16193 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },16192 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
16194 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },16193 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
16195 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16196 },16195 },
...@@ -16202,7 +16201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16202,7 +16201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16202 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },16201 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
16203 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },16202 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
16204 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },16203 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
16205 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },16204 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
16206 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },16205 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
16207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16208 },16207 },
...@@ -16239,7 +16238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16239,7 +16238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16239 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },16238 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
16240 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },16239 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
16241 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },16240 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16242 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },16241 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
16243 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16242 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16244 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16243 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16245 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },16244 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
...@@ -16265,7 +16264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16265,7 +16264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16265 .{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },16264 .{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },
16266 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },16265 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
16267 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },16266 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16268 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },16267 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
16269 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16268 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16270 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16269 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16271 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },16270 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
...@@ -16313,7 +16312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16313,7 +16312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16313 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },16312 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
16314 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },16313 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
16315 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },16314 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16316 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },16315 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
16317 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16316 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16318 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16317 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16319 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },16318 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
...@@ -16340,7 +16339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16340,7 +16339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16340 .{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },16339 .{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },
16341 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },16340 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
16342 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },16341 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
16343 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },16342 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
16344 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },16343 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
16345 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },16344 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
16346 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },16345 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
...@@ -16356,8 +16355,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16356,8 +16355,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16356 },16355 },
16357 } },16356 } },
16358 }, .{16357 }, .{
16359 .dst_constraints = .{.{ .bool_vec = .byte }},
16360 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },16358 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
16359 .dst_constraints = .{.{ .bool_vec = .byte }},
16361 .patterns = &.{16360 .patterns = &.{
16362 .{ .src = .{ .to_mem, .to_mem } },16361 .{ .src = .{ .to_mem, .to_mem } },
16363 },16362 },
...@@ -16388,8 +16387,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16388,8 +16387,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16388 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16389 } },16388 } },
16390 }, .{16389 }, .{
16391 .dst_constraints = .{.{ .bool_vec = .byte }},
16392 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },16390 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
16391 .dst_constraints = .{.{ .bool_vec = .byte }},
16393 .patterns = &.{16392 .patterns = &.{
16394 .{ .src = .{ .to_mem, .to_mem } },16393 .{ .src = .{ .to_mem, .to_mem } },
16395 },16394 },
...@@ -16420,8 +16419,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16420,8 +16419,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16421 } },16420 } },
16422 }, .{16421 }, .{
16423 .dst_constraints = .{.{ .bool_vec = .byte }},
16424 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },16422 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
16423 .dst_constraints = .{.{ .bool_vec = .byte }},
16425 .patterns = &.{16424 .patterns = &.{
16426 .{ .src = .{ .to_mem, .to_mem } },16425 .{ .src = .{ .to_mem, .to_mem } },
16427 },16426 },
...@@ -16453,8 +16452,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16453,8 +16452,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16453 } },16452 } },
16454 }, .{16453 }, .{
16455 .required_features = .{ .@"64bit", null, null, null },16454 .required_features = .{ .@"64bit", null, null, null },
16456 .dst_constraints = .{.{ .bool_vec = .byte }},
16457 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },16455 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
16456 .dst_constraints = .{.{ .bool_vec = .byte }},
16458 .patterns = &.{16457 .patterns = &.{
16459 .{ .src = .{ .to_mem, .to_mem } },16458 .{ .src = .{ .to_mem, .to_mem } },
16460 },16459 },
...@@ -16485,8 +16484,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16485,8 +16484,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16486 } },16485 } },
16487 }, .{16486 }, .{
16488 .dst_constraints = .{.{ .bool_vec = .byte }},
16489 .src_constraints = .{ .any_scalar_int, .any_scalar_int },16487 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
16488 .dst_constraints = .{.{ .bool_vec = .byte }},
16490 .patterns = &.{16489 .patterns = &.{
16491 .{ .src = .{ .to_mem, .to_mem } },16490 .{ .src = .{ .to_mem, .to_mem } },
16492 },16491 },
...@@ -16524,8 +16523,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16524,8 +16523,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16524 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },16523 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
16525 } },16524 } },
16526 }, .{16525 }, .{
16527 .dst_constraints = .{.{ .bool_vec = .dword }},
16528 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },16526 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
16527 .dst_constraints = .{.{ .bool_vec = .dword }},
16529 .patterns = &.{16528 .patterns = &.{
16530 .{ .src = .{ .to_mem, .to_mem } },16529 .{ .src = .{ .to_mem, .to_mem } },
16531 },16530 },
...@@ -16557,8 +16556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16557,8 +16556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16557 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16556 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16558 } },16557 } },
16559 }, .{16558 }, .{
16560 .dst_constraints = .{.{ .bool_vec = .dword }},
16561 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },16559 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
16560 .dst_constraints = .{.{ .bool_vec = .dword }},
16562 .patterns = &.{16561 .patterns = &.{
16563 .{ .src = .{ .to_mem, .to_mem } },16562 .{ .src = .{ .to_mem, .to_mem } },
16564 },16563 },
...@@ -16590,8 +16589,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16590,8 +16589,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16590 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16591 } },16590 } },
16592 }, .{16591 }, .{
16593 .dst_constraints = .{.{ .bool_vec = .dword }},
16594 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },16592 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
16593 .dst_constraints = .{.{ .bool_vec = .dword }},
16595 .patterns = &.{16594 .patterns = &.{
16596 .{ .src = .{ .to_mem, .to_mem } },16595 .{ .src = .{ .to_mem, .to_mem } },
16597 },16596 },
...@@ -16624,8 +16623,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16624,8 +16623,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16624 } },16623 } },
16625 }, .{16624 }, .{
16626 .required_features = .{ .@"64bit", null, null, null },16625 .required_features = .{ .@"64bit", null, null, null },
16627 .dst_constraints = .{.{ .bool_vec = .dword }},
16628 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },16626 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
16627 .dst_constraints = .{.{ .bool_vec = .dword }},
16629 .patterns = &.{16628 .patterns = &.{
16630 .{ .src = .{ .to_mem, .to_mem } },16629 .{ .src = .{ .to_mem, .to_mem } },
16631 },16630 },
...@@ -16657,8 +16656,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16657,8 +16656,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16657 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },16656 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
16658 } },16657 } },
16659 }, .{16658 }, .{
16660 .dst_constraints = .{.{ .bool_vec = .dword }},
16661 .src_constraints = .{ .any_scalar_int, .any_scalar_int },16659 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
16660 .dst_constraints = .{.{ .bool_vec = .dword }},
16662 .patterns = &.{16661 .patterns = &.{
16663 .{ .src = .{ .to_mem, .to_mem } },16662 .{ .src = .{ .to_mem, .to_mem } },
16664 },16663 },
...@@ -16698,8 +16697,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16698,8 +16697,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16698 } },16697 } },
16699 }, .{16698 }, .{
16700 .required_features = .{ .@"64bit", null, null, null },16699 .required_features = .{ .@"64bit", null, null, null },
16701 .dst_constraints = .{.{ .bool_vec = .qword }},
16702 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },16700 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
16701 .dst_constraints = .{.{ .bool_vec = .qword }},
16703 .patterns = &.{16702 .patterns = &.{
16704 .{ .src = .{ .to_mem, .to_mem } },16703 .{ .src = .{ .to_mem, .to_mem } },
16705 },16704 },
...@@ -16732,8 +16731,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16732,8 +16731,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16732 } },16731 } },
16733 }, .{16732 }, .{
16734 .required_features = .{ .@"64bit", null, null, null },16733 .required_features = .{ .@"64bit", null, null, null },
16735 .dst_constraints = .{.{ .bool_vec = .qword }},
16736 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },16734 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
16735 .dst_constraints = .{.{ .bool_vec = .qword }},
16737 .patterns = &.{16736 .patterns = &.{
16738 .{ .src = .{ .to_mem, .to_mem } },16737 .{ .src = .{ .to_mem, .to_mem } },
16739 },16738 },
...@@ -16765,8 +16764,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16765,8 +16764,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16765 } },16764 } },
16766 }, .{16765 }, .{
16767 .required_features = .{ .@"64bit", null, null, null },16766 .required_features = .{ .@"64bit", null, null, null },
16768 .dst_constraints = .{.{ .bool_vec = .qword }},
16769 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },16767 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
16768 .dst_constraints = .{.{ .bool_vec = .qword }},
16770 .patterns = &.{16769 .patterns = &.{
16771 .{ .src = .{ .to_mem, .to_mem } },16770 .{ .src = .{ .to_mem, .to_mem } },
16772 },16771 },
...@@ -16799,8 +16798,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16799,8 +16798,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16799 } },16798 } },
16800 }, .{16799 }, .{
16801 .required_features = .{ .@"64bit", null, null, null },16800 .required_features = .{ .@"64bit", null, null, null },
16802 .dst_constraints = .{.{ .bool_vec = .qword }},
16803 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },16801 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
16802 .dst_constraints = .{.{ .bool_vec = .qword }},
16804 .patterns = &.{16803 .patterns = &.{
16805 .{ .src = .{ .to_mem, .to_mem } },16804 .{ .src = .{ .to_mem, .to_mem } },
16806 },16805 },
...@@ -16833,8 +16832,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -16833,8 +16832,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
16833 } },16832 } },
16834 }, .{16833 }, .{
16835 .required_features = .{ .@"64bit", null, null, null },16834 .required_features = .{ .@"64bit", null, null, null },
16836 .dst_constraints = .{.{ .bool_vec = .qword }},
16837 .src_constraints = .{ .any_scalar_int, .any_scalar_int },16835 .src_constraints = .{ .any_scalar_int, .any_scalar_int },
16836 .dst_constraints = .{.{ .bool_vec = .qword }},
16838 .patterns = &.{16837 .patterns = &.{
16839 .{ .src = .{ .to_mem, .to_mem } },16838 .{ .src = .{ .to_mem, .to_mem } },
16840 },16839 },
...@@ -17281,8 +17280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17281,8 +17280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17281 .ne => .neq,17280 .ne => .neq,
17282 }) },17281 }) },
17283 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },17282 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
17284 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },17283 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
17285 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },17284 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
17286 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },17285 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
17287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },17286 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
17288 } },17287 } },
...@@ -17319,18 +17318,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17319,18 +17318,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17319 .ne => .neq,17318 .ne => .neq,
17320 }) },17319 }) },
17321 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },17320 .{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
17322 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },17321 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
17323 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },17322 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
17324 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },17323 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
17325 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },17324 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
17326 } },17325 } },
17327 }, .{17326 }, .{
17328 .required_features = .{ .avx, .slow_incdec, null, null },17327 .required_features = .{ .avx, .slow_incdec, null, null },
17329 .dst_constraints = .{.{ .bool_vec = .dword }},
17330 .src_constraints = .{17328 .src_constraints = .{
17331 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17329 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17332 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17330 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17333 },17331 },
17332 .dst_constraints = .{.{ .bool_vec = .dword }},
17334 .patterns = &.{17333 .patterns = &.{
17335 .{ .src = .{ .to_mem, .to_mem } },17334 .{ .src = .{ .to_mem, .to_mem } },
17336 },17335 },
...@@ -17371,11 +17370,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17371,11 +17370,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17371 } },17370 } },
17372 }, .{17371 }, .{
17373 .required_features = .{ .avx, null, null, null },17372 .required_features = .{ .avx, null, null, null },
17374 .dst_constraints = .{.{ .bool_vec = .dword }},
17375 .src_constraints = .{17373 .src_constraints = .{
17376 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17374 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17377 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17375 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17378 },17376 },
17377 .dst_constraints = .{.{ .bool_vec = .dword }},
17379 .patterns = &.{17378 .patterns = &.{
17380 .{ .src = .{ .to_mem, .to_mem } },17379 .{ .src = .{ .to_mem, .to_mem } },
17381 },17380 },
...@@ -17416,11 +17415,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17416,11 +17415,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17416 } },17415 } },
17417 }, .{17416 }, .{
17418 .required_features = .{ .sse2, .slow_incdec, null, null },17417 .required_features = .{ .sse2, .slow_incdec, null, null },
17419 .dst_constraints = .{.{ .bool_vec = .dword }},
17420 .src_constraints = .{17418 .src_constraints = .{
17421 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17419 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17422 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17420 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17423 },17421 },
17422 .dst_constraints = .{.{ .bool_vec = .dword }},
17424 .patterns = &.{17423 .patterns = &.{
17425 .{ .src = .{ .to_mem, .to_mem } },17424 .{ .src = .{ .to_mem, .to_mem } },
17426 },17425 },
...@@ -17462,11 +17461,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17462,11 +17461,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17462 } },17461 } },
17463 }, .{17462 }, .{
17464 .required_features = .{ .sse2, null, null, null },17463 .required_features = .{ .sse2, null, null, null },
17465 .dst_constraints = .{.{ .bool_vec = .dword }},
17466 .src_constraints = .{17464 .src_constraints = .{
17467 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17465 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17468 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17466 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17469 },17467 },
17468 .dst_constraints = .{.{ .bool_vec = .dword }},
17470 .patterns = &.{17469 .patterns = &.{
17471 .{ .src = .{ .to_mem, .to_mem } },17470 .{ .src = .{ .to_mem, .to_mem } },
17472 },17471 },
...@@ -17508,11 +17507,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17508,11 +17507,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17508 } },17507 } },
17509 }, .{17508 }, .{
17510 .required_features = .{ .sse, .slow_incdec, null, null },17509 .required_features = .{ .sse, .slow_incdec, null, null },
17511 .dst_constraints = .{.{ .bool_vec = .dword }},
17512 .src_constraints = .{17510 .src_constraints = .{
17513 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17511 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17514 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17512 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17515 },17513 },
17514 .dst_constraints = .{.{ .bool_vec = .dword }},
17516 .patterns = &.{17515 .patterns = &.{
17517 .{ .src = .{ .to_mem, .to_mem } },17516 .{ .src = .{ .to_mem, .to_mem } },
17518 },17517 },
...@@ -17556,11 +17555,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17556,11 +17555,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17556 } },17555 } },
17557 }, .{17556 }, .{
17558 .required_features = .{ .sse, null, null, null },17557 .required_features = .{ .sse, null, null, null },
17559 .dst_constraints = .{.{ .bool_vec = .dword }},
17560 .src_constraints = .{17558 .src_constraints = .{
17561 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17559 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17562 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },17560 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
17563 },17561 },
17562 .dst_constraints = .{.{ .bool_vec = .dword }},
17564 .patterns = &.{17563 .patterns = &.{
17565 .{ .src = .{ .to_mem, .to_mem } },17564 .{ .src = .{ .to_mem, .to_mem } },
17566 },17565 },
...@@ -17642,7 +17641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17642,7 +17641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17642 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },17641 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
17643 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },17642 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
17644 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },17643 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
17645 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },17644 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
17646 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },17645 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
17647 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },17646 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
17648 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },17647 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
...@@ -17751,7 +17750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17751,7 +17750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17751 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },17750 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
17752 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },17751 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
17753 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },17752 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
17754 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },17753 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
17755 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },17754 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
17756 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },17755 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
17757 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },17756 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
...@@ -17863,7 +17862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17863,7 +17862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17863 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },17862 .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
17864 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },17863 .{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
17865 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },17864 .{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
17866 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },17865 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
17867 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },17866 .{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
17868 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },17867 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
17869 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },17868 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
...@@ -17966,8 +17965,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -17966,8 +17965,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
17966 .ne => .neq,17965 .ne => .neq,
17967 }) },17966 }) },
17968 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },17967 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
17969 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },17968 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
17970 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },17969 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
17971 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },17970 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
17972 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },17971 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
17973 } },17972 } },
...@@ -18003,7 +18002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18003,7 +18002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18003 .ne => .neq,18002 .ne => .neq,
18004 }) },18003 }) },
18005 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },18004 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
18006 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },18005 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18007 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },18006 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
18008 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },18007 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
18009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18008 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
...@@ -18048,8 +18047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18048,8 +18047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18048 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },18047 .{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
18049 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },18048 .{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
18050 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },18049 .{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
18051 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },18050 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
18052 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },18051 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
18053 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },18052 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
18054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18053 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18055 } },18054 } },
...@@ -18094,8 +18093,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18094,8 +18093,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18094 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },18093 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
18095 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },18094 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
18096 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },18095 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
18097 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },18096 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18098 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },18097 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
18099 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },18098 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
18100 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18101 } },18100 } },
...@@ -18134,8 +18133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18134,8 +18133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18134 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },18133 .{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
18135 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },18134 .{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
18136 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },18135 .{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
18137 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },18136 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18138 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },18137 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
18139 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },18138 .{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
18140 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {18139 .{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
18141 else => unreachable,18140 else => unreachable,
...@@ -18145,7 +18144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18145,7 +18144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18145 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },18144 .{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
18146 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },18145 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
18147 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18146 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18148 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },18147 .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
18149 } },18148 } },
18150 }, .{18149 }, .{
18151 .required_features = .{ .avx, .slow_incdec, null, null },18150 .required_features = .{ .avx, .slow_incdec, null, null },
...@@ -18188,8 +18187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18188,8 +18187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18188 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },18187 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
18189 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },18188 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
18190 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },18189 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
18191 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },18190 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
18192 .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },18191 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
18193 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },18192 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
18194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18193 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18195 } },18194 } },
...@@ -18234,7 +18233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18234,7 +18233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18234 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },18233 .{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
18235 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },18234 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
18236 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },18235 .{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
18237 .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },18236 .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
18238 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },18237 .{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
18239 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },18238 .{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
18240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18239 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
...@@ -18274,7 +18273,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18274,7 +18273,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18274 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },18273 .{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
18275 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },18274 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
18276 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },18275 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
18277 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },18276 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
18278 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },18277 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
18279 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },18278 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
18280 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },18279 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
...@@ -18323,7 +18322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18323,7 +18322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18323 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },18322 .{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
18324 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },18323 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
18325 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },18324 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
18326 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },18325 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
18327 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },18326 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
18328 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },18327 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
18329 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },18328 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
...@@ -18382,7 +18381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18382,7 +18381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18382 }, .tmp3b, .tmp4b, ._, ._ },18381 }, .tmp3b, .tmp4b, ._, ._ },
18383 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },18382 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
18384 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },18383 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
18385 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },18384 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
18386 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },18385 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
18387 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },18386 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
18388 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },18387 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -18550,7 +18549,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18550,7 +18549,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18550 }, .tmp3b, .tmp4b, ._, ._ },18549 }, .tmp3b, .tmp4b, ._, ._ },
18551 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },18550 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
18552 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },18551 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
18553 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },18552 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
18554 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },18553 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
18555 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },18554 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
18556 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },18555 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
...@@ -18675,11 +18674,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18675,11 +18674,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18675 } },18674 } },
18676 }, .{18675 }, .{
18677 .required_features = .{ .avx, .slow_incdec, null, null },18676 .required_features = .{ .avx, .slow_incdec, null, null },
18678 .dst_constraints = .{.{ .bool_vec = .dword }},
18679 .src_constraints = .{18677 .src_constraints = .{
18680 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18678 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18681 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18679 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18682 },18680 },
18681 .dst_constraints = .{.{ .bool_vec = .dword }},
18683 .patterns = &.{18682 .patterns = &.{
18684 .{ .src = .{ .to_mem, .to_mem } },18683 .{ .src = .{ .to_mem, .to_mem } },
18685 },18684 },
...@@ -18714,17 +18713,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18714,17 +18713,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18714 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },18713 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
18715 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },18714 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
18716 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },18715 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
18717 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },18716 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
18718 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },18717 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
18719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18718 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18720 } },18719 } },
18721 }, .{18720 }, .{
18722 .required_features = .{ .avx, .slow_incdec, null, null },18721 .required_features = .{ .avx, .slow_incdec, null, null },
18723 .dst_constraints = .{.{ .bool_vec = .dword }},
18724 .src_constraints = .{18722 .src_constraints = .{
18725 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18723 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18726 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18724 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18727 },18725 },
18726 .dst_constraints = .{.{ .bool_vec = .dword }},
18728 .patterns = &.{18727 .patterns = &.{
18729 .{ .src = .{ .to_mem, .to_mem } },18728 .{ .src = .{ .to_mem, .to_mem } },
18730 },18729 },
...@@ -18765,11 +18764,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18765,11 +18764,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18765 } },18764 } },
18766 }, .{18765 }, .{
18767 .required_features = .{ .sse2, .slow_incdec, null, null },18766 .required_features = .{ .sse2, .slow_incdec, null, null },
18768 .dst_constraints = .{.{ .bool_vec = .dword }},
18769 .src_constraints = .{18767 .src_constraints = .{
18770 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18768 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18771 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18769 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18772 },18770 },
18771 .dst_constraints = .{.{ .bool_vec = .dword }},
18773 .patterns = &.{18772 .patterns = &.{
18774 .{ .src = .{ .to_mem, .to_mem } },18773 .{ .src = .{ .to_mem, .to_mem } },
18775 },18774 },
...@@ -18804,17 +18803,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18804,17 +18803,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18804 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },18803 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
18805 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },18804 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
18806 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },18805 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
18807 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },18806 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
18808 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },18807 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
18809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18810 } },18809 } },
18811 }, .{18810 }, .{
18812 .required_features = .{ .sse2, .slow_incdec, null, null },18811 .required_features = .{ .sse2, .slow_incdec, null, null },
18813 .dst_constraints = .{.{ .bool_vec = .dword }},
18814 .src_constraints = .{18812 .src_constraints = .{
18815 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18813 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18816 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18814 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18817 },18815 },
18816 .dst_constraints = .{.{ .bool_vec = .dword }},
18818 .patterns = &.{18817 .patterns = &.{
18819 .{ .src = .{ .to_mem, .to_mem } },18818 .{ .src = .{ .to_mem, .to_mem } },
18820 },18819 },
...@@ -18855,11 +18854,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18855,11 +18854,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18855 } },18854 } },
18856 }, .{18855 }, .{
18857 .required_features = .{ .sse, .slow_incdec, null, null },18856 .required_features = .{ .sse, .slow_incdec, null, null },
18858 .dst_constraints = .{.{ .bool_vec = .dword }},
18859 .src_constraints = .{18857 .src_constraints = .{
18860 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18858 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18861 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18859 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18862 },18860 },
18861 .dst_constraints = .{.{ .bool_vec = .dword }},
18863 .patterns = &.{18862 .patterns = &.{
18864 .{ .src = .{ .to_mem, .to_mem } },18863 .{ .src = .{ .to_mem, .to_mem } },
18865 },18864 },
...@@ -18894,17 +18893,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18894,17 +18893,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18894 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },18893 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
18895 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },18894 .{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
18896 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },18895 .{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
18897 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },18896 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
18898 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },18897 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
18899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },18898 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
18900 } },18899 } },
18901 }, .{18900 }, .{
18902 .required_features = .{ .sse2, .slow_incdec, null, null },18901 .required_features = .{ .sse2, .slow_incdec, null, null },
18903 .dst_constraints = .{.{ .bool_vec = .dword }},
18904 .src_constraints = .{18902 .src_constraints = .{
18905 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18903 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18906 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },18904 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
18907 },18905 },
18906 .dst_constraints = .{.{ .bool_vec = .dword }},
18908 .patterns = &.{18907 .patterns = &.{
18909 .{ .src = .{ .to_mem, .to_mem } },18908 .{ .src = .{ .to_mem, .to_mem } },
18910 },18909 },
...@@ -18983,7 +18982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -18983,7 +18982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
18983 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },18982 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
18984 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },18983 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
18985 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },18984 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
18986 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },18985 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
18987 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },18986 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
18988 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },18987 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
18989 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },18988 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
...@@ -19091,7 +19090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19091,7 +19090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19091 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },19090 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
19092 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },19091 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
19093 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },19092 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
19094 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },19093 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
19095 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },19094 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
19096 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },19095 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
19097 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },19096 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
...@@ -19199,7 +19198,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -19199,7 +19198,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
19199 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },19198 .{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
19200 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },19199 .{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
19201 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },19200 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
19202 .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },19201 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
19203 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },19202 .{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
19204 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },19203 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
19205 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },19204 .{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
...@@ -20245,10 +20244,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20245,10 +20244,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20245 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },20244 .{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
20246 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },20245 .{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
20247 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },20246 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
20248 .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ },20247 .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
20249 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },20248 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
20250 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },20249 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
20251 .{ ._, ._, .cmp, .tmp0d, .sa(.none, .add_src0_unaligned_size), ._, ._ },20250 .{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
20252 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },20251 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
20253 } },20252 } },
20254 }, .{20253 }, .{
...@@ -20271,7 +20270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20271,7 +20270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20271 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20270 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20272 .each = .{ .once = &.{20271 .each = .{ .once = &.{
20273 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20272 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20274 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },20273 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
20275 } },20274 } },
20276 }, .{20275 }, .{
20277 .required_features = .{ .sse, null, null, null },20276 .required_features = .{ .sse, null, null, null },
...@@ -20293,7 +20292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20293,7 +20292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20293 .dst_temps = .{.{ .ref = .src0 }},20292 .dst_temps = .{.{ .ref = .src0 }},
20294 .each = .{ .once = &.{20293 .each = .{ .once = &.{
20295 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20294 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20296 .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },20295 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
20297 } },20296 } },
20298 }, .{20297 }, .{
20299 .required_features = .{ .avx, null, null, null },20298 .required_features = .{ .avx, null, null, null },
...@@ -20315,7 +20314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20315,7 +20314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20315 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20314 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20316 .each = .{ .once = &.{20315 .each = .{ .once = &.{
20317 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20316 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20318 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },20317 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
20319 } },20318 } },
20320 }, .{20319 }, .{
20321 .required_features = .{ .avx, null, null, null },20320 .required_features = .{ .avx, null, null, null },
...@@ -20337,7 +20336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20337,7 +20336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20337 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20336 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20338 .each = .{ .once = &.{20337 .each = .{ .once = &.{
20339 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20338 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20340 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },20339 .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
20341 } },20340 } },
20342 }, .{20341 }, .{
20343 .required_features = .{ .sse2, null, null, null },20342 .required_features = .{ .sse2, null, null, null },
...@@ -20359,7 +20358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20359,7 +20358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20359 .dst_temps = .{.{ .ref = .src0 }},20358 .dst_temps = .{.{ .ref = .src0 }},
20360 .each = .{ .once = &.{20359 .each = .{ .once = &.{
20361 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20360 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20362 .{ ._, ._pd, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },20361 .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
20363 } },20362 } },
20364 }, .{20363 }, .{
20365 .required_features = .{ .avx, null, null, null },20364 .required_features = .{ .avx, null, null, null },
...@@ -20381,7 +20380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20381,7 +20380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20381 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20380 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20382 .each = .{ .once = &.{20381 .each = .{ .once = &.{
20383 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20382 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20384 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },20383 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
20385 } },20384 } },
20386 }, .{20385 }, .{
20387 .required_features = .{ .x87, null, null, null },20386 .required_features = .{ .x87, null, null, null },
...@@ -20427,7 +20426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20427,7 +20426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20427 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20426 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20428 .each = .{ .once = &.{20427 .each = .{ .once = &.{
20429 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20428 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20430 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },20429 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
20431 } },20430 } },
20432 }, .{20431 }, .{
20433 .required_features = .{ .sse2, null, null, null },20432 .required_features = .{ .sse2, null, null, null },
...@@ -20449,7 +20448,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20449,7 +20448,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20449 .dst_temps = .{.{ .ref = .src0 }},20448 .dst_temps = .{.{ .ref = .src0 }},
20450 .each = .{ .once = &.{20449 .each = .{ .once = &.{
20451 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20450 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20452 .{ ._, .p_, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },20451 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
20453 } },20452 } },
20454 }, .{20453 }, .{
20455 .required_features = .{ .sse, null, null, null },20454 .required_features = .{ .sse, null, null, null },
...@@ -20471,7 +20470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20471,7 +20470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20471 .dst_temps = .{.{ .ref = .src0 }},20470 .dst_temps = .{.{ .ref = .src0 }},
20472 .each = .{ .once = &.{20471 .each = .{ .once = &.{
20473 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20472 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20474 .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },20473 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
20475 } },20474 } },
20476 }, .{20475 }, .{
20477 .required_features = .{ .avx2, null, null, null },20476 .required_features = .{ .avx2, null, null, null },
...@@ -20493,7 +20492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20493,7 +20492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20493 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20492 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20494 .each = .{ .once = &.{20493 .each = .{ .once = &.{
20495 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20494 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20496 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },20495 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
20497 } },20496 } },
20498 }, .{20497 }, .{
20499 .required_features = .{ .avx, null, null, null },20498 .required_features = .{ .avx, null, null, null },
...@@ -20515,7 +20514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20515,7 +20514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20515 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},20514 .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
20516 .each = .{ .once = &.{20515 .each = .{ .once = &.{
20517 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20516 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20518 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },20517 .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
20519 } },20518 } },
20520 }, .{20519 }, .{
20521 .required_features = .{ .avx, null, null, null },20520 .required_features = .{ .avx, null, null, null },
...@@ -20537,7 +20536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20537,7 +20536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20537 .dst_temps = .{.mem},20536 .dst_temps = .{.mem},
20538 .each = .{ .once = &.{20537 .each = .{ .once = &.{
20539 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20538 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20540 .{ ._, .v_ps, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },20539 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20540 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20542 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },20541 .{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20543 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },20542 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
...@@ -20564,7 +20563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20564,7 +20563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20564 .dst_temps = .{.mem},20563 .dst_temps = .{.mem},
20565 .each = .{ .once = &.{20564 .each = .{ .once = &.{
20566 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20565 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20567 .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },20566 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20569 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },20568 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20570 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },20569 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
...@@ -20592,7 +20591,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20592,7 +20591,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20592 .dst_temps = .{.mem},20591 .dst_temps = .{.mem},
20593 .each = .{ .once = &.{20592 .each = .{ .once = &.{
20594 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20593 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20595 .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },20594 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20597 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },20596 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20598 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },20597 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
...@@ -20619,7 +20618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20619,7 +20618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20619 .dst_temps = .{.mem},20618 .dst_temps = .{.mem},
20620 .each = .{ .once = &.{20619 .each = .{ .once = &.{
20621 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20620 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20622 .{ ._, ._pd, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },20621 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20623 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20624 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },20623 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
20625 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },20624 .{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
...@@ -20647,7 +20646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20647,7 +20646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20647 .dst_temps = .{.mem},20646 .dst_temps = .{.mem},
20648 .each = .{ .once = &.{20647 .each = .{ .once = &.{
20649 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20648 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20650 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.yword, .tmp0), ._, ._ },20649 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
20651 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20652 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },20651 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20653 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },20652 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
...@@ -20674,7 +20673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20674,7 +20673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20674 .dst_temps = .{.mem},20673 .dst_temps = .{.mem},
20675 .each = .{ .once = &.{20674 .each = .{ .once = &.{
20676 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20675 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20677 .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },20676 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
20678 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20679 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },20678 .{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
20680 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },20679 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
...@@ -20701,7 +20700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20701,7 +20700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20701 .dst_temps = .{.mem},20700 .dst_temps = .{.mem},
20702 .each = .{ .once = &.{20701 .each = .{ .once = &.{
20703 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20702 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20704 .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },20703 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
20705 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20706 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },20705 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
20707 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },20706 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
...@@ -20729,7 +20728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -20729,7 +20728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
20729 .dst_temps = .{.mem},20728 .dst_temps = .{.mem},
20730 .each = .{ .once = &.{20729 .each = .{ .once = &.{
20731 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },20730 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
20732 .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },20731 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
20733 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },20732 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
20734 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },20733 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
20735 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },20734 .{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
...@@ -21665,242 +21664,7197 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -21665,242 +21664,7197 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
21665 },21664 },
21666 }21665 }
21667 },21666 },
21668 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,21667 .int => res[0] = ops[0].cmpInts(cmp_op, &ops[1], cg) catch |err| break :err err,
21669 }) catch |err| switch (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) {
21670 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{28848 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
21671 @tagName(air_tag),28849 @tagName(air_tag),
21672 cg.typeOf(bin_op.lhs).fmt(pt),28850 dst_ty.fmt(pt),
28851 src_ty.fmt(pt),
21673 ops[0].tracking(cg),28852 ops[0].tracking(cg),
21674 ops[1].tracking(cg),
21675 }),28853 }),
21676 else => |e| return e,28854 else => |e| return e,
21677 };28855 };
21678 if (opt_info) |*oi| {28856 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
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);
21902 },28857 },
21903 .unreach => {},
21904 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {28858 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
21905 const ty_op = air_datas[@intFromEnum(inst)].ty_op;28859 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
21906 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});28860 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
...@@ -22080,7 +29034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22080,7 +29034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22080 },29034 },
22081 .dst_temps = .{.{ .rc = .general_purpose }},29035 .dst_temps = .{.{ .rc = .general_purpose }},
22082 .each = .{ .once = &.{29036 .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), ._, ._ },
22084 } },29038 } },
22085 }, .{29039 }, .{
22086 .dst_constraints = .{.{ .int = .byte }},29040 .dst_constraints = .{.{ .int = .byte }},
...@@ -22089,7 +29043,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22089,7 +29043,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22089 },29043 },
22090 .dst_temps = .{.{ .rc = .general_purpose }},29044 .dst_temps = .{.{ .rc = .general_purpose }},
22091 .each = .{ .once = &.{29045 .each = .{ .once = &.{
22092 .{ ._, ._, .movzx, .dst0d, .leai(.byte, .src0, .src1), ._, ._ },29046 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
22093 } },29047 } },
22094 }, .{29048 }, .{
22095 .dst_constraints = .{.{ .int = .word }},29049 .dst_constraints = .{.{ .int = .word }},
...@@ -22098,7 +29052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22098,7 +29052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22098 },29052 },
22099 .dst_temps = .{.{ .rc = .general_purpose }},29053 .dst_temps = .{.{ .rc = .general_purpose }},
22100 .each = .{ .once = &.{29054 .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), ._, ._ },
22102 } },29056 } },
22103 }, .{29057 }, .{
22104 .dst_constraints = .{.{ .int = .word }},29058 .dst_constraints = .{.{ .int = .word }},
...@@ -22107,7 +29061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22107,7 +29061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22107 },29061 },
22108 .dst_temps = .{.{ .rc = .general_purpose }},29062 .dst_temps = .{.{ .rc = .general_purpose }},
22109 .each = .{ .once = &.{29063 .each = .{ .once = &.{
22110 .{ ._, ._, .movzx, .dst0d, .leasi(.word, .src0, .@"2", .src1), ._, ._ },29064 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
22111 } },29065 } },
22112 }, .{29066 }, .{
22113 .dst_constraints = .{.{ .int = .dword }},29067 .dst_constraints = .{.{ .int = .dword }},
...@@ -22116,7 +29070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22116,7 +29070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22116 },29070 },
22117 .dst_temps = .{.{ .rc = .general_purpose }},29071 .dst_temps = .{.{ .rc = .general_purpose }},
22118 .each = .{ .once = &.{29072 .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), ._, ._ },
22120 } },29074 } },
22121 }, .{29075 }, .{
22122 .dst_constraints = .{.{ .int = .dword }},29076 .dst_constraints = .{.{ .int = .dword }},
...@@ -22125,7 +29079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22125,7 +29079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22125 },29079 },
22126 .dst_temps = .{.{ .rc = .general_purpose }},29080 .dst_temps = .{.{ .rc = .general_purpose }},
22127 .each = .{ .once = &.{29081 .each = .{ .once = &.{
22128 .{ ._, ._, .mov, .dst0d, .leasi(.dword, .src0, .@"4", .src1), ._, ._ },29082 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
22129 } },29083 } },
22130 }, .{29084 }, .{
22131 .dst_constraints = .{.{ .int = .qword }},29085 .dst_constraints = .{.{ .int = .qword }},
...@@ -22134,7 +29088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22134,7 +29088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22134 },29088 },
22135 .dst_temps = .{.{ .rc = .general_purpose }},29089 .dst_temps = .{.{ .rc = .general_purpose }},
22136 .each = .{ .once = &.{29090 .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), ._, ._ },
22138 } },29092 } },
22139 }, .{29093 }, .{
22140 .required_features = .{ .@"64bit", null, null, null },29094 .required_features = .{ .@"64bit", null, null, null },
...@@ -22144,7 +29098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -22144,7 +29098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
22144 },29098 },
22145 .dst_temps = .{.{ .rc = .general_purpose }},29099 .dst_temps = .{.{ .rc = .general_purpose }},
22146 .each = .{ .once = &.{29100 .each = .{ .once = &.{
22147 .{ ._, ._, .mov, .dst0q, .leasi(.qword, .src0, .@"8", .src1), ._, ._ },29101 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
22148 } },29102 } },
22149 } }) catch |err| switch (err) {29103 } }) catch |err| switch (err) {
22150 error.SelectFailed => {29104 error.SelectFailed => {
...@@ -23562,19 +30516,6 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -23562,19 +30516,6 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
23562 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });30516 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
23563}30517}
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
23578fn airSlice(self: *CodeGen, inst: Air.Inst.Index) !void {30519fn airSlice(self: *CodeGen, inst: Air.Inst.Index) !void {
23579 const zcu = self.pt.zcu;30520 const zcu = self.pt.zcu;
23580 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;30521 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
...@@ -29808,6 +36749,7 @@ fn genBinOp(...@@ -29808,6 +36749,7 @@ fn genBinOp(
29808 try self.copyToTmpRegister(rhs_ty, rhs_mcv)).to128(),36749 try self.copyToTmpRegister(rhs_ty, rhs_mcv)).to128(),
29809 );36750 );
29810 try self.asmRegisterRegister(.{ .v_ps, .cvtph2 }, dst_reg, dst_reg);36751 try self.asmRegisterRegister(.{ .v_ps, .cvtph2 }, dst_reg, dst_reg);
36752 try self.asmRegisterRegister(.{ .v_, .movshdup }, tmp_reg, dst_reg);
29811 break :src .{ .register = tmp_reg };36753 break :src .{ .register = tmp_reg };
29812 } else rhs_mcv;36754 } else rhs_mcv;
2981336755
...@@ -35227,7 +42169,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C...@@ -35227,7 +42169,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
35227 .reserved_frame,42169 .reserved_frame,
35228 .air_ref,42170 .air_ref,
35229 => unreachable, // unmodifiable destination42171 => 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),
35231 .register_offset => |dst_reg_off| try self.genSetReg(dst_reg_off.reg, ty, switch (src_mcv) {42173 .register_offset => |dst_reg_off| try self.genSetReg(dst_reg_off.reg, ty, switch (src_mcv) {
35232 .none,42174 .none,
35233 .unreach,42175 .unreach,
...@@ -35377,7 +42319,8 @@ fn genSetReg(...@@ -35377,7 +42319,8 @@ fn genSetReg(
35377 const pt = self.pt;42319 const pt = self.pt;
35378 const zcu = pt.zcu;42320 const zcu = pt.zcu;
35379 const abi_size: u32 = @intCast(ty.abiSize(zcu));42321 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())
35381 return self.fail("genSetReg called with a value larger than dst_reg", .{});42324 return self.fail("genSetReg called with a value larger than dst_reg", .{});
35382 switch (src_mcv) {42325 switch (src_mcv) {
35383 .none,42326 .none,
...@@ -35433,13 +42376,13 @@ fn genSetReg(...@@ -35433,13 +42376,13 @@ fn genSetReg(
35433 } else if (abi_size <= 4 and @as(i64, @bitCast(imm)) < 0) {42376 } else if (abi_size <= 4 and @as(i64, @bitCast(imm)) < 0) {
35434 try self.asmRegisterImmediate(42377 try self.asmRegisterImmediate(
35435 .{ ._, .mov },42378 .{ ._, .mov },
35436 registerAlias(dst_reg, abi_size),42379 dst_alias,
35437 .s(@intCast(@as(i64, @bitCast(imm)))),42380 .s(@intCast(@as(i64, @bitCast(imm)))),
35438 );42381 );
35439 } else {42382 } else {
35440 try self.asmRegisterImmediate(42383 try self.asmRegisterImmediate(
35441 .{ ._, .mov },42384 .{ ._, .mov },
35442 registerAlias(dst_reg, abi_size),42385 dst_alias,
35443 .u(imm),42386 .u(imm),
35444 );42387 );
35445 }42388 }
...@@ -35448,12 +42391,12 @@ fn genSetReg(...@@ -35448,12 +42391,12 @@ fn genSetReg(
35448 .general_purpose => switch (src_reg.class()) {42391 .general_purpose => switch (src_reg.class()) {
35449 .general_purpose => try self.asmRegisterRegister(42392 .general_purpose => try self.asmRegisterRegister(
35450 .{ ._, .mov },42393 .{ ._, .mov },
35451 registerAlias(dst_reg, abi_size),42394 dst_alias,
35452 registerAlias(src_reg, abi_size),42395 registerAlias(src_reg, abi_size),
35453 ),42396 ),
35454 .segment => try self.asmRegisterRegister(42397 .segment => try self.asmRegisterRegister(
35455 .{ ._, .mov },42398 .{ ._, .mov },
35456 registerAlias(dst_reg, abi_size),42399 dst_alias,
35457 src_reg,42400 src_reg,
35458 ),42401 ),
35459 .x87, .mmx, .ip, .cr, .dr => unreachable,42402 .x87, .mmx, .ip, .cr, .dr => unreachable,
...@@ -35480,7 +42423,7 @@ fn genSetReg(...@@ -35480,7 +42423,7 @@ fn genSetReg(
35480 .base = .{ .frame = frame_index },42423 .base = .{ .frame = frame_index },
35481 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },42424 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },
35482 }, src_reg.to128());42425 }, src_reg.to128());
35483 try self.asmRegisterMemory(.{ ._, .mov }, registerAlias(dst_reg, abi_size), .{42426 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
35484 .base = .{ .frame = frame_index },42427 .base = .{ .frame = frame_index },
35485 .mod = .{ .rm = .{ .size = .fromSize(abi_size) } },42428 .mod = .{ .rm = .{ .size = .fromSize(abi_size) } },
35486 });42429 });
...@@ -35617,7 +42560,7 @@ fn genSetReg(...@@ -35617,7 +42560,7 @@ fn genSetReg(
35617 else => unreachable,42560 else => unreachable,
35618 },42561 },
35619 }) orelse return self.fail("TODO implement genSetReg for {}", .{ty.fmt(pt)}),42562 }) orelse return self.fail("TODO implement genSetReg for {}", .{ty.fmt(pt)}),
35620 registerAlias(dst_reg, abi_size),42563 dst_alias,
35621 registerAlias(src_reg, abi_size),42564 registerAlias(src_reg, abi_size),
35622 ),42565 ),
35623 },42566 },
...@@ -35678,7 +42621,7 @@ fn genSetReg(...@@ -35678,7 +42621,7 @@ fn genSetReg(
35678 ),42621 ),
35679 .lea_frame => .{ .move = .{ ._, .lea } },42622 .lea_frame => .{ .move = .{ ._, .lea } },
35680 else => unreachable,42623 else => unreachable,
35681 }).read(self, registerAlias(dst_reg, abi_size), switch (src_mcv) {42624 }).read(self, dst_alias, switch (src_mcv) {
35682 .register_offset, .indirect => |reg_off| .{42625 .register_offset, .indirect => |reg_off| .{
35683 .base = .{ .reg = reg_off.reg.to64() },42626 .base = .{ .reg = reg_off.reg.to64() },
35684 .mod = .{ .rm = .{42627 .mod = .{ .rm = .{
...@@ -35743,7 +42686,7 @@ fn genSetReg(...@@ -35743,7 +42686,7 @@ fn genSetReg(
35743 ty,42686 ty,
35744 dst_reg.class(),42687 dst_reg.class(),
35745 ty.abiAlignment(zcu).check(@as(u32, @bitCast(small_addr))),42688 ty.abiAlignment(zcu).check(@as(u32, @bitCast(small_addr))),
35746 )).read(self, registerAlias(dst_reg, abi_size), .{42689 )).read(self, dst_alias, .{
35747 .base = .{ .reg = .ds },42690 .base = .{ .reg = .ds },
35748 .mod = .{ .rm = .{42691 .mod = .{ .rm = .{
35749 .size = self.memSize(ty),42692 .size = self.memSize(ty),
...@@ -35753,7 +42696,7 @@ fn genSetReg(...@@ -35753,7 +42696,7 @@ fn genSetReg(
35753 .load_symbol => |sym_off| switch (dst_reg.class()) {42696 .load_symbol => |sym_off| switch (dst_reg.class()) {
35754 .general_purpose => {42697 .general_purpose => {
35755 assert(sym_off.off == 0);42698 assert(sym_off.off == 0);
35756 try self.asmRegisterMemory(.{ ._, .mov }, registerAlias(dst_reg, abi_size), .{42699 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
35757 .base = .{ .reloc = sym_off.sym_index },42700 .base = .{ .reloc = sym_off.sym_index },
35758 .mod = .{ .rm = .{42701 .mod = .{ .rm = .{
35759 .size = self.memSize(ty),42702 .size = self.memSize(ty),
...@@ -35771,7 +42714,7 @@ fn genSetReg(...@@ -35771,7 +42714,7 @@ fn genSetReg(
35771 .tag = .mov,42714 .tag = .mov,
35772 .ops = .direct_reloc,42715 .ops = .direct_reloc,
35773 .data = .{ .rx = .{42716 .data = .{ .rx = .{
35774 .r1 = registerAlias(dst_reg, abi_size),42717 .r1 = dst_alias,
35775 .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),42718 .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),
35776 } },42719 } },
35777 });42720 });
...@@ -35788,7 +42731,7 @@ fn genSetReg(...@@ -35788,7 +42731,7 @@ fn genSetReg(
35788 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);42731 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
35789 defer self.register_manager.unlockReg(addr_lock);42732 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, .{
35792 .base = .{ .reg = addr_reg.to64() },42735 .base = .{ .reg = addr_reg.to64() },
35793 .mod = .{ .rm = .{ .size = self.memSize(ty) } },42736 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
35794 });42737 });
...@@ -36274,21 +43217,6 @@ fn genLazySymbolRef(...@@ -36274,21 +43217,6 @@ fn genLazySymbolRef(
36274 }43217 }
36275}43218}
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
36292fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void {43220fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void {
36293 const pt = self.pt;43221 const pt = self.pt;
36294 const zcu = pt.zcu;43222 const zcu = pt.zcu;
...@@ -36328,7 +43256,7 @@ fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -36328,7 +43256,7 @@ fn airBitCast(self: *CodeGen, inst: Air.Inst.Index) !void {
3632843256
36329 if (dst_ty.isRuntimeFloat()) break :result dst_mcv;43257 if (dst_ty.isRuntimeFloat()) break :result dst_mcv;
3633043258
36331 if (dst_ty.isAbiInt(zcu) and src_ty.isAbiInt(zcu) and43259 if (dst_ty.isAbiInt(zcu) and src_ty.isAbiInt(zcu) and src_ty.zigTypeTag(zcu) != .@"struct" and
36332 dst_ty.intInfo(zcu).signedness == src_ty.intInfo(zcu).signedness) break :result dst_mcv;43260 dst_ty.intInfo(zcu).signedness == src_ty.intInfo(zcu).signedness) break :result dst_mcv;
3633343261
36334 const abi_size = dst_ty.abiSize(zcu);43262 const abi_size = dst_ty.abiSize(zcu);
...@@ -40916,8 +47844,8 @@ const Temp = struct {...@@ -40916,8 +47844,8 @@ const Temp = struct {
40916 const first_temp_tracking = first_temp.unwrap(cg).temp.tracking(cg);47844 const first_temp_tracking = first_temp.unwrap(cg).temp.tracking(cg);
40917 const second_temp_tracking = second_temp.unwrap(cg).temp.tracking(cg);47845 const second_temp_tracking = second_temp.unwrap(cg).temp.tracking(cg);
40918 const result: MCValue = .{ .register_pair = .{47846 const result: MCValue = .{ .register_pair = .{
40919 first_temp_tracking.short.register,47847 first_temp_tracking.short.register.to64(),
40920 second_temp_tracking.short.register,47848 second_temp_tracking.short.register.to64(),
40921 } };47849 } };
40922 const result_temp_index = cg.next_temp_index;47850 const result_temp_index = cg.next_temp_index;
40923 const result_temp: Temp = .{ .index = result_temp_index.toIndex() };47851 const result_temp: Temp = .{ .index = result_temp_index.toIndex() };
...@@ -42369,7 +49297,7 @@ const Temp = struct {...@@ -42369,7 +49297,7 @@ const Temp = struct {
42369 .temp => |temp_index| {49297 .temp => |temp_index| {
42370 const temp_tracking = temp_index.tracking(cg);49298 const temp_tracking = temp_index.tracking(cg);
42371 tracking_log.debug("{} => {} (birth)", .{ inst, temp_tracking.short });49299 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));
42373 assert(cg.reuseTemp(inst, temp_index.toIndex(), temp_tracking));49301 assert(cg.reuseTemp(inst, temp_index.toIndex(), temp_tracking));
42374 },49302 },
42375 }49303 }
...@@ -42616,7 +49544,7 @@ const Select = struct {...@@ -42616,7 +49544,7 @@ const Select = struct {
42616 top: u3,49544 top: u3,
4261749545
42618 fn emitLabel(s: *Select, label_index: Label) void {49546 fn emitLabel(s: *Select, label_index: Label) void {
42619 if (label_index == ._) return;49547 assert(@intFromEnum(label_index) < @intFromEnum(Label._));
42620 const label = &s.labels[@intFromEnum(label_index)];49548 const label = &s.labels[@intFromEnum(label_index)];
42621 for (&label.forward) |*reloc| {49549 for (&label.forward) |*reloc| {
42622 if (reloc.*) |r| s.cg.performReloc(r);49550 if (reloc.*) |r| s.cg.performReloc(r);
...@@ -42626,29 +49554,35 @@ const Select = struct {...@@ -42626,29 +49554,35 @@ const Select = struct {
42626 }49554 }
4262749555
42628 fn emit(s: *Select, inst: Instruction) !void {49556 fn emit(s: *Select, inst: Instruction) !void {
42629 s.emitLabel(inst[0]);
42630 const mir_tag: Mir.Inst.FixedTag = .{ inst[1], inst[2] };49557 const mir_tag: Mir.Inst.FixedTag = .{ inst[1], inst[2] };
42631 var mir_ops: [4]CodeGen.Operand = undefined;49558 pseudo: {
42632 inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s);49559 switch (inst[0]) {
42633 s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) {49560 .@"0:", .@"1:", .@"2:" => |label| s.emitLabel(label),
42634 error.InvalidInstruction => {49561 ._ => {},
42635 const fixes = @tagName(mir_tag[0]);49562 .pseudo => break :pseudo,
42636 const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?;49563 }
42637 return s.cg.fail(49564 var mir_ops: [4]CodeGen.Operand = undefined;
42638 "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'",49565 inline for (&mir_ops, 3..) |*mir_op, inst_index| mir_op.* = try inst[inst_index].lower(s);
42639 .{49566 s.cg.asmOps(mir_tag, mir_ops) catch |err| switch (err) {
42640 fixes[0..fixes_blank],49567 error.InvalidInstruction => {
42641 @tagName(mir_tag[1]),49568 const fixes = @tagName(mir_tag[0]);
42642 fixes[fixes_blank + 1 ..],49569 const fixes_blank = std.mem.indexOfScalar(u8, fixes, '_').?;
42643 @tagName(mir_ops[0]),49570 return s.cg.fail(
42644 @tagName(mir_ops[1]),49571 "invalid instruction: '{s}{s}{s} {s} {s} {s} {s}'",
42645 @tagName(mir_ops[2]),49572 .{
42646 @tagName(mir_ops[3]),49573 fixes[0..fixes_blank],
42647 },49574 @tagName(mir_tag[1]),
42648 );49575 fixes[fixes_blank + 1 ..],
42649 },49576 @tagName(mir_ops[0]),
42650 else => |e| return e,49577 @tagName(mir_ops[1]),
42651 };49578 @tagName(mir_ops[2]),
49579 @tagName(mir_ops[3]),
49580 },
49581 );
49582 },
49583 else => |e| return e,
49584 };
49585 }
42652 switch (mir_tag[0]) {49586 switch (mir_tag[0]) {
42653 .f_ => switch (mir_tag[1]) {49587 .f_ => switch (mir_tag[1]) {
42654 .@"2xm1",49588 .@"2xm1",
...@@ -42702,32 +49636,6 @@ const Select = struct {...@@ -42702,32 +49636,6 @@ const Select = struct {
42702 .yl2x => s.top +%= 1,49636 .yl2x => s.top +%= 1,
42703 else => unreachable,49637 else => unreachable,
42704 },49638 },
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 },
42731 .f_cstp => switch (mir_tag[1]) {49639 .f_cstp => switch (mir_tag[1]) {
42732 .de => s.top -%= 1,49640 .de => s.top -%= 1,
42733 .in => s.top +%= 1,49641 .in => s.top +%= 1,
...@@ -42754,6 +49662,32 @@ const Select = struct {...@@ -42754,6 +49662,32 @@ const Select = struct {
42754 .com, .ucom => s.top +%= 2,49662 .com, .ucom => s.top +%= 2,
42755 else => unreachable,49663 else => unreachable,
42756 },49664 },
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 },
42757 .fx_ => switch (mir_tag[1]) {49691 .fx_ => switch (mir_tag[1]) {
42758 .rstor => unreachable,49692 .rstor => unreachable,
42759 .save => {},49693 .save => {},
...@@ -42770,8 +49704,8 @@ const Select = struct {...@@ -42770,8 +49704,8 @@ const Select = struct {
4277049704
42771 const Case = struct {49705 const Case = struct {
42772 required_features: [4]?std.Target.x86.Feature = @splat(null),49706 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),
42774 src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any),49707 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),
42775 patterns: []const Select.Pattern,49709 patterns: []const Select.Pattern,
42776 call_frame: packed struct(u16) { size: u10 = 0, alignment: InternPool.Alignment } = .{ .size = 0, .alignment = .none },49710 call_frame: packed struct(u16) { size: u10 = 0, alignment: InternPool.Alignment } = .{ .size = 0, .alignment = .none },
42777 extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused),49711 extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused),
...@@ -43168,6 +50102,7 @@ const Select = struct {...@@ -43168,6 +50102,7 @@ const Select = struct {
43168 smax_mem: ConstInfo,50102 smax_mem: ConstInfo,
43169 umin_mem: ConstInfo,50103 umin_mem: ConstInfo,
43170 umax_mem: ConstInfo,50104 umax_mem: ConstInfo,
50105 frame: FrameIndex,
43171 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },50106 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },
4317250107
43173 const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null };50108 const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null };
...@@ -43284,6 +50219,7 @@ const Select = struct {...@@ -43284,6 +50219,7 @@ const Select = struct {
43284 } })) else res_scalar_val;50219 } })) else res_scalar_val;
43285 return .{ try cg.tempMemFromValue(res_val), true };50220 return .{ try cg.tempMemFromValue(res_val), true };
43286 },50221 },
50222 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },
43287 .symbol => |symbol| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{50223 .symbol => |symbol| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{
43288 .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|50224 .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
43289 try elf_file.getGlobalSymbol(symbol.name, symbol.lib)50225 try elf_file.getGlobalSymbol(symbol.name, symbol.lib)
...@@ -43305,18 +50241,21 @@ const Select = struct {...@@ -43305,18 +50241,21 @@ const Select = struct {
43305 Select.Operand,50241 Select.Operand,
43306 Select.Operand,50242 Select.Operand,
43307 };50243 };
43308 const Label = enum { @"0:", @"1:", @"2:", @"_" };50244 const Label = enum { @"0:", @"1:", @"2:", @"_", pseudo };
43309 const Operand = struct {50245 const Operand = struct {
43310 tag: Tag,50246 flags: packed struct(u16) {
50247 tag: Tag,
50248 adjust: Adjust = .none,
50249 unused: u4 = 0,
50250 },
43311 base: Ref.Sized = .none,50251 base: Ref.Sized = .none,
43312 index: packed struct(u6) {50252 index: packed struct(u6) {
43313 ref: Ref,50253 ref: Ref,
43314 scale: Memory.Scale,50254 scale: Memory.Scale = .@"1",
43315 } = .{ .ref = .none, .scale = .@"1" },50255 } = .{ .ref = .none },
43316 adjust: Adjust = .none,
43317 imm: i32 = 0,50256 imm: i32 = 0,
4331850257
43319 const Tag = enum {50258 const Tag = enum(u3) {
43320 none,50259 none,
43321 backward_label,50260 backward_label,
43322 forward_label,50261 forward_label,
...@@ -43326,19 +50265,22 @@ const Select = struct {...@@ -43326,19 +50265,22 @@ const Select = struct {
43326 lea,50265 lea,
43327 mem,50266 mem,
43328 };50267 };
43329 const Adjust = packed struct(u8) {50268 const Adjust = packed struct(u9) {
43330 sign: enum(u1) { neg, pos },50269 sign: enum(u1) { neg, pos },
43331 lhs: enum(u4) {50270 lhs: enum(u5) {
43332 none,50271 none,
43333 ptr_size,50272 ptr_size,
43334 ptr_bit_size,50273 ptr_bit_size,
43335 size,50274 size,
50275 delta_size,
50276 delta_elem_size,
43336 size_sub_elem_size,50277 size_sub_elem_size,
43337 src0_unaligned_size,50278 unaligned_size,
43338 bit_size,50279 bit_size,
43339 src0_bit_size,50280 src0_bit_size,
43340 len,50281 len,
43341 elem_limbs,50282 elem_limbs,
50283 elem_size,
43342 src0_elem_size,50284 src0_elem_size,
43343 src0_elem_size_times_src1,50285 src0_elem_size_times_src1,
43344 log2_src0_elem_size,50286 log2_src0_elem_size,
...@@ -43353,13 +50295,17 @@ const Select = struct {...@@ -43353,13 +50295,17 @@ const Select = struct {
43353 const sub_ptr_size: Adjust = .{ .sign = .neg, .lhs = .ptr_size, .op = .mul, .rhs = .@"1" };50295 const sub_ptr_size: Adjust = .{ .sign = .neg, .lhs = .ptr_size, .op = .mul, .rhs = .@"1" };
43354 const add_ptr_bit_size: Adjust = .{ .sign = .pos, .lhs = .ptr_bit_size, .op = .mul, .rhs = .@"1" };50296 const add_ptr_bit_size: Adjust = .{ .sign = .pos, .lhs = .ptr_bit_size, .op = .mul, .rhs = .@"1" };
43355 const add_size: Adjust = .{ .sign = .pos, .lhs = .size, .op = .mul, .rhs = .@"1" };50297 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" };
43356 const add_size_div_8: Adjust = .{ .sign = .pos, .lhs = .size, .op = .div, .rhs = .@"8" };50299 const add_size_div_8: Adjust = .{ .sign = .pos, .lhs = .size, .op = .div, .rhs = .@"8" };
43357 const sub_size_div_8: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"8" };50300 const sub_size_div_8: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"8" };
43358 const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" };50301 const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" };
43359 const sub_size: Adjust = .{ .sign = .neg, .lhs = .size, .op = .mul, .rhs = .@"1" };50302 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" };
43360 const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" };50306 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" };50307 const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
43362 const sub_src0_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .src0_unaligned_size, .op = .mul, .rhs = .@"1" };50308 const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
43363 const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" };50309 const add_2_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"2" };
43364 const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };50310 const add_bit_size: Adjust = .{ .sign = .pos, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
43365 const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };50311 const sub_bit_size: Adjust = .{ .sign = .neg, .lhs = .bit_size, .op = .mul, .rhs = .@"1" };
...@@ -43371,6 +50317,7 @@ const Select = struct {...@@ -43371,6 +50317,7 @@ const Select = struct {
43371 const add_2_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"2" };50317 const add_2_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"2" };
43372 const add_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"1" };50318 const add_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"1" };
43373 const sub_len: Adjust = .{ .sign = .neg, .lhs = .len, .op = .mul, .rhs = .@"1" };50319 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" };
43374 const add_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"1" };50321 const add_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"1" };
43375 const add_2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"2" };50322 const add_2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"2" };
43376 const add_4_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"4" };50323 const add_4_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"4" };
...@@ -43530,298 +50477,293 @@ const Select = struct {...@@ -43530,298 +50477,293 @@ const Select = struct {
43530 }50477 }
43531 };50478 };
4353250479
43533 const @"_": Select.Operand = .{ .tag = .none };50480 const @"_": Select.Operand = .{ .flags = .{ .tag = .none } };
4353450481
43535 const @"0b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp0, .size = .none } };50482 const @"0b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp0, .size = .none } };
43536 const @"0f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp0, .size = .none } };50483 const @"0f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp0, .size = .none } };
43537 const @"1b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp1, .size = .none } };50484 const @"1b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp1, .size = .none } };
43538 const @"1f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp1, .size = .none } };50485 const @"1f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp1, .size = .none } };
43539 const @"2b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp2, .size = .none } };50486 const @"2b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp2, .size = .none } };
43540 const @"2f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp2, .size = .none } };50487 const @"2f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp2, .size = .none } };
4354150488
43542 const tmp0b: Select.Operand = .{ .tag = .ref, .base = .tmp0b };50489 const tmp0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0b };
43543 const tmp0w: Select.Operand = .{ .tag = .ref, .base = .tmp0w };50490 const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w };
43544 const tmp0d: Select.Operand = .{ .tag = .ref, .base = .tmp0d };50491 const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d };
43545 const tmp0p: Select.Operand = .{ .tag = .ref, .base = .tmp0p };50492 const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p };
43546 const tmp0q: Select.Operand = .{ .tag = .ref, .base = .tmp0q };50493 const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q };
43547 const tmp0t: Select.Operand = .{ .tag = .ref, .base = .tmp0t };50494 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t };
43548 const tmp0x: Select.Operand = .{ .tag = .ref, .base = .tmp0x };50495 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x };
43549 const tmp0y: Select.Operand = .{ .tag = .ref, .base = .tmp0y };50496 const tmp0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0y };
4355050497
43551 const tmp1b: Select.Operand = .{ .tag = .ref, .base = .tmp1b };50498 const tmp1b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1b };
43552 const tmp1w: Select.Operand = .{ .tag = .ref, .base = .tmp1w };50499 const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w };
43553 const tmp1d: Select.Operand = .{ .tag = .ref, .base = .tmp1d };50500 const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d };
43554 const tmp1p: Select.Operand = .{ .tag = .ref, .base = .tmp1p };50501 const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p };
43555 const tmp1q: Select.Operand = .{ .tag = .ref, .base = .tmp1q };50502 const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q };
43556 const tmp1t: Select.Operand = .{ .tag = .ref, .base = .tmp1t };50503 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t };
43557 const tmp1x: Select.Operand = .{ .tag = .ref, .base = .tmp1x };50504 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x };
43558 const tmp1y: Select.Operand = .{ .tag = .ref, .base = .tmp1y };50505 const tmp1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1y };
4355950506
43560 const tmp2b: Select.Operand = .{ .tag = .ref, .base = .tmp2b };50507 const tmp2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2b };
43561 const tmp2w: Select.Operand = .{ .tag = .ref, .base = .tmp2w };50508 const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w };
43562 const tmp2d: Select.Operand = .{ .tag = .ref, .base = .tmp2d };50509 const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d };
43563 const tmp2p: Select.Operand = .{ .tag = .ref, .base = .tmp2p };50510 const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p };
43564 const tmp2q: Select.Operand = .{ .tag = .ref, .base = .tmp2q };50511 const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q };
43565 const tmp2t: Select.Operand = .{ .tag = .ref, .base = .tmp2t };50512 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t };
43566 const tmp2x: Select.Operand = .{ .tag = .ref, .base = .tmp2x };50513 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x };
43567 const tmp2y: Select.Operand = .{ .tag = .ref, .base = .tmp2y };50514 const tmp2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2y };
4356850515
43569 const tmp3b: Select.Operand = .{ .tag = .ref, .base = .tmp3b };50516 const tmp3b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3b };
43570 const tmp3w: Select.Operand = .{ .tag = .ref, .base = .tmp3w };50517 const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w };
43571 const tmp3d: Select.Operand = .{ .tag = .ref, .base = .tmp3d };50518 const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d };
43572 const tmp3p: Select.Operand = .{ .tag = .ref, .base = .tmp3p };50519 const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p };
43573 const tmp3q: Select.Operand = .{ .tag = .ref, .base = .tmp3q };50520 const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q };
43574 const tmp3t: Select.Operand = .{ .tag = .ref, .base = .tmp3t };50521 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t };
43575 const tmp3x: Select.Operand = .{ .tag = .ref, .base = .tmp3x };50522 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x };
43576 const tmp3y: Select.Operand = .{ .tag = .ref, .base = .tmp3y };50523 const tmp3y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3y };
4357750524
43578 const tmp4b: Select.Operand = .{ .tag = .ref, .base = .tmp4b };50525 const tmp4b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4b };
43579 const tmp4w: Select.Operand = .{ .tag = .ref, .base = .tmp4w };50526 const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w };
43580 const tmp4d: Select.Operand = .{ .tag = .ref, .base = .tmp4d };50527 const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d };
43581 const tmp4p: Select.Operand = .{ .tag = .ref, .base = .tmp4p };50528 const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p };
43582 const tmp4q: Select.Operand = .{ .tag = .ref, .base = .tmp4q };50529 const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q };
43583 const tmp4t: Select.Operand = .{ .tag = .ref, .base = .tmp4t };50530 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t };
43584 const tmp4x: Select.Operand = .{ .tag = .ref, .base = .tmp4x };50531 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x };
43585 const tmp4y: Select.Operand = .{ .tag = .ref, .base = .tmp4y };50532 const tmp4y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4y };
4358650533
43587 const tmp5b: Select.Operand = .{ .tag = .ref, .base = .tmp5b };50534 const tmp5b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5b };
43588 const tmp5w: Select.Operand = .{ .tag = .ref, .base = .tmp5w };50535 const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w };
43589 const tmp5d: Select.Operand = .{ .tag = .ref, .base = .tmp5d };50536 const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d };
43590 const tmp5p: Select.Operand = .{ .tag = .ref, .base = .tmp5p };50537 const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p };
43591 const tmp5q: Select.Operand = .{ .tag = .ref, .base = .tmp5q };50538 const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q };
43592 const tmp5t: Select.Operand = .{ .tag = .ref, .base = .tmp5t };50539 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t };
43593 const tmp5x: Select.Operand = .{ .tag = .ref, .base = .tmp5x };50540 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x };
43594 const tmp5y: Select.Operand = .{ .tag = .ref, .base = .tmp5y };50541 const tmp5y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5y };
4359550542
43596 const tmp6b: Select.Operand = .{ .tag = .ref, .base = .tmp6b };50543 const tmp6b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6b };
43597 const tmp6w: Select.Operand = .{ .tag = .ref, .base = .tmp6w };50544 const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w };
43598 const tmp6d: Select.Operand = .{ .tag = .ref, .base = .tmp6d };50545 const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d };
43599 const tmp6p: Select.Operand = .{ .tag = .ref, .base = .tmp6p };50546 const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p };
43600 const tmp6q: Select.Operand = .{ .tag = .ref, .base = .tmp6q };50547 const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q };
43601 const tmp6t: Select.Operand = .{ .tag = .ref, .base = .tmp6t };50548 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t };
43602 const tmp6x: Select.Operand = .{ .tag = .ref, .base = .tmp6x };50549 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x };
43603 const tmp6y: Select.Operand = .{ .tag = .ref, .base = .tmp6y };50550 const tmp6y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6y };
4360450551
43605 const tmp7b: Select.Operand = .{ .tag = .ref, .base = .tmp7b };50552 const tmp7b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7b };
43606 const tmp7w: Select.Operand = .{ .tag = .ref, .base = .tmp7w };50553 const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w };
43607 const tmp7d: Select.Operand = .{ .tag = .ref, .base = .tmp7d };50554 const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d };
43608 const tmp7p: Select.Operand = .{ .tag = .ref, .base = .tmp7p };50555 const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p };
43609 const tmp7q: Select.Operand = .{ .tag = .ref, .base = .tmp7q };50556 const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q };
43610 const tmp7t: Select.Operand = .{ .tag = .ref, .base = .tmp7t };50557 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t };
43611 const tmp7x: Select.Operand = .{ .tag = .ref, .base = .tmp7x };50558 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x };
43612 const tmp7y: Select.Operand = .{ .tag = .ref, .base = .tmp7y };50559 const tmp7y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7y };
4361350560
43614 const tmp8b: Select.Operand = .{ .tag = .ref, .base = .tmp8b };50561 const tmp8b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8b };
43615 const tmp8w: Select.Operand = .{ .tag = .ref, .base = .tmp8w };50562 const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w };
43616 const tmp8d: Select.Operand = .{ .tag = .ref, .base = .tmp8d };50563 const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d };
43617 const tmp8p: Select.Operand = .{ .tag = .ref, .base = .tmp8p };50564 const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p };
43618 const tmp8q: Select.Operand = .{ .tag = .ref, .base = .tmp8q };50565 const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q };
43619 const tmp8t: Select.Operand = .{ .tag = .ref, .base = .tmp8t };50566 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t };
43620 const tmp8x: Select.Operand = .{ .tag = .ref, .base = .tmp8x };50567 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x };
43621 const tmp8y: Select.Operand = .{ .tag = .ref, .base = .tmp8y };50568 const tmp8y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8y };
4362250569
43623 const dst0b: Select.Operand = .{ .tag = .ref, .base = .dst0b };50570 const dst0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0b };
43624 const dst0w: Select.Operand = .{ .tag = .ref, .base = .dst0w };50571 const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w };
43625 const dst0d: Select.Operand = .{ .tag = .ref, .base = .dst0d };50572 const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d };
43626 const dst0p: Select.Operand = .{ .tag = .ref, .base = .dst0p };50573 const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p };
43627 const dst0q: Select.Operand = .{ .tag = .ref, .base = .dst0q };50574 const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q };
43628 const dst0t: Select.Operand = .{ .tag = .ref, .base = .dst0t };50575 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t };
43629 const dst0x: Select.Operand = .{ .tag = .ref, .base = .dst0x };50576 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x };
43630 const dst0y: Select.Operand = .{ .tag = .ref, .base = .dst0y };50577 const dst0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0y };
4363150578
43632 const src0b: Select.Operand = .{ .tag = .ref, .base = .src0b };50579 const src0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0b };
43633 const src0w: Select.Operand = .{ .tag = .ref, .base = .src0w };50580 const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w };
43634 const src0d: Select.Operand = .{ .tag = .ref, .base = .src0d };50581 const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d };
43635 const src0p: Select.Operand = .{ .tag = .ref, .base = .src0p };50582 const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p };
43636 const src0q: Select.Operand = .{ .tag = .ref, .base = .src0q };50583 const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q };
43637 const src0t: Select.Operand = .{ .tag = .ref, .base = .src0t };50584 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t };
43638 const src0x: Select.Operand = .{ .tag = .ref, .base = .src0x };50585 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x };
43639 const src0y: Select.Operand = .{ .tag = .ref, .base = .src0y };50586 const src0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0y };
4364050587
43641 const src1b: Select.Operand = .{ .tag = .ref, .base = .src1b };50588 const src1b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1b };
43642 const src1w: Select.Operand = .{ .tag = .ref, .base = .src1w };50589 const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w };
43643 const src1d: Select.Operand = .{ .tag = .ref, .base = .src1d };50590 const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d };
43644 const src1p: Select.Operand = .{ .tag = .ref, .base = .src1p };50591 const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p };
43645 const src1q: Select.Operand = .{ .tag = .ref, .base = .src1q };50592 const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q };
43646 const src1t: Select.Operand = .{ .tag = .ref, .base = .src1t };50593 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t };
43647 const src1x: Select.Operand = .{ .tag = .ref, .base = .src1x };50594 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
43648 const src1y: Select.Operand = .{ .tag = .ref, .base = .src1y };50595 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };
4364950596
43650 fn si(imm: i32) Select.Operand {50597 fn si(imm: i32) Select.Operand {
43651 return .{ .tag = .simm, .imm = imm };50598 return .{ .flags = .{ .tag = .simm }, .imm = imm };
43652 }50599 }
43653 fn sa(base: Ref.Sized, adjust: Adjust) Select.Operand {50600 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 } };
43655 }50605 }
43656 fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand {50606 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 };
43658 }50608 }
43659 fn ui(imm: u32) Select.Operand {50609 fn ui(imm: u32) Select.Operand {
43660 return .{ .tag = .uimm, .imm = @bitCast(imm) };50610 return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) };
43661 }50611 }
43662 fn ua(base: Ref.Sized, adjust: Adjust) Select.Operand {50612 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 };
43664 }50614 }
43665 fn uia(imm: u32, base: Ref.Sized, adjust: Adjust) Select.Operand {50615 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) };
43667 }50617 }
4366850618
43669 fn rm(mode: bits.RoundMode) Select.Operand {50619 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) };
43671 }50621 }
43672 fn sp(pred: bits.SseFloatPredicate) Select.Operand {50622 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) };
43674 }50624 }
43675 fn vp(pred: bits.VexFloatPredicate) Select.Operand {50625 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) };
43677 }50627 }
4367850628
43679 fn lea(size: Memory.Size, base: Ref) Select.Operand {50629 fn lea(base: Ref.Sized) Select.Operand {
43680 return .{50630 return .{
43681 .tag = .lea,50631 .flags = .{ .tag = .lea },
43682 .base = .{ .ref = base, .size = size },50632 .base = base,
43683 };50633 };
43684 }50634 }
43685 fn leaa(size: Memory.Size, base: Ref, adjust: Adjust) Select.Operand {50635 fn leaa(base: Ref.Sized, adjust: Adjust) Select.Operand {
43686 return .{50636 return .{
43687 .tag = .lea,50637 .flags = .{ .tag = .lea, .adjust = adjust },
43688 .base = .{ .ref = base, .size = size },50638 .base = base,
43689 .adjust = adjust,
43690 };50639 };
43691 }50640 }
43692 fn lead(size: Memory.Size, base: Ref, disp: i32) Select.Operand {50641 fn lead(base: Ref.Sized, disp: i32) Select.Operand {
43693 return .{50642 return .{
43694 .tag = .lea,50643 .flags = .{ .tag = .lea },
43695 .base = .{ .ref = base, .size = size },50644 .base = base,
43696 .imm = disp,50645 .imm = disp,
43697 };50646 };
43698 }50647 }
43699 fn leai(size: Memory.Size, base: Ref, index: Ref) Select.Operand {50648 fn leai(base: Ref.Sized, index: Ref) Select.Operand {
43700 return .{50649 return .{
43701 .tag = .lea,50650 .flags = .{ .tag = .lea },
43702 .base = .{ .ref = base, .size = size },50651 .base = base,
43703 .index = .{ .ref = index, .scale = .@"1" },50652 .index = .{ .ref = index },
43704 };50653 };
43705 }50654 }
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 {
43707 return .{50656 return .{
43708 .tag = .lea,50657 .flags = .{ .tag = .lea, .adjust = adjust },
43709 .base = .{ .ref = base, .size = size },50658 .base = base,
43710 .index = .{ .ref = index, .scale = .@"1" },50659 .index = .{ .ref = index },
43711 .adjust = adjust,
43712 };50660 };
43713 }50661 }
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 {
43715 return .{50663 return .{
43716 .tag = .lea,50664 .flags = .{ .tag = .lea },
43717 .base = .{ .ref = base, .size = size },50665 .base = base,
43718 .index = .{ .ref = index, .scale = .@"1" },50666 .index = .{ .ref = index },
43719 .imm = disp,50667 .imm = disp,
43720 };50668 };
43721 }50669 }
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 {
43723 return .{50671 return .{
43724 .tag = .lea,50672 .flags = .{ .tag = .lea },
43725 .base = .{ .ref = base, .size = size },50673 .base = base,
43726 .index = .{ .ref = index, .scale = scale },50674 .index = .{ .ref = index, .scale = scale },
43727 };50675 };
43728 }50676 }
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 {
43730 return .{50678 return .{
43731 .tag = .lea,50679 .flags = .{ .tag = .lea },
43732 .base = .{ .ref = base, .size = size },50680 .base = base,
43733 .index = .{ .ref = index, .scale = scale },50681 .index = .{ .ref = index, .scale = scale },
43734 .imm = disp,50682 .imm = disp,
43735 };50683 };
43736 }50684 }
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 {
43738 return .{50686 return .{
43739 .tag = .lea,50687 .flags = .{ .tag = .lea, .adjust = adjust },
43740 .base = .{ .ref = base, .size = size },50688 .base = base,
43741 .index = .{ .ref = index, .scale = scale },50689 .index = .{ .ref = index, .scale = scale },
43742 .adjust = adjust,
43743 .imm = disp,50690 .imm = disp,
43744 };50691 };
43745 }50692 }
4374650693
43747 fn mem(base: Ref.Sized) Select.Operand {50694 fn mem(base: Ref.Sized) Select.Operand {
43748 return .{50695 return .{
43749 .tag = .mem,50696 .flags = .{ .tag = .mem },
43750 .base = base,50697 .base = base,
43751 };50698 };
43752 }50699 }
43753 fn memd(base: Ref.Sized, disp: i32) Select.Operand {50700 fn memd(base: Ref.Sized, disp: i32) Select.Operand {
43754 return .{50701 return .{
43755 .tag = .mem,50702 .flags = .{ .tag = .mem },
43756 .base = base,50703 .base = base,
43757 .imm = disp,50704 .imm = disp,
43758 };50705 };
43759 }50706 }
43760 fn mema(base: Ref.Sized, adjust: Adjust) Select.Operand {50707 fn mema(base: Ref.Sized, adjust: Adjust) Select.Operand {
43761 return .{50708 return .{
43762 .tag = .mem,50709 .flags = .{ .tag = .mem, .adjust = adjust },
43763 .base = base,50710 .base = base,
43764 .adjust = adjust,
43765 };50711 };
43766 }50712 }
43767 fn memad(base: Ref.Sized, adjust: Adjust, disp: i32) Select.Operand {50713 fn memad(base: Ref.Sized, adjust: Adjust, disp: i32) Select.Operand {
43768 return .{50714 return .{
43769 .tag = .mem,50715 .flags = .{ .tag = .mem, .adjust = adjust },
43770 .base = base,50716 .base = base,
43771 .adjust = adjust,
43772 .imm = disp,50717 .imm = disp,
43773 };50718 };
43774 }50719 }
43775 fn memi(base: Ref.Sized, index: Ref) Select.Operand {50720 fn memi(base: Ref.Sized, index: Ref) Select.Operand {
43776 return .{50721 return .{
43777 .tag = .mem,50722 .flags = .{ .tag = .mem },
43778 .base = base,50723 .base = base,
43779 .index = .{ .ref = index, .scale = .@"1" },50724 .index = .{ .ref = index },
43780 };50725 };
43781 }50726 }
43782 fn memia(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {50727 fn memia(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
43783 return .{50728 return .{
43784 .tag = .mem,50729 .flags = .{ .tag = .mem, .adjust = adjust },
43785 .base = base,50730 .base = base,
43786 .index = .{ .ref = index, .scale = .@"1" },50731 .index = .{ .ref = index },
43787 .adjust = adjust,
43788 };50732 };
43789 }50733 }
43790 fn memiad(base: Ref.Sized, index: Ref, adjust: Adjust, disp: i32) Select.Operand {50734 fn memiad(base: Ref.Sized, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
43791 return .{50735 return .{
43792 .tag = .mem,50736 .flags = .{ .tag = .mem, .adjust = adjust },
43793 .base = base,50737 .base = base,
43794 .index = .{ .ref = index, .scale = .@"1" },50738 .index = .{ .ref = index },
43795 .adjust = adjust,
43796 .imm = disp,50739 .imm = disp,
43797 };50740 };
43798 }50741 }
43799 fn memid(base: Ref.Sized, index: Ref, disp: i32) Select.Operand {50742 fn memid(base: Ref.Sized, index: Ref, disp: i32) Select.Operand {
43800 return .{50743 return .{
43801 .tag = .mem,50744 .flags = .{ .tag = .mem },
43802 .base = base,50745 .base = base,
43803 .index = .{ .ref = index, .scale = .@"1" },50746 .index = .{ .ref = index },
43804 .imm = disp,50747 .imm = disp,
43805 };50748 };
43806 }50749 }
43807 fn memsi(base: Ref.Sized, scale: Memory.Scale, index: Ref) Select.Operand {50750 fn memsi(base: Ref.Sized, scale: Memory.Scale, index: Ref) Select.Operand {
43808 return .{50751 return .{
43809 .tag = .mem,50752 .flags = .{ .tag = .mem },
43810 .base = base,50753 .base = base,
43811 .index = .{ .ref = index, .scale = scale },50754 .index = .{ .ref = index, .scale = scale },
43812 };50755 };
43813 }50756 }
43814 fn memsia(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust) Select.Operand {50757 fn memsia(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust) Select.Operand {
43815 return .{50758 return .{
43816 .tag = .mem,50759 .flags = .{ .tag = .mem, .adjust = adjust },
43817 .base = base,50760 .base = base,
43818 .index = .{ .ref = index, .scale = scale },50761 .index = .{ .ref = index, .scale = scale },
43819 .adjust = adjust,
43820 };50762 };
43821 }50763 }
43822 fn memsid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {50764 fn memsid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
43823 return .{50765 return .{
43824 .tag = .mem,50766 .flags = .{ .tag = .mem },
43825 .base = base,50767 .base = base,
43826 .index = .{ .ref = index, .scale = scale },50768 .index = .{ .ref = index, .scale = scale },
43827 .imm = disp,50769 .imm = disp,
...@@ -43829,10 +50771,9 @@ const Select = struct {...@@ -43829,10 +50771,9 @@ const Select = struct {
43829 }50771 }
43830 fn memsiad(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {50772 fn memsiad(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
43831 return .{50773 return .{
43832 .tag = .mem,50774 .flags = .{ .tag = .mem, .adjust = adjust },
43833 .base = base,50775 .base = base,
43834 .index = .{ .ref = index, .scale = scale },50776 .index = .{ .ref = index, .scale = scale },
43835 .adjust = adjust,
43836 .imm = disp,50777 .imm = disp,
43837 };50778 };
43838 }50779 }
...@@ -43841,16 +50782,20 @@ const Select = struct {...@@ -43841,16 +50782,20 @@ const Select = struct {
43841 const UnsignedImm = @Type(.{50782 const UnsignedImm = @Type(.{
43842 .int = .{ .signedness = .unsigned, .bits = @typeInfo(SignedImm).int.bits },50783 .int = .{ .signedness = .unsigned, .bits = @typeInfo(SignedImm).int.bits },
43843 });50784 });
43844 const lhs: SignedImm = lhs: switch (op.adjust.lhs) {50785 const lhs: SignedImm = lhs: switch (op.flags.adjust.lhs) {
43845 .none => 0,50786 .none => 0,
43846 .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),50787 .ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),
43847 .ptr_bit_size => s.cg.target.ptrBitWidth(),50788 .ptr_bit_size => s.cg.target.ptrBitWidth(),
43848 .size => @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)),50789 .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)))),
43849 .size_sub_elem_size => {50794 .size_sub_elem_size => {
43850 const ty = op.base.ref.deref(s).typeOf(s.cg);50795 const ty = op.base.ref.deref(s).typeOf(s.cg);
43851 break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));50796 break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));
43852 },50797 },
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))),
43854 .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),50799 .bit_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),
43855 .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),50800 .src0_bit_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu)),
43856 .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)),50801 .len => @intCast(op.base.ref.deref(s).typeOf(s.cg).vectorLen(s.cg.pt.zcu)),
...@@ -43858,6 +50803,7 @@ const Select = struct {...@@ -43858,6 +50803,7 @@ const Select = struct {
43858 op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu),50803 op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).abiSize(s.cg.pt.zcu),
43859 @divExact(op.base.size.bitSize(s.cg.target), 8),50804 @divExact(op.base.size.bitSize(s.cg.target), 8),
43860 )),50805 )),
50806 .elem_size => @intCast(op.base.ref.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),
43861 .src0_elem_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),50807 .src0_elem_size => @intCast(Select.Operand.Ref.src0.deref(s).typeOf(s.cg).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)),
43862 .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) *50808 .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) *
43863 Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.immediate),50809 Select.Operand.Ref.src1.deref(s).tracking(s.cg).short.immediate),
...@@ -43872,8 +50818,8 @@ const Select = struct {...@@ -43872,8 +50818,8 @@ const Select = struct {
43872 -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),50818 -%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
43873 )),50819 )),
43874 };50820 };
43875 const rhs = op.adjust.rhs.toLog2();50821 const rhs = op.flags.adjust.rhs.toLog2();
43876 const res = res: switch (op.adjust.op) {50822 const res = res: switch (op.flags.adjust.op) {
43877 .mul => {50823 .mul => {
43878 const res = @shlWithOverflow(lhs, rhs);50824 const res = @shlWithOverflow(lhs, rhs);
43879 assert(res[1] == 0);50825 assert(res[1] == 0);
...@@ -43881,14 +50827,14 @@ const Select = struct {...@@ -43881,14 +50827,14 @@ const Select = struct {
43881 },50827 },
43882 .div => @shrExact(lhs, rhs),50828 .div => @shrExact(lhs, rhs),
43883 };50829 };
43884 return switch (op.adjust.sign) {50830 return switch (op.flags.adjust.sign) {
43885 .neg => op.imm - res,50831 .neg => op.imm - res,
43886 .pos => op.imm + res,50832 .pos => op.imm + res,
43887 };50833 };
43888 }50834 }
4388950835
43890 fn lower(op: Select.Operand, s: *Select) !CodeGen.Operand {50836 fn lower(op: Select.Operand, s: *Select) !CodeGen.Operand {
43891 return switch (op.tag) {50837 return switch (op.flags.tag) {
43892 .none => .none,50838 .none => .none,
43893 .backward_label => .{ .inst = s.labels[@intFromEnum(op.base.ref)].backward.? },50839 .backward_label => .{ .inst = s.labels[@intFromEnum(op.base.ref)].backward.? },
43894 .forward_label => for (&s.labels[@intFromEnum(op.base.ref)].forward) |*label| {50840 .forward_label => for (&s.labels[@intFromEnum(op.base.ref)].forward) |*label| {
...@@ -43945,11 +50891,11 @@ fn select(...@@ -43945,11 +50891,11 @@ fn select(
43945 @setEvalBranchQuota(33_600);50891 @setEvalBranchQuota(33_600);
43946 cases: for (cases) |case| {50892 cases: for (cases) |case| {
43947 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;50893 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;
43949 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;50894 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;
43950 if (std.debug.runtime_safety) {50896 if (std.debug.runtime_safety) {
43951 for (case.dst_constraints[dst_temps.len..]) |dst_constraint| assert(dst_constraint == .any);
43952 for (case.src_constraints[src_temps.len..]) |src_constraint| assert(src_constraint == .any);50897 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);
43953 }50899 }
43954 patterns: for (case.patterns) |pattern| {50900 patterns: for (case.patterns) |pattern| {
43955 for (pattern.src[0..src_temps.len], src_temps) |src_pattern, src_temp| if (!src_pattern.matches(src_temp, cg)) continue :patterns;50901 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,...@@ -3325,7 +3325,6 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,
3325 .bitcast => try airBitcast(f, inst),3325 .bitcast => try airBitcast(f, inst),
3326 .intcast => try airIntCast(f, inst),3326 .intcast => try airIntCast(f, inst),
3327 .trunc => try airTrunc(f, inst),3327 .trunc => try airTrunc(f, inst),
3328 .int_from_bool => try airIntFromBool(f, inst),
3329 .load => try airLoad(f, inst),3328 .load => try airLoad(f, inst),
3330 .store => try airStore(f, inst, false),3329 .store => try airStore(f, inst, false),
3331 .store_safe => try airStore(f, inst, true),3330 .store_safe => try airStore(f, inst, true),
...@@ -3371,8 +3370,6 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,...@@ -3371,8 +3370,6 @@ fn genBodyInner(f: *Function, body: []const Air.Inst.Index) error{ AnalysisFail,
3371 .fpext,3370 .fpext,
3372 => try airFloatCast(f, inst),3371 => try airFloatCast(f, inst),
33733372
3374 .int_from_ptr => try airIntFromPtr(f, inst),
3375
3376 .atomic_store_unordered => try airAtomicStore(f, inst, toMemoryOrder(.unordered)),3373 .atomic_store_unordered => try airAtomicStore(f, inst, toMemoryOrder(.unordered)),
3377 .atomic_store_monotonic => try airAtomicStore(f, inst, toMemoryOrder(.monotonic)),3374 .atomic_store_monotonic => try airAtomicStore(f, inst, toMemoryOrder(.monotonic)),
3378 .atomic_store_release => try airAtomicStore(f, inst, toMemoryOrder(.release)),3375 .atomic_store_release => try airAtomicStore(f, inst, toMemoryOrder(.release)),
...@@ -3983,21 +3980,6 @@ fn airTrunc(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -3983,21 +3980,6 @@ fn airTrunc(f: *Function, inst: Air.Inst.Index) !CValue {
3983 return local;3980 return local;
3984}3981}
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
4001fn airStore(f: *Function, inst: Air.Inst.Index, safety: bool) !CValue {3983fn airStore(f: *Function, inst: Air.Inst.Index, safety: bool) !CValue {
4002 const pt = f.object.dg.pt;3984 const pt = f.object.dg.pt;
4003 const zcu = pt.zcu;3985 const zcu = pt.zcu;
...@@ -4970,7 +4952,7 @@ fn bitcast(f: *Function, dest_ty: Type, operand: CValue, operand_ty: Type) !CVal...@@ -4970,7 +4952,7 @@ fn bitcast(f: *Function, dest_ty: Type, operand: CValue, operand_ty: Type) !CVal
4970 src_info.bits == dest_info.bits) return operand;4952 src_info.bits == dest_info.bits) return operand;
4971 }4953 }
49724954
4973 if (dest_ty.isPtrAtRuntime(zcu) and operand_ty.isPtrAtRuntime(zcu)) {4955 if (dest_ty.isPtrAtRuntime(zcu) or operand_ty.isPtrAtRuntime(zcu)) {
4974 const local = try f.allocLocal(null, dest_ty);4956 const local = try f.allocLocal(null, dest_ty);
4975 try f.writeCValue(writer, local, .Other);4957 try f.writeCValue(writer, local, .Other);
4976 try writer.writeAll(" = (");4958 try writer.writeAll(" = (");
...@@ -6455,30 +6437,6 @@ fn airFloatCast(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -6455,30 +6437,6 @@ fn airFloatCast(f: *Function, inst: Air.Inst.Index) !CValue {
6455 return local;6437 return local;
6456}6438}
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
6482fn airUnBuiltinCall(6440fn airUnBuiltinCall(
6483 f: *Function,6441 f: *Function,
6484 inst: Air.Inst.Index,6442 inst: Air.Inst.Index,
src/codegen/c/Type.zig+15
...@@ -1707,6 +1707,21 @@ pub const Pool = struct {...@@ -1707,6 +1707,21 @@ pub const Pool = struct {
1707 };1707 };
1708 return pool.fromFields(allocator, .@"struct", &fields, kind);1708 return pool.fromFields(allocator, .@"struct", &fields, kind);
1709 },1709 },
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 },
1710 .vector_4_f32_type => {1725 .vector_4_f32_type => {
1711 const vector_ctype = try pool.getVector(allocator, .{1726 const vector_ctype = try pool.getVector(allocator, .{
1712 .elem_ctype = .f32,1727 .elem_ctype = .f32,
src/codegen/llvm.zig+4-18
...@@ -5154,7 +5154,6 @@ pub const FuncGen = struct {...@@ -5154,7 +5154,6 @@ pub const FuncGen = struct {
5154 .ret_ptr => try self.airRetPtr(inst),5154 .ret_ptr => try self.airRetPtr(inst),
5155 .arg => try self.airArg(inst),5155 .arg => try self.airArg(inst),
5156 .bitcast => try self.airBitCast(inst),5156 .bitcast => try self.airBitCast(inst),
5157 .int_from_bool => try self.airIntFromBool(inst),
5158 .breakpoint => try self.airBreakpoint(inst),5157 .breakpoint => try self.airBreakpoint(inst),
5159 .ret_addr => try self.airRetAddr(inst),5158 .ret_addr => try self.airRetAddr(inst),
5160 .frame_addr => try self.airFrameAddress(inst),5159 .frame_addr => try self.airFrameAddress(inst),
...@@ -5167,7 +5166,6 @@ pub const FuncGen = struct {...@@ -5167,7 +5166,6 @@ pub const FuncGen = struct {
5167 .trunc => try self.airTrunc(inst),5166 .trunc => try self.airTrunc(inst),
5168 .fptrunc => try self.airFptrunc(inst),5167 .fptrunc => try self.airFptrunc(inst),
5169 .fpext => try self.airFpext(inst),5168 .fpext => try self.airFpext(inst),
5170 .int_from_ptr => try self.airIntFromPtr(inst),
5171 .load => try self.airLoad(body[i..]),5169 .load => try self.airLoad(body[i..]),
5172 .not => try self.airNot(inst),5170 .not => try self.airNot(inst),
5173 .store => try self.airStore(inst, false),5171 .store => try self.airStore(inst, false),
...@@ -9435,16 +9433,6 @@ pub const FuncGen = struct {...@@ -9435,16 +9433,6 @@ pub const FuncGen = struct {
9435 }9433 }
9436 }9434 }
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
9448 fn airBitCast(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {9436 fn airBitCast(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
9449 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;9437 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
9450 const operand_ty = self.typeOf(ty_op.operand);9438 const operand_ty = self.typeOf(ty_op.operand);
...@@ -9476,6 +9464,10 @@ pub const FuncGen = struct {...@@ -9476,6 +9464,10 @@ pub const FuncGen = struct {
9476 return self.wip.cast(.inttoptr, operand, llvm_dest_ty, "");9464 return self.wip.cast(.inttoptr, operand, llvm_dest_ty, "");
9477 }9465 }
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
9479 if (operand_ty.zigTypeTag(zcu) == .vector and inst_ty.zigTypeTag(zcu) == .array) {9471 if (operand_ty.zigTypeTag(zcu) == .vector and inst_ty.zigTypeTag(zcu) == .array) {
9480 const elem_ty = operand_ty.childType(zcu);9472 const elem_ty = operand_ty.childType(zcu);
9481 if (!result_is_ref) {9473 if (!result_is_ref) {
...@@ -9564,12 +9556,6 @@ pub const FuncGen = struct {...@@ -9564,12 +9556,6 @@ pub const FuncGen = struct {
9564 return self.wip.cast(.bitcast, operand, llvm_dest_ty, "");9556 return self.wip.cast(.bitcast, operand, llvm_dest_ty, "");
9565 }9557 }
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
9573 fn airArg(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {9559 fn airArg(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
9574 const o = self.ng.object;9560 const o = self.ng.object;
9575 const pt = o.pt;9561 const pt = o.pt;
src/codegen/spirv.zig+6-16
...@@ -3449,10 +3449,8 @@ const NavGen = struct {...@@ -3449,10 +3449,8 @@ const NavGen = struct {
34493449
3450 .bitcast => try self.airBitCast(inst),3450 .bitcast => try self.airBitCast(inst),
3451 .intcast, .trunc => try self.airIntCast(inst),3451 .intcast, .trunc => try self.airIntCast(inst),
3452 .int_from_ptr => try self.airIntFromPtr(inst),
3453 .float_from_int => try self.airFloatFromInt(inst),3452 .float_from_int => try self.airFloatFromInt(inst),
3454 .int_from_float => try self.airIntFromFloat(inst),3453 .int_from_float => try self.airIntFromFloat(inst),
3455 .int_from_bool => try self.airIntFromBool(inst),
3456 .fpext, .fptrunc => try self.airFloatCast(inst),3454 .fpext, .fptrunc => try self.airFloatCast(inst),
3457 .not => try self.airNot(inst),3455 .not => try self.airNot(inst),
34583456
...@@ -4706,9 +4704,14 @@ const NavGen = struct {...@@ -4706,9 +4704,14 @@ const NavGen = struct {
47064704
4707 fn airBitCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {4705 fn airBitCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4708 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;4706 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
4709 const operand_id = try self.resolve(ty_op.operand);
4710 const operand_ty = self.typeOf(ty_op.operand);4707 const operand_ty = self.typeOf(ty_op.operand);
4711 const result_ty = self.typeOfIndex(inst);4708 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);
4712 return try self.bitCast(result_ty, operand_ty, operand_id);4715 return try self.bitCast(result_ty, operand_ty, operand_id);
4713 }4716 }
47144717
...@@ -4749,12 +4752,6 @@ const NavGen = struct {...@@ -4749,12 +4752,6 @@ const NavGen = struct {
4749 return result_id;4752 return result_id;
4750 }4753 }
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
4758 fn airFloatFromInt(self: *NavGen, inst: Air.Inst.Index) !?IdRef {4755 fn airFloatFromInt(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4759 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;4756 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
4760 const operand_ty = self.typeOf(ty_op.operand);4757 const operand_ty = self.typeOf(ty_op.operand);
...@@ -4808,13 +4805,6 @@ const NavGen = struct {...@@ -4808,13 +4805,6 @@ const NavGen = struct {
4808 return result_id;4805 return result_id;
4809 }4806 }
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
4818 fn airFloatCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {4808 fn airFloatCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4819 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;4809 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
4820 const operand_id = try self.resolve(ty_op.operand);4810 const operand_id = try self.resolve(ty_op.operand);
src/print_air.zig-2
...@@ -172,8 +172,6 @@ const Writer = struct {...@@ -172,8 +172,6 @@ const Writer = struct {
172 .is_non_err,172 .is_non_err,
173 .is_err_ptr,173 .is_err_ptr,
174 .is_non_err_ptr,174 .is_non_err_ptr,
175 .int_from_ptr,
176 .int_from_bool,
177 .ret,175 .ret,
178 .ret_safe,176 .ret_safe,
179 .ret_load,177 .ret_load,
src/target.zig+3
...@@ -745,5 +745,8 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt...@@ -745,5 +745,8 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt
745 .stage2_llvm => false,745 .stage2_llvm => false,
746 else => true,746 else => true,
747 },747 },
748 .all_vector_instructions => switch (backend) {
749 else => false,
750 },
748 };751 };
749}752}
test/behavior/maximum_minimum.zig+3-4
...@@ -203,8 +203,8 @@ test "@min/@max notices vector bounds" {...@@ -203,8 +203,8 @@ test "@min/@max notices vector bounds" {
203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
207 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;206 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
209 var x: @Vector(2, u16) = .{ 140, 40 };209 var x: @Vector(2, u16) = .{ 140, 40 };
210 const y: @Vector(2, u64) = .{ 5, 100 };210 const y: @Vector(2, u64) = .{ 5, 100 };
...@@ -257,8 +257,8 @@ test "@min/@max notices bounds from vector types" {...@@ -257,8 +257,8 @@ test "@min/@max notices bounds from vector types" {
257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;260 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
263 var x: @Vector(2, u16) = .{ 30, 67 };263 var x: @Vector(2, u16) = .{ 30, 67 };
264 var y: @Vector(2, u32) = .{ 20, 500 };264 var y: @Vector(2, u32) = .{ 20, 500 };
...@@ -301,8 +301,7 @@ test "@min/@max notices bounds from vector types when element of comptime-known...@@ -301,8 +301,7 @@ test "@min/@max notices bounds from vector types when element of comptime-known
301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;303 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
304 if (builtin.zig_backend == .stage2_x86_64 and304 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
305 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
306305
307 var x: @Vector(2, u32) = .{ 1_000_000, 12345 };306 var x: @Vector(2, u32) = .{ 1_000_000, 12345 };
308 _ = &x;307 _ = &x;
test/behavior/x86_64/math.zig+6749-1198
...@@ -24,27 +24,32 @@ inline fn runtime(comptime Type: type, comptime value: Type) Type {...@@ -24,27 +24,32 @@ inline fn runtime(comptime Type: type, comptime value: Type) Type {
24 }.variable;24 }.variable;
25}25}
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}
27fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {40fn sign(rhs: anytype) switch (@typeInfo(@TypeOf(rhs))) {
28 else => bool,41 else => bool,
29 .vector => |vector| @Vector(vector.len, bool),42 .vector => |vector| @Vector(vector.len, bool),
30} {43} {
31 switch (@typeInfo(@TypeOf(rhs))) {44 const ScalarInt = @Type(.{ .int = .{
32 else => {45 .signedness = .unsigned,
33 const I = @Type(.{ .int = .{46 .bits = @bitSizeOf(Scalar(@TypeOf(rhs))),
34 .signedness = .unsigned,47 } });
35 .bits = @bitSizeOf(@TypeOf(rhs)),48 const VectorInt = switch (@typeInfo(@TypeOf(rhs))) {
36 } });49 else => ScalarInt,
37 return @as(I, @bitCast(rhs)) & @as(I, 1) << (@bitSizeOf(I) - 1) != 0;50 .vector => |vector| @Vector(vector.len, ScalarInt),
38 },51 };
39 .vector => |vector| {52 return @as(VectorInt, @bitCast(rhs)) & splat(VectorInt, @as(ScalarInt, 1) << @bitSizeOf(ScalarInt) - 1) != splat(VectorInt, 0);
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 }
48}53}
49fn boolAnd(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {54fn boolAnd(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
50 switch (@typeInfo(@TypeOf(lhs))) {55 switch (@typeInfo(@TypeOf(lhs))) {
...@@ -650,18 +655,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -650,18 +655,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
650 try testArgs(f16, -nan(f16));655 try testArgs(f16, -nan(f16));
651 try testArgs(f16, -inf(f16));656 try testArgs(f16, -inf(f16));
652 try testArgs(f16, -fmax(f16));657 try testArgs(f16, -fmax(f16));
653 try testArgs(f16, -10.0);658 try testArgs(f16, -1e1);
654 try testArgs(f16, -1.0);659 try testArgs(f16, -1e0);
655 try testArgs(f16, -0.1);660 try testArgs(f16, -1e-1);
656 try testArgs(f16, -fmin(f16));661 try testArgs(f16, -fmin(f16));
657 try testArgs(f16, -tmin(f16));662 try testArgs(f16, -tmin(f16));
658 try testArgs(f16, -0.0);663 try testArgs(f16, -0.0);
659 try testArgs(f16, 0.0);664 try testArgs(f16, 0.0);
660 try testArgs(f16, tmin(f16));665 try testArgs(f16, tmin(f16));
661 try testArgs(f16, fmin(f16));666 try testArgs(f16, fmin(f16));
662 try testArgs(f16, 0.1);667 try testArgs(f16, 1e-1);
663 try testArgs(f16, 1.0);668 try testArgs(f16, 1e0);
664 try testArgs(f16, 10.0);669 try testArgs(f16, 1e1);
665 try testArgs(f16, fmax(f16));670 try testArgs(f16, fmax(f16));
666 try testArgs(f16, inf(f16));671 try testArgs(f16, inf(f16));
667 try testArgs(f16, nan(f16));672 try testArgs(f16, nan(f16));
...@@ -669,18 +674,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -669,18 +674,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
669 try testArgs(f32, -nan(f32));674 try testArgs(f32, -nan(f32));
670 try testArgs(f32, -inf(f32));675 try testArgs(f32, -inf(f32));
671 try testArgs(f32, -fmax(f32));676 try testArgs(f32, -fmax(f32));
672 try testArgs(f32, -10.0);677 try testArgs(f32, -1e1);
673 try testArgs(f32, -1.0);678 try testArgs(f32, -1e0);
674 try testArgs(f32, -0.1);679 try testArgs(f32, -1e-1);
675 try testArgs(f32, -fmin(f32));680 try testArgs(f32, -fmin(f32));
676 try testArgs(f32, -tmin(f32));681 try testArgs(f32, -tmin(f32));
677 try testArgs(f32, -0.0);682 try testArgs(f32, -0.0);
678 try testArgs(f32, 0.0);683 try testArgs(f32, 0.0);
679 try testArgs(f32, tmin(f32));684 try testArgs(f32, tmin(f32));
680 try testArgs(f32, fmin(f32));685 try testArgs(f32, fmin(f32));
681 try testArgs(f32, 0.1);686 try testArgs(f32, 1e-1);
682 try testArgs(f32, 1.0);687 try testArgs(f32, 1e0);
683 try testArgs(f32, 10.0);688 try testArgs(f32, 1e1);
684 try testArgs(f32, fmax(f32));689 try testArgs(f32, fmax(f32));
685 try testArgs(f32, inf(f32));690 try testArgs(f32, inf(f32));
686 try testArgs(f32, nan(f32));691 try testArgs(f32, nan(f32));
...@@ -688,18 +693,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -688,18 +693,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
688 try testArgs(f64, -nan(f64));693 try testArgs(f64, -nan(f64));
689 try testArgs(f64, -inf(f64));694 try testArgs(f64, -inf(f64));
690 try testArgs(f64, -fmax(f64));695 try testArgs(f64, -fmax(f64));
691 try testArgs(f64, -10.0);696 try testArgs(f64, -1e1);
692 try testArgs(f64, -1.0);697 try testArgs(f64, -1e0);
693 try testArgs(f64, -0.1);698 try testArgs(f64, -1e-1);
694 try testArgs(f64, -fmin(f64));699 try testArgs(f64, -fmin(f64));
695 try testArgs(f64, -tmin(f64));700 try testArgs(f64, -tmin(f64));
696 try testArgs(f64, -0.0);701 try testArgs(f64, -0.0);
697 try testArgs(f64, 0.0);702 try testArgs(f64, 0.0);
698 try testArgs(f64, tmin(f64));703 try testArgs(f64, tmin(f64));
699 try testArgs(f64, fmin(f64));704 try testArgs(f64, fmin(f64));
700 try testArgs(f64, 0.1);705 try testArgs(f64, 1e-1);
701 try testArgs(f64, 1.0);706 try testArgs(f64, 1e0);
702 try testArgs(f64, 10.0);707 try testArgs(f64, 1e1);
703 try testArgs(f64, fmax(f64));708 try testArgs(f64, fmax(f64));
704 try testArgs(f64, inf(f64));709 try testArgs(f64, inf(f64));
705 try testArgs(f64, nan(f64));710 try testArgs(f64, nan(f64));
...@@ -707,18 +712,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -707,18 +712,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
707 try testArgs(f80, -nan(f80));712 try testArgs(f80, -nan(f80));
708 try testArgs(f80, -inf(f80));713 try testArgs(f80, -inf(f80));
709 try testArgs(f80, -fmax(f80));714 try testArgs(f80, -fmax(f80));
710 try testArgs(f80, -10.0);715 try testArgs(f80, -1e1);
711 try testArgs(f80, -1.0);716 try testArgs(f80, -1e0);
712 try testArgs(f80, -0.1);717 try testArgs(f80, -1e-1);
713 try testArgs(f80, -fmin(f80));718 try testArgs(f80, -fmin(f80));
714 try testArgs(f80, -tmin(f80));719 try testArgs(f80, -tmin(f80));
715 try testArgs(f80, -0.0);720 try testArgs(f80, -0.0);
716 try testArgs(f80, 0.0);721 try testArgs(f80, 0.0);
717 try testArgs(f80, tmin(f80));722 try testArgs(f80, tmin(f80));
718 try testArgs(f80, fmin(f80));723 try testArgs(f80, fmin(f80));
719 try testArgs(f80, 0.1);724 try testArgs(f80, 1e-1);
720 try testArgs(f80, 1.0);725 try testArgs(f80, 1e0);
721 try testArgs(f80, 10.0);726 try testArgs(f80, 1e1);
722 try testArgs(f80, fmax(f80));727 try testArgs(f80, fmax(f80));
723 try testArgs(f80, inf(f80));728 try testArgs(f80, inf(f80));
724 try testArgs(f80, nan(f80));729 try testArgs(f80, nan(f80));
...@@ -726,18 +731,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -726,18 +731,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
726 try testArgs(f128, -nan(f128));731 try testArgs(f128, -nan(f128));
727 try testArgs(f128, -inf(f128));732 try testArgs(f128, -inf(f128));
728 try testArgs(f128, -fmax(f128));733 try testArgs(f128, -fmax(f128));
729 try testArgs(f128, -10.0);734 try testArgs(f128, -1e1);
730 try testArgs(f128, -1.0);735 try testArgs(f128, -1e0);
731 try testArgs(f128, -0.1);736 try testArgs(f128, -1e-1);
732 try testArgs(f128, -fmin(f128));737 try testArgs(f128, -fmin(f128));
733 try testArgs(f128, -tmin(f128));738 try testArgs(f128, -tmin(f128));
734 try testArgs(f128, -0.0);739 try testArgs(f128, -0.0);
735 try testArgs(f128, 0.0);740 try testArgs(f128, 0.0);
736 try testArgs(f128, tmin(f128));741 try testArgs(f128, tmin(f128));
737 try testArgs(f128, fmin(f128));742 try testArgs(f128, fmin(f128));
738 try testArgs(f128, 0.1);743 try testArgs(f128, 1e-1);
739 try testArgs(f128, 1.0);744 try testArgs(f128, 1e0);
740 try testArgs(f128, 10.0);745 try testArgs(f128, 1e1);
741 try testArgs(f128, fmax(f128));746 try testArgs(f128, fmax(f128));
742 try testArgs(f128, inf(f128));747 try testArgs(f128, inf(f128));
743 try testArgs(f128, nan(f128));748 try testArgs(f128, nan(f128));
...@@ -1623,6 +1628,5493 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t...@@ -1623,6 +1628,5493 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
1623 };1628 };
1624}1629}
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
1626fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {7118fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
1627 return struct {7119 return struct {
1628 // noinline so that `mem_lhs` and `mem_rhs` are on the stack7120 // 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 })...@@ -1714,18 +7206,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1714 try testArgs(f16, -nan(f16), -nan(f16));7206 try testArgs(f16, -nan(f16), -nan(f16));
1715 try testArgs(f16, -nan(f16), -inf(f16));7207 try testArgs(f16, -nan(f16), -inf(f16));
1716 try testArgs(f16, -nan(f16), -fmax(f16));7208 try testArgs(f16, -nan(f16), -fmax(f16));
1717 try testArgs(f16, -nan(f16), -10.0);7209 try testArgs(f16, -nan(f16), -1e1);
1718 try testArgs(f16, -nan(f16), -1.0);7210 try testArgs(f16, -nan(f16), -1e0);
1719 try testArgs(f16, -nan(f16), -0.1);7211 try testArgs(f16, -nan(f16), -1e-1);
1720 try testArgs(f16, -nan(f16), -fmin(f16));7212 try testArgs(f16, -nan(f16), -fmin(f16));
1721 try testArgs(f16, -nan(f16), -tmin(f16));7213 try testArgs(f16, -nan(f16), -tmin(f16));
1722 try testArgs(f16, -nan(f16), -0.0);7214 try testArgs(f16, -nan(f16), -0.0);
1723 try testArgs(f16, -nan(f16), 0.0);7215 try testArgs(f16, -nan(f16), 0.0);
1724 try testArgs(f16, -nan(f16), tmin(f16));7216 try testArgs(f16, -nan(f16), tmin(f16));
1725 try testArgs(f16, -nan(f16), fmin(f16));7217 try testArgs(f16, -nan(f16), fmin(f16));
1726 try testArgs(f16, -nan(f16), 0.1);7218 try testArgs(f16, -nan(f16), 1e-1);
1727 try testArgs(f16, -nan(f16), 1.0);7219 try testArgs(f16, -nan(f16), 1e0);
1728 try testArgs(f16, -nan(f16), 10.0);7220 try testArgs(f16, -nan(f16), 1e1);
1729 try testArgs(f16, -nan(f16), fmax(f16));7221 try testArgs(f16, -nan(f16), fmax(f16));
1730 try testArgs(f16, -nan(f16), inf(f16));7222 try testArgs(f16, -nan(f16), inf(f16));
1731 try testArgs(f16, -nan(f16), nan(f16));7223 try testArgs(f16, -nan(f16), nan(f16));
...@@ -1733,18 +7225,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1733,18 +7225,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1733 try testArgs(f16, -inf(f16), -nan(f16));7225 try testArgs(f16, -inf(f16), -nan(f16));
1734 try testArgs(f16, -inf(f16), -inf(f16));7226 try testArgs(f16, -inf(f16), -inf(f16));
1735 try testArgs(f16, -inf(f16), -fmax(f16));7227 try testArgs(f16, -inf(f16), -fmax(f16));
1736 try testArgs(f16, -inf(f16), -10.0);7228 try testArgs(f16, -inf(f16), -1e1);
1737 try testArgs(f16, -inf(f16), -1.0);7229 try testArgs(f16, -inf(f16), -1e0);
1738 try testArgs(f16, -inf(f16), -0.1);7230 try testArgs(f16, -inf(f16), -1e-1);
1739 try testArgs(f16, -inf(f16), -fmin(f16));7231 try testArgs(f16, -inf(f16), -fmin(f16));
1740 try testArgs(f16, -inf(f16), -tmin(f16));7232 try testArgs(f16, -inf(f16), -tmin(f16));
1741 try testArgs(f16, -inf(f16), -0.0);7233 try testArgs(f16, -inf(f16), -0.0);
1742 try testArgs(f16, -inf(f16), 0.0);7234 try testArgs(f16, -inf(f16), 0.0);
1743 try testArgs(f16, -inf(f16), tmin(f16));7235 try testArgs(f16, -inf(f16), tmin(f16));
1744 try testArgs(f16, -inf(f16), fmin(f16));7236 try testArgs(f16, -inf(f16), fmin(f16));
1745 try testArgs(f16, -inf(f16), 0.1);7237 try testArgs(f16, -inf(f16), 1e-1);
1746 try testArgs(f16, -inf(f16), 1.0);7238 try testArgs(f16, -inf(f16), 1e0);
1747 try testArgs(f16, -inf(f16), 10.0);7239 try testArgs(f16, -inf(f16), 1e1);
1748 try testArgs(f16, -inf(f16), fmax(f16));7240 try testArgs(f16, -inf(f16), fmax(f16));
1749 try testArgs(f16, -inf(f16), inf(f16));7241 try testArgs(f16, -inf(f16), inf(f16));
1750 try testArgs(f16, -inf(f16), nan(f16));7242 try testArgs(f16, -inf(f16), nan(f16));
...@@ -1752,94 +7244,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1752,94 +7244,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1752 try testArgs(f16, -fmax(f16), -nan(f16));7244 try testArgs(f16, -fmax(f16), -nan(f16));
1753 try testArgs(f16, -fmax(f16), -inf(f16));7245 try testArgs(f16, -fmax(f16), -inf(f16));
1754 try testArgs(f16, -fmax(f16), -fmax(f16));7246 try testArgs(f16, -fmax(f16), -fmax(f16));
1755 try testArgs(f16, -fmax(f16), -10.0);7247 try testArgs(f16, -fmax(f16), -1e1);
1756 try testArgs(f16, -fmax(f16), -1.0);7248 try testArgs(f16, -fmax(f16), -1e0);
1757 try testArgs(f16, -fmax(f16), -0.1);7249 try testArgs(f16, -fmax(f16), -1e-1);
1758 try testArgs(f16, -fmax(f16), -fmin(f16));7250 try testArgs(f16, -fmax(f16), -fmin(f16));
1759 try testArgs(f16, -fmax(f16), -tmin(f16));7251 try testArgs(f16, -fmax(f16), -tmin(f16));
1760 try testArgs(f16, -fmax(f16), -0.0);7252 try testArgs(f16, -fmax(f16), -0.0);
1761 try testArgs(f16, -fmax(f16), 0.0);7253 try testArgs(f16, -fmax(f16), 0.0);
1762 try testArgs(f16, -fmax(f16), tmin(f16));7254 try testArgs(f16, -fmax(f16), tmin(f16));
1763 try testArgs(f16, -fmax(f16), fmin(f16));7255 try testArgs(f16, -fmax(f16), fmin(f16));
1764 try testArgs(f16, -fmax(f16), 0.1);7256 try testArgs(f16, -fmax(f16), 1e-1);
1765 try testArgs(f16, -fmax(f16), 1.0);7257 try testArgs(f16, -fmax(f16), 1e0);
1766 try testArgs(f16, -fmax(f16), 10.0);7258 try testArgs(f16, -fmax(f16), 1e1);
1767 try testArgs(f16, -fmax(f16), fmax(f16));7259 try testArgs(f16, -fmax(f16), fmax(f16));
1768 try testArgs(f16, -fmax(f16), inf(f16));7260 try testArgs(f16, -fmax(f16), inf(f16));
1769 try testArgs(f16, -fmax(f16), nan(f16));7261 try testArgs(f16, -fmax(f16), nan(f16));
17707262
1771 try testArgs(f16, -10.0, -nan(f16));7263 try testArgs(f16, -1e1, -nan(f16));
1772 try testArgs(f16, -10.0, -inf(f16));7264 try testArgs(f16, -1e1, -inf(f16));
1773 try testArgs(f16, -10.0, -fmax(f16));7265 try testArgs(f16, -1e1, -fmax(f16));
1774 try testArgs(f16, -10.0, -10.0);7266 try testArgs(f16, -1e1, -1e1);
1775 try testArgs(f16, -10.0, -1.0);7267 try testArgs(f16, -1e1, -1e0);
1776 try testArgs(f16, -10.0, -0.1);7268 try testArgs(f16, -1e1, -1e-1);
1777 try testArgs(f16, -10.0, -fmin(f16));7269 try testArgs(f16, -1e1, -fmin(f16));
1778 try testArgs(f16, -10.0, -tmin(f16));7270 try testArgs(f16, -1e1, -tmin(f16));
1779 try testArgs(f16, -10.0, -0.0);7271 try testArgs(f16, -1e1, -0.0);
1780 try testArgs(f16, -10.0, 0.0);7272 try testArgs(f16, -1e1, 0.0);
1781 try testArgs(f16, -10.0, tmin(f16));7273 try testArgs(f16, -1e1, tmin(f16));
1782 try testArgs(f16, -10.0, fmin(f16));7274 try testArgs(f16, -1e1, fmin(f16));
1783 try testArgs(f16, -10.0, 0.1);7275 try testArgs(f16, -1e1, 1e-1);
1784 try testArgs(f16, -10.0, 1.0);7276 try testArgs(f16, -1e1, 1e0);
1785 try testArgs(f16, -10.0, 10.0);7277 try testArgs(f16, -1e1, 1e1);
1786 try testArgs(f16, -10.0, fmax(f16));7278 try testArgs(f16, -1e1, fmax(f16));
1787 try testArgs(f16, -10.0, inf(f16));7279 try testArgs(f16, -1e1, inf(f16));
1788 try testArgs(f16, -10.0, nan(f16));7280 try testArgs(f16, -1e1, nan(f16));
17897281
1790 try testArgs(f16, -1.0, -nan(f16));7282 try testArgs(f16, -1e0, -nan(f16));
1791 try testArgs(f16, -1.0, -inf(f16));7283 try testArgs(f16, -1e0, -inf(f16));
1792 try testArgs(f16, -1.0, -fmax(f16));7284 try testArgs(f16, -1e0, -fmax(f16));
1793 try testArgs(f16, -1.0, -10.0);7285 try testArgs(f16, -1e0, -1e1);
1794 try testArgs(f16, -1.0, -1.0);7286 try testArgs(f16, -1e0, -1e0);
1795 try testArgs(f16, -1.0, -0.1);7287 try testArgs(f16, -1e0, -1e-1);
1796 try testArgs(f16, -1.0, -fmin(f16));7288 try testArgs(f16, -1e0, -fmin(f16));
1797 try testArgs(f16, -1.0, -tmin(f16));7289 try testArgs(f16, -1e0, -tmin(f16));
1798 try testArgs(f16, -1.0, -0.0);7290 try testArgs(f16, -1e0, -0.0);
1799 try testArgs(f16, -1.0, 0.0);7291 try testArgs(f16, -1e0, 0.0);
1800 try testArgs(f16, -1.0, tmin(f16));7292 try testArgs(f16, -1e0, tmin(f16));
1801 try testArgs(f16, -1.0, fmin(f16));7293 try testArgs(f16, -1e0, fmin(f16));
1802 try testArgs(f16, -1.0, 0.1);7294 try testArgs(f16, -1e0, 1e-1);
1803 try testArgs(f16, -1.0, 1.0);7295 try testArgs(f16, -1e0, 1e0);
1804 try testArgs(f16, -1.0, 10.0);7296 try testArgs(f16, -1e0, 1e1);
1805 try testArgs(f16, -1.0, fmax(f16));7297 try testArgs(f16, -1e0, fmax(f16));
1806 try testArgs(f16, -1.0, inf(f16));7298 try testArgs(f16, -1e0, inf(f16));
1807 try testArgs(f16, -1.0, nan(f16));7299 try testArgs(f16, -1e0, nan(f16));
18087300
1809 try testArgs(f16, -0.1, -nan(f16));7301 try testArgs(f16, -1e-1, -nan(f16));
1810 try testArgs(f16, -0.1, -inf(f16));7302 try testArgs(f16, -1e-1, -inf(f16));
1811 try testArgs(f16, -0.1, -fmax(f16));7303 try testArgs(f16, -1e-1, -fmax(f16));
1812 try testArgs(f16, -0.1, -10.0);7304 try testArgs(f16, -1e-1, -1e1);
1813 try testArgs(f16, -0.1, -1.0);7305 try testArgs(f16, -1e-1, -1e0);
1814 try testArgs(f16, -0.1, -0.1);7306 try testArgs(f16, -1e-1, -1e-1);
1815 try testArgs(f16, -0.1, -fmin(f16));7307 try testArgs(f16, -1e-1, -fmin(f16));
1816 try testArgs(f16, -0.1, -tmin(f16));7308 try testArgs(f16, -1e-1, -tmin(f16));
1817 try testArgs(f16, -0.1, -0.0);7309 try testArgs(f16, -1e-1, -0.0);
1818 try testArgs(f16, -0.1, 0.0);7310 try testArgs(f16, -1e-1, 0.0);
1819 try testArgs(f16, -0.1, tmin(f16));7311 try testArgs(f16, -1e-1, tmin(f16));
1820 try testArgs(f16, -0.1, fmin(f16));7312 try testArgs(f16, -1e-1, fmin(f16));
1821 try testArgs(f16, -0.1, 0.1);7313 try testArgs(f16, -1e-1, 1e-1);
1822 try testArgs(f16, -0.1, 1.0);7314 try testArgs(f16, -1e-1, 1e0);
1823 try testArgs(f16, -0.1, 10.0);7315 try testArgs(f16, -1e-1, 1e1);
1824 try testArgs(f16, -0.1, fmax(f16));7316 try testArgs(f16, -1e-1, fmax(f16));
1825 try testArgs(f16, -0.1, inf(f16));7317 try testArgs(f16, -1e-1, inf(f16));
1826 try testArgs(f16, -0.1, nan(f16));7318 try testArgs(f16, -1e-1, nan(f16));
18277319
1828 try testArgs(f16, -fmin(f16), -nan(f16));7320 try testArgs(f16, -fmin(f16), -nan(f16));
1829 try testArgs(f16, -fmin(f16), -inf(f16));7321 try testArgs(f16, -fmin(f16), -inf(f16));
1830 try testArgs(f16, -fmin(f16), -fmax(f16));7322 try testArgs(f16, -fmin(f16), -fmax(f16));
1831 try testArgs(f16, -fmin(f16), -10.0);7323 try testArgs(f16, -fmin(f16), -1e1);
1832 try testArgs(f16, -fmin(f16), -1.0);7324 try testArgs(f16, -fmin(f16), -1e0);
1833 try testArgs(f16, -fmin(f16), -0.1);7325 try testArgs(f16, -fmin(f16), -1e-1);
1834 try testArgs(f16, -fmin(f16), -fmin(f16));7326 try testArgs(f16, -fmin(f16), -fmin(f16));
1835 try testArgs(f16, -fmin(f16), -tmin(f16));7327 try testArgs(f16, -fmin(f16), -tmin(f16));
1836 try testArgs(f16, -fmin(f16), -0.0);7328 try testArgs(f16, -fmin(f16), -0.0);
1837 try testArgs(f16, -fmin(f16), 0.0);7329 try testArgs(f16, -fmin(f16), 0.0);
1838 try testArgs(f16, -fmin(f16), tmin(f16));7330 try testArgs(f16, -fmin(f16), tmin(f16));
1839 try testArgs(f16, -fmin(f16), fmin(f16));7331 try testArgs(f16, -fmin(f16), fmin(f16));
1840 try testArgs(f16, -fmin(f16), 0.1);7332 try testArgs(f16, -fmin(f16), 1e-1);
1841 try testArgs(f16, -fmin(f16), 1.0);7333 try testArgs(f16, -fmin(f16), 1e0);
1842 try testArgs(f16, -fmin(f16), 10.0);7334 try testArgs(f16, -fmin(f16), 1e1);
1843 try testArgs(f16, -fmin(f16), fmax(f16));7335 try testArgs(f16, -fmin(f16), fmax(f16));
1844 try testArgs(f16, -fmin(f16), inf(f16));7336 try testArgs(f16, -fmin(f16), inf(f16));
1845 try testArgs(f16, -fmin(f16), nan(f16));7337 try testArgs(f16, -fmin(f16), nan(f16));
...@@ -1847,18 +7339,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1847,18 +7339,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1847 try testArgs(f16, -tmin(f16), -nan(f16));7339 try testArgs(f16, -tmin(f16), -nan(f16));
1848 try testArgs(f16, -tmin(f16), -inf(f16));7340 try testArgs(f16, -tmin(f16), -inf(f16));
1849 try testArgs(f16, -tmin(f16), -fmax(f16));7341 try testArgs(f16, -tmin(f16), -fmax(f16));
1850 try testArgs(f16, -tmin(f16), -10.0);7342 try testArgs(f16, -tmin(f16), -1e1);
1851 try testArgs(f16, -tmin(f16), -1.0);7343 try testArgs(f16, -tmin(f16), -1e0);
1852 try testArgs(f16, -tmin(f16), -0.1);7344 try testArgs(f16, -tmin(f16), -1e-1);
1853 try testArgs(f16, -tmin(f16), -fmin(f16));7345 try testArgs(f16, -tmin(f16), -fmin(f16));
1854 try testArgs(f16, -tmin(f16), -tmin(f16));7346 try testArgs(f16, -tmin(f16), -tmin(f16));
1855 try testArgs(f16, -tmin(f16), -0.0);7347 try testArgs(f16, -tmin(f16), -0.0);
1856 try testArgs(f16, -tmin(f16), 0.0);7348 try testArgs(f16, -tmin(f16), 0.0);
1857 try testArgs(f16, -tmin(f16), tmin(f16));7349 try testArgs(f16, -tmin(f16), tmin(f16));
1858 try testArgs(f16, -tmin(f16), fmin(f16));7350 try testArgs(f16, -tmin(f16), fmin(f16));
1859 try testArgs(f16, -tmin(f16), 0.1);7351 try testArgs(f16, -tmin(f16), 1e-1);
1860 try testArgs(f16, -tmin(f16), 1.0);7352 try testArgs(f16, -tmin(f16), 1e0);
1861 try testArgs(f16, -tmin(f16), 10.0);7353 try testArgs(f16, -tmin(f16), 1e1);
1862 try testArgs(f16, -tmin(f16), fmax(f16));7354 try testArgs(f16, -tmin(f16), fmax(f16));
1863 try testArgs(f16, -tmin(f16), inf(f16));7355 try testArgs(f16, -tmin(f16), inf(f16));
1864 try testArgs(f16, -tmin(f16), nan(f16));7356 try testArgs(f16, -tmin(f16), nan(f16));
...@@ -1866,18 +7358,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1866,18 +7358,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1866 try testArgs(f16, -0.0, -nan(f16));7358 try testArgs(f16, -0.0, -nan(f16));
1867 try testArgs(f16, -0.0, -inf(f16));7359 try testArgs(f16, -0.0, -inf(f16));
1868 try testArgs(f16, -0.0, -fmax(f16));7360 try testArgs(f16, -0.0, -fmax(f16));
1869 try testArgs(f16, -0.0, -10.0);7361 try testArgs(f16, -0.0, -1e1);
1870 try testArgs(f16, -0.0, -1.0);7362 try testArgs(f16, -0.0, -1e0);
1871 try testArgs(f16, -0.0, -0.1);7363 try testArgs(f16, -0.0, -1e-1);
1872 try testArgs(f16, -0.0, -fmin(f16));7364 try testArgs(f16, -0.0, -fmin(f16));
1873 try testArgs(f16, -0.0, -tmin(f16));7365 try testArgs(f16, -0.0, -tmin(f16));
1874 try testArgs(f16, -0.0, -0.0);7366 try testArgs(f16, -0.0, -0.0);
1875 try testArgs(f16, -0.0, 0.0);7367 try testArgs(f16, -0.0, 0.0);
1876 try testArgs(f16, -0.0, tmin(f16));7368 try testArgs(f16, -0.0, tmin(f16));
1877 try testArgs(f16, -0.0, fmin(f16));7369 try testArgs(f16, -0.0, fmin(f16));
1878 try testArgs(f16, -0.0, 0.1);7370 try testArgs(f16, -0.0, 1e-1);
1879 try testArgs(f16, -0.0, 1.0);7371 try testArgs(f16, -0.0, 1e0);
1880 try testArgs(f16, -0.0, 10.0);7372 try testArgs(f16, -0.0, 1e1);
1881 try testArgs(f16, -0.0, fmax(f16));7373 try testArgs(f16, -0.0, fmax(f16));
1882 try testArgs(f16, -0.0, inf(f16));7374 try testArgs(f16, -0.0, inf(f16));
1883 try testArgs(f16, -0.0, nan(f16));7375 try testArgs(f16, -0.0, nan(f16));
...@@ -1885,18 +7377,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1885,18 +7377,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1885 try testArgs(f16, 0.0, -nan(f16));7377 try testArgs(f16, 0.0, -nan(f16));
1886 try testArgs(f16, 0.0, -inf(f16));7378 try testArgs(f16, 0.0, -inf(f16));
1887 try testArgs(f16, 0.0, -fmax(f16));7379 try testArgs(f16, 0.0, -fmax(f16));
1888 try testArgs(f16, 0.0, -10.0);7380 try testArgs(f16, 0.0, -1e1);
1889 try testArgs(f16, 0.0, -1.0);7381 try testArgs(f16, 0.0, -1e0);
1890 try testArgs(f16, 0.0, -0.1);7382 try testArgs(f16, 0.0, -1e-1);
1891 try testArgs(f16, 0.0, -fmin(f16));7383 try testArgs(f16, 0.0, -fmin(f16));
1892 try testArgs(f16, 0.0, -tmin(f16));7384 try testArgs(f16, 0.0, -tmin(f16));
1893 try testArgs(f16, 0.0, -0.0);7385 try testArgs(f16, 0.0, -0.0);
1894 try testArgs(f16, 0.0, 0.0);7386 try testArgs(f16, 0.0, 0.0);
1895 try testArgs(f16, 0.0, tmin(f16));7387 try testArgs(f16, 0.0, tmin(f16));
1896 try testArgs(f16, 0.0, fmin(f16));7388 try testArgs(f16, 0.0, fmin(f16));
1897 try testArgs(f16, 0.0, 0.1);7389 try testArgs(f16, 0.0, 1e-1);
1898 try testArgs(f16, 0.0, 1.0);7390 try testArgs(f16, 0.0, 1e0);
1899 try testArgs(f16, 0.0, 10.0);7391 try testArgs(f16, 0.0, 1e1);
1900 try testArgs(f16, 0.0, fmax(f16));7392 try testArgs(f16, 0.0, fmax(f16));
1901 try testArgs(f16, 0.0, inf(f16));7393 try testArgs(f16, 0.0, inf(f16));
1902 try testArgs(f16, 0.0, nan(f16));7394 try testArgs(f16, 0.0, nan(f16));
...@@ -1904,18 +7396,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1904,18 +7396,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1904 try testArgs(f16, tmin(f16), -nan(f16));7396 try testArgs(f16, tmin(f16), -nan(f16));
1905 try testArgs(f16, tmin(f16), -inf(f16));7397 try testArgs(f16, tmin(f16), -inf(f16));
1906 try testArgs(f16, tmin(f16), -fmax(f16));7398 try testArgs(f16, tmin(f16), -fmax(f16));
1907 try testArgs(f16, tmin(f16), -10.0);7399 try testArgs(f16, tmin(f16), -1e1);
1908 try testArgs(f16, tmin(f16), -1.0);7400 try testArgs(f16, tmin(f16), -1e0);
1909 try testArgs(f16, tmin(f16), -0.1);7401 try testArgs(f16, tmin(f16), -1e-1);
1910 try testArgs(f16, tmin(f16), -fmin(f16));7402 try testArgs(f16, tmin(f16), -fmin(f16));
1911 try testArgs(f16, tmin(f16), -tmin(f16));7403 try testArgs(f16, tmin(f16), -tmin(f16));
1912 try testArgs(f16, tmin(f16), -0.0);7404 try testArgs(f16, tmin(f16), -0.0);
1913 try testArgs(f16, tmin(f16), 0.0);7405 try testArgs(f16, tmin(f16), 0.0);
1914 try testArgs(f16, tmin(f16), tmin(f16));7406 try testArgs(f16, tmin(f16), tmin(f16));
1915 try testArgs(f16, tmin(f16), fmin(f16));7407 try testArgs(f16, tmin(f16), fmin(f16));
1916 try testArgs(f16, tmin(f16), 0.1);7408 try testArgs(f16, tmin(f16), 1e-1);
1917 try testArgs(f16, tmin(f16), 1.0);7409 try testArgs(f16, tmin(f16), 1e0);
1918 try testArgs(f16, tmin(f16), 10.0);7410 try testArgs(f16, tmin(f16), 1e1);
1919 try testArgs(f16, tmin(f16), fmax(f16));7411 try testArgs(f16, tmin(f16), fmax(f16));
1920 try testArgs(f16, tmin(f16), inf(f16));7412 try testArgs(f16, tmin(f16), inf(f16));
1921 try testArgs(f16, tmin(f16), nan(f16));7413 try testArgs(f16, tmin(f16), nan(f16));
...@@ -1923,94 +7415,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -1923,94 +7415,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
1923 try testArgs(f16, fmin(f16), -nan(f16));7415 try testArgs(f16, fmin(f16), -nan(f16));
1924 try testArgs(f16, fmin(f16), -inf(f16));7416 try testArgs(f16, fmin(f16), -inf(f16));
1925 try testArgs(f16, fmin(f16), -fmax(f16));7417 try testArgs(f16, fmin(f16), -fmax(f16));
1926 try testArgs(f16, fmin(f16), -10.0);7418 try testArgs(f16, fmin(f16), -1e1);
1927 try testArgs(f16, fmin(f16), -1.0);7419 try testArgs(f16, fmin(f16), -1e0);
1928 try testArgs(f16, fmin(f16), -0.1);7420 try testArgs(f16, fmin(f16), -1e-1);
1929 try testArgs(f16, fmin(f16), -fmin(f16));7421 try testArgs(f16, fmin(f16), -fmin(f16));
1930 try testArgs(f16, fmin(f16), -tmin(f16));7422 try testArgs(f16, fmin(f16), -tmin(f16));
1931 try testArgs(f16, fmin(f16), -0.0);7423 try testArgs(f16, fmin(f16), -0.0);
1932 try testArgs(f16, fmin(f16), 0.0);7424 try testArgs(f16, fmin(f16), 0.0);
1933 try testArgs(f16, fmin(f16), tmin(f16));7425 try testArgs(f16, fmin(f16), tmin(f16));
1934 try testArgs(f16, fmin(f16), fmin(f16));7426 try testArgs(f16, fmin(f16), fmin(f16));
1935 try testArgs(f16, fmin(f16), 0.1);7427 try testArgs(f16, fmin(f16), 1e-1);
1936 try testArgs(f16, fmin(f16), 1.0);7428 try testArgs(f16, fmin(f16), 1e0);
1937 try testArgs(f16, fmin(f16), 10.0);7429 try testArgs(f16, fmin(f16), 1e1);
1938 try testArgs(f16, fmin(f16), fmax(f16));7430 try testArgs(f16, fmin(f16), fmax(f16));
1939 try testArgs(f16, fmin(f16), inf(f16));7431 try testArgs(f16, fmin(f16), inf(f16));
1940 try testArgs(f16, fmin(f16), nan(f16));7432 try testArgs(f16, fmin(f16), nan(f16));
19417433
1942 try testArgs(f16, 0.1, -nan(f16));7434 try testArgs(f16, 1e-1, -nan(f16));
1943 try testArgs(f16, 0.1, -inf(f16));7435 try testArgs(f16, 1e-1, -inf(f16));
1944 try testArgs(f16, 0.1, -fmax(f16));7436 try testArgs(f16, 1e-1, -fmax(f16));
1945 try testArgs(f16, 0.1, -10.0);7437 try testArgs(f16, 1e-1, -1e1);
1946 try testArgs(f16, 0.1, -1.0);7438 try testArgs(f16, 1e-1, -1e0);
1947 try testArgs(f16, 0.1, -0.1);7439 try testArgs(f16, 1e-1, -1e-1);
1948 try testArgs(f16, 0.1, -fmin(f16));7440 try testArgs(f16, 1e-1, -fmin(f16));
1949 try testArgs(f16, 0.1, -tmin(f16));7441 try testArgs(f16, 1e-1, -tmin(f16));
1950 try testArgs(f16, 0.1, -0.0);7442 try testArgs(f16, 1e-1, -0.0);
1951 try testArgs(f16, 0.1, 0.0);7443 try testArgs(f16, 1e-1, 0.0);
1952 try testArgs(f16, 0.1, tmin(f16));7444 try testArgs(f16, 1e-1, tmin(f16));
1953 try testArgs(f16, 0.1, fmin(f16));7445 try testArgs(f16, 1e-1, fmin(f16));
1954 try testArgs(f16, 0.1, 0.1);7446 try testArgs(f16, 1e-1, 1e-1);
1955 try testArgs(f16, 0.1, 1.0);7447 try testArgs(f16, 1e-1, 1e0);
1956 try testArgs(f16, 0.1, 10.0);7448 try testArgs(f16, 1e-1, 1e1);
1957 try testArgs(f16, 0.1, fmax(f16));7449 try testArgs(f16, 1e-1, fmax(f16));
1958 try testArgs(f16, 0.1, inf(f16));7450 try testArgs(f16, 1e-1, inf(f16));
1959 try testArgs(f16, 0.1, nan(f16));7451 try testArgs(f16, 1e-1, nan(f16));
19607452
1961 try testArgs(f16, 1.0, -nan(f16));7453 try testArgs(f16, 1e0, -nan(f16));
1962 try testArgs(f16, 1.0, -inf(f16));7454 try testArgs(f16, 1e0, -inf(f16));
1963 try testArgs(f16, 1.0, -fmax(f16));7455 try testArgs(f16, 1e0, -fmax(f16));
1964 try testArgs(f16, 1.0, -10.0);7456 try testArgs(f16, 1e0, -1e1);
1965 try testArgs(f16, 1.0, -1.0);7457 try testArgs(f16, 1e0, -1e0);
1966 try testArgs(f16, 1.0, -0.1);7458 try testArgs(f16, 1e0, -1e-1);
1967 try testArgs(f16, 1.0, -fmin(f16));7459 try testArgs(f16, 1e0, -fmin(f16));
1968 try testArgs(f16, 1.0, -tmin(f16));7460 try testArgs(f16, 1e0, -tmin(f16));
1969 try testArgs(f16, 1.0, -0.0);7461 try testArgs(f16, 1e0, -0.0);
1970 try testArgs(f16, 1.0, 0.0);7462 try testArgs(f16, 1e0, 0.0);
1971 try testArgs(f16, 1.0, tmin(f16));7463 try testArgs(f16, 1e0, tmin(f16));
1972 try testArgs(f16, 1.0, fmin(f16));7464 try testArgs(f16, 1e0, fmin(f16));
1973 try testArgs(f16, 1.0, 0.1);7465 try testArgs(f16, 1e0, 1e-1);
1974 try testArgs(f16, 1.0, 1.0);7466 try testArgs(f16, 1e0, 1e0);
1975 try testArgs(f16, 1.0, 10.0);7467 try testArgs(f16, 1e0, 1e1);
1976 try testArgs(f16, 1.0, fmax(f16));7468 try testArgs(f16, 1e0, fmax(f16));
1977 try testArgs(f16, 1.0, inf(f16));7469 try testArgs(f16, 1e0, inf(f16));
1978 try testArgs(f16, 1.0, nan(f16));7470 try testArgs(f16, 1e0, nan(f16));
19797471
1980 try testArgs(f16, 10.0, -nan(f16));7472 try testArgs(f16, 1e1, -nan(f16));
1981 try testArgs(f16, 10.0, -inf(f16));7473 try testArgs(f16, 1e1, -inf(f16));
1982 try testArgs(f16, 10.0, -fmax(f16));7474 try testArgs(f16, 1e1, -fmax(f16));
1983 try testArgs(f16, 10.0, -10.0);7475 try testArgs(f16, 1e1, -1e1);
1984 try testArgs(f16, 10.0, -1.0);7476 try testArgs(f16, 1e1, -1e0);
1985 try testArgs(f16, 10.0, -0.1);7477 try testArgs(f16, 1e1, -1e-1);
1986 try testArgs(f16, 10.0, -fmin(f16));7478 try testArgs(f16, 1e1, -fmin(f16));
1987 try testArgs(f16, 10.0, -tmin(f16));7479 try testArgs(f16, 1e1, -tmin(f16));
1988 try testArgs(f16, 10.0, -0.0);7480 try testArgs(f16, 1e1, -0.0);
1989 try testArgs(f16, 10.0, 0.0);7481 try testArgs(f16, 1e1, 0.0);
1990 try testArgs(f16, 10.0, tmin(f16));7482 try testArgs(f16, 1e1, tmin(f16));
1991 try testArgs(f16, 10.0, fmin(f16));7483 try testArgs(f16, 1e1, fmin(f16));
1992 try testArgs(f16, 10.0, 0.1);7484 try testArgs(f16, 1e1, 1e-1);
1993 try testArgs(f16, 10.0, 1.0);7485 try testArgs(f16, 1e1, 1e0);
1994 try testArgs(f16, 10.0, 10.0);7486 try testArgs(f16, 1e1, 1e1);
1995 try testArgs(f16, 10.0, fmax(f16));7487 try testArgs(f16, 1e1, fmax(f16));
1996 try testArgs(f16, 10.0, inf(f16));7488 try testArgs(f16, 1e1, inf(f16));
1997 try testArgs(f16, 10.0, nan(f16));7489 try testArgs(f16, 1e1, nan(f16));
19987490
1999 try testArgs(f16, fmax(f16), -nan(f16));7491 try testArgs(f16, fmax(f16), -nan(f16));
2000 try testArgs(f16, fmax(f16), -inf(f16));7492 try testArgs(f16, fmax(f16), -inf(f16));
2001 try testArgs(f16, fmax(f16), -fmax(f16));7493 try testArgs(f16, fmax(f16), -fmax(f16));
2002 try testArgs(f16, fmax(f16), -10.0);7494 try testArgs(f16, fmax(f16), -1e1);
2003 try testArgs(f16, fmax(f16), -1.0);7495 try testArgs(f16, fmax(f16), -1e0);
2004 try testArgs(f16, fmax(f16), -0.1);7496 try testArgs(f16, fmax(f16), -1e-1);
2005 try testArgs(f16, fmax(f16), -fmin(f16));7497 try testArgs(f16, fmax(f16), -fmin(f16));
2006 try testArgs(f16, fmax(f16), -tmin(f16));7498 try testArgs(f16, fmax(f16), -tmin(f16));
2007 try testArgs(f16, fmax(f16), -0.0);7499 try testArgs(f16, fmax(f16), -0.0);
2008 try testArgs(f16, fmax(f16), 0.0);7500 try testArgs(f16, fmax(f16), 0.0);
2009 try testArgs(f16, fmax(f16), tmin(f16));7501 try testArgs(f16, fmax(f16), tmin(f16));
2010 try testArgs(f16, fmax(f16), fmin(f16));7502 try testArgs(f16, fmax(f16), fmin(f16));
2011 try testArgs(f16, fmax(f16), 0.1);7503 try testArgs(f16, fmax(f16), 1e-1);
2012 try testArgs(f16, fmax(f16), 1.0);7504 try testArgs(f16, fmax(f16), 1e0);
2013 try testArgs(f16, fmax(f16), 10.0);7505 try testArgs(f16, fmax(f16), 1e1);
2014 try testArgs(f16, fmax(f16), fmax(f16));7506 try testArgs(f16, fmax(f16), fmax(f16));
2015 try testArgs(f16, fmax(f16), inf(f16));7507 try testArgs(f16, fmax(f16), inf(f16));
2016 try testArgs(f16, fmax(f16), nan(f16));7508 try testArgs(f16, fmax(f16), nan(f16));
...@@ -2018,18 +7510,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2018,18 +7510,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2018 try testArgs(f16, inf(f16), -nan(f16));7510 try testArgs(f16, inf(f16), -nan(f16));
2019 try testArgs(f16, inf(f16), -inf(f16));7511 try testArgs(f16, inf(f16), -inf(f16));
2020 try testArgs(f16, inf(f16), -fmax(f16));7512 try testArgs(f16, inf(f16), -fmax(f16));
2021 try testArgs(f16, inf(f16), -10.0);7513 try testArgs(f16, inf(f16), -1e1);
2022 try testArgs(f16, inf(f16), -1.0);7514 try testArgs(f16, inf(f16), -1e0);
2023 try testArgs(f16, inf(f16), -0.1);7515 try testArgs(f16, inf(f16), -1e-1);
2024 try testArgs(f16, inf(f16), -fmin(f16));7516 try testArgs(f16, inf(f16), -fmin(f16));
2025 try testArgs(f16, inf(f16), -tmin(f16));7517 try testArgs(f16, inf(f16), -tmin(f16));
2026 try testArgs(f16, inf(f16), -0.0);7518 try testArgs(f16, inf(f16), -0.0);
2027 try testArgs(f16, inf(f16), 0.0);7519 try testArgs(f16, inf(f16), 0.0);
2028 try testArgs(f16, inf(f16), tmin(f16));7520 try testArgs(f16, inf(f16), tmin(f16));
2029 try testArgs(f16, inf(f16), fmin(f16));7521 try testArgs(f16, inf(f16), fmin(f16));
2030 try testArgs(f16, inf(f16), 0.1);7522 try testArgs(f16, inf(f16), 1e-1);
2031 try testArgs(f16, inf(f16), 1.0);7523 try testArgs(f16, inf(f16), 1e0);
2032 try testArgs(f16, inf(f16), 10.0);7524 try testArgs(f16, inf(f16), 1e1);
2033 try testArgs(f16, inf(f16), fmax(f16));7525 try testArgs(f16, inf(f16), fmax(f16));
2034 try testArgs(f16, inf(f16), inf(f16));7526 try testArgs(f16, inf(f16), inf(f16));
2035 try testArgs(f16, inf(f16), nan(f16));7527 try testArgs(f16, inf(f16), nan(f16));
...@@ -2037,18 +7529,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2037,18 +7529,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2037 try testArgs(f16, nan(f16), -nan(f16));7529 try testArgs(f16, nan(f16), -nan(f16));
2038 try testArgs(f16, nan(f16), -inf(f16));7530 try testArgs(f16, nan(f16), -inf(f16));
2039 try testArgs(f16, nan(f16), -fmax(f16));7531 try testArgs(f16, nan(f16), -fmax(f16));
2040 try testArgs(f16, nan(f16), -10.0);7532 try testArgs(f16, nan(f16), -1e1);
2041 try testArgs(f16, nan(f16), -1.0);7533 try testArgs(f16, nan(f16), -1e0);
2042 try testArgs(f16, nan(f16), -0.1);7534 try testArgs(f16, nan(f16), -1e-1);
2043 try testArgs(f16, nan(f16), -fmin(f16));7535 try testArgs(f16, nan(f16), -fmin(f16));
2044 try testArgs(f16, nan(f16), -tmin(f16));7536 try testArgs(f16, nan(f16), -tmin(f16));
2045 try testArgs(f16, nan(f16), -0.0);7537 try testArgs(f16, nan(f16), -0.0);
2046 try testArgs(f16, nan(f16), 0.0);7538 try testArgs(f16, nan(f16), 0.0);
2047 try testArgs(f16, nan(f16), tmin(f16));7539 try testArgs(f16, nan(f16), tmin(f16));
2048 try testArgs(f16, nan(f16), fmin(f16));7540 try testArgs(f16, nan(f16), fmin(f16));
2049 try testArgs(f16, nan(f16), 0.1);7541 try testArgs(f16, nan(f16), 1e-1);
2050 try testArgs(f16, nan(f16), 1.0);7542 try testArgs(f16, nan(f16), 1e0);
2051 try testArgs(f16, nan(f16), 10.0);7543 try testArgs(f16, nan(f16), 1e1);
2052 try testArgs(f16, nan(f16), fmax(f16));7544 try testArgs(f16, nan(f16), fmax(f16));
2053 try testArgs(f16, nan(f16), inf(f16));7545 try testArgs(f16, nan(f16), inf(f16));
2054 try testArgs(f16, nan(f16), nan(f16));7546 try testArgs(f16, nan(f16), nan(f16));
...@@ -2056,18 +7548,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2056,18 +7548,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2056 try testArgs(f32, -nan(f32), -nan(f32));7548 try testArgs(f32, -nan(f32), -nan(f32));
2057 try testArgs(f32, -nan(f32), -inf(f32));7549 try testArgs(f32, -nan(f32), -inf(f32));
2058 try testArgs(f32, -nan(f32), -fmax(f32));7550 try testArgs(f32, -nan(f32), -fmax(f32));
2059 try testArgs(f32, -nan(f32), -10.0);7551 try testArgs(f32, -nan(f32), -1e1);
2060 try testArgs(f32, -nan(f32), -1.0);7552 try testArgs(f32, -nan(f32), -1e0);
2061 try testArgs(f32, -nan(f32), -0.1);7553 try testArgs(f32, -nan(f32), -1e-1);
2062 try testArgs(f32, -nan(f32), -fmin(f32));7554 try testArgs(f32, -nan(f32), -fmin(f32));
2063 try testArgs(f32, -nan(f32), -tmin(f32));7555 try testArgs(f32, -nan(f32), -tmin(f32));
2064 try testArgs(f32, -nan(f32), -0.0);7556 try testArgs(f32, -nan(f32), -0.0);
2065 try testArgs(f32, -nan(f32), 0.0);7557 try testArgs(f32, -nan(f32), 0.0);
2066 try testArgs(f32, -nan(f32), tmin(f32));7558 try testArgs(f32, -nan(f32), tmin(f32));
2067 try testArgs(f32, -nan(f32), fmin(f32));7559 try testArgs(f32, -nan(f32), fmin(f32));
2068 try testArgs(f32, -nan(f32), 0.1);7560 try testArgs(f32, -nan(f32), 1e-1);
2069 try testArgs(f32, -nan(f32), 1.0);7561 try testArgs(f32, -nan(f32), 1e0);
2070 try testArgs(f32, -nan(f32), 10.0);7562 try testArgs(f32, -nan(f32), 1e1);
2071 try testArgs(f32, -nan(f32), fmax(f32));7563 try testArgs(f32, -nan(f32), fmax(f32));
2072 try testArgs(f32, -nan(f32), inf(f32));7564 try testArgs(f32, -nan(f32), inf(f32));
2073 try testArgs(f32, -nan(f32), nan(f32));7565 try testArgs(f32, -nan(f32), nan(f32));
...@@ -2075,18 +7567,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2075,18 +7567,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2075 try testArgs(f32, -inf(f32), -nan(f32));7567 try testArgs(f32, -inf(f32), -nan(f32));
2076 try testArgs(f32, -inf(f32), -inf(f32));7568 try testArgs(f32, -inf(f32), -inf(f32));
2077 try testArgs(f32, -inf(f32), -fmax(f32));7569 try testArgs(f32, -inf(f32), -fmax(f32));
2078 try testArgs(f32, -inf(f32), -10.0);7570 try testArgs(f32, -inf(f32), -1e1);
2079 try testArgs(f32, -inf(f32), -1.0);7571 try testArgs(f32, -inf(f32), -1e0);
2080 try testArgs(f32, -inf(f32), -0.1);7572 try testArgs(f32, -inf(f32), -1e-1);
2081 try testArgs(f32, -inf(f32), -fmin(f32));7573 try testArgs(f32, -inf(f32), -fmin(f32));
2082 try testArgs(f32, -inf(f32), -tmin(f32));7574 try testArgs(f32, -inf(f32), -tmin(f32));
2083 try testArgs(f32, -inf(f32), -0.0);7575 try testArgs(f32, -inf(f32), -0.0);
2084 try testArgs(f32, -inf(f32), 0.0);7576 try testArgs(f32, -inf(f32), 0.0);
2085 try testArgs(f32, -inf(f32), tmin(f32));7577 try testArgs(f32, -inf(f32), tmin(f32));
2086 try testArgs(f32, -inf(f32), fmin(f32));7578 try testArgs(f32, -inf(f32), fmin(f32));
2087 try testArgs(f32, -inf(f32), 0.1);7579 try testArgs(f32, -inf(f32), 1e-1);
2088 try testArgs(f32, -inf(f32), 1.0);7580 try testArgs(f32, -inf(f32), 1e0);
2089 try testArgs(f32, -inf(f32), 10.0);7581 try testArgs(f32, -inf(f32), 1e1);
2090 try testArgs(f32, -inf(f32), fmax(f32));7582 try testArgs(f32, -inf(f32), fmax(f32));
2091 try testArgs(f32, -inf(f32), inf(f32));7583 try testArgs(f32, -inf(f32), inf(f32));
2092 try testArgs(f32, -inf(f32), nan(f32));7584 try testArgs(f32, -inf(f32), nan(f32));
...@@ -2094,94 +7586,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2094,94 +7586,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2094 try testArgs(f32, -fmax(f32), -nan(f32));7586 try testArgs(f32, -fmax(f32), -nan(f32));
2095 try testArgs(f32, -fmax(f32), -inf(f32));7587 try testArgs(f32, -fmax(f32), -inf(f32));
2096 try testArgs(f32, -fmax(f32), -fmax(f32));7588 try testArgs(f32, -fmax(f32), -fmax(f32));
2097 try testArgs(f32, -fmax(f32), -10.0);7589 try testArgs(f32, -fmax(f32), -1e1);
2098 try testArgs(f32, -fmax(f32), -1.0);7590 try testArgs(f32, -fmax(f32), -1e0);
2099 try testArgs(f32, -fmax(f32), -0.1);7591 try testArgs(f32, -fmax(f32), -1e-1);
2100 try testArgs(f32, -fmax(f32), -fmin(f32));7592 try testArgs(f32, -fmax(f32), -fmin(f32));
2101 try testArgs(f32, -fmax(f32), -tmin(f32));7593 try testArgs(f32, -fmax(f32), -tmin(f32));
2102 try testArgs(f32, -fmax(f32), -0.0);7594 try testArgs(f32, -fmax(f32), -0.0);
2103 try testArgs(f32, -fmax(f32), 0.0);7595 try testArgs(f32, -fmax(f32), 0.0);
2104 try testArgs(f32, -fmax(f32), tmin(f32));7596 try testArgs(f32, -fmax(f32), tmin(f32));
2105 try testArgs(f32, -fmax(f32), fmin(f32));7597 try testArgs(f32, -fmax(f32), fmin(f32));
2106 try testArgs(f32, -fmax(f32), 0.1);7598 try testArgs(f32, -fmax(f32), 1e-1);
2107 try testArgs(f32, -fmax(f32), 1.0);7599 try testArgs(f32, -fmax(f32), 1e0);
2108 try testArgs(f32, -fmax(f32), 10.0);7600 try testArgs(f32, -fmax(f32), 1e1);
2109 try testArgs(f32, -fmax(f32), fmax(f32));7601 try testArgs(f32, -fmax(f32), fmax(f32));
2110 try testArgs(f32, -fmax(f32), inf(f32));7602 try testArgs(f32, -fmax(f32), inf(f32));
2111 try testArgs(f32, -fmax(f32), nan(f32));7603 try testArgs(f32, -fmax(f32), nan(f32));
21127604
2113 try testArgs(f32, -10.0, -nan(f32));7605 try testArgs(f32, -1e1, -nan(f32));
2114 try testArgs(f32, -10.0, -inf(f32));7606 try testArgs(f32, -1e1, -inf(f32));
2115 try testArgs(f32, -10.0, -fmax(f32));7607 try testArgs(f32, -1e1, -fmax(f32));
2116 try testArgs(f32, -10.0, -10.0);7608 try testArgs(f32, -1e1, -1e1);
2117 try testArgs(f32, -10.0, -1.0);7609 try testArgs(f32, -1e1, -1e0);
2118 try testArgs(f32, -10.0, -0.1);7610 try testArgs(f32, -1e1, -1e-1);
2119 try testArgs(f32, -10.0, -fmin(f32));7611 try testArgs(f32, -1e1, -fmin(f32));
2120 try testArgs(f32, -10.0, -tmin(f32));7612 try testArgs(f32, -1e1, -tmin(f32));
2121 try testArgs(f32, -10.0, -0.0);7613 try testArgs(f32, -1e1, -0.0);
2122 try testArgs(f32, -10.0, 0.0);7614 try testArgs(f32, -1e1, 0.0);
2123 try testArgs(f32, -10.0, tmin(f32));7615 try testArgs(f32, -1e1, tmin(f32));
2124 try testArgs(f32, -10.0, fmin(f32));7616 try testArgs(f32, -1e1, fmin(f32));
2125 try testArgs(f32, -10.0, 0.1);7617 try testArgs(f32, -1e1, 1e-1);
2126 try testArgs(f32, -10.0, 1.0);7618 try testArgs(f32, -1e1, 1e0);
2127 try testArgs(f32, -10.0, 10.0);7619 try testArgs(f32, -1e1, 1e1);
2128 try testArgs(f32, -10.0, fmax(f32));7620 try testArgs(f32, -1e1, fmax(f32));
2129 try testArgs(f32, -10.0, inf(f32));7621 try testArgs(f32, -1e1, inf(f32));
2130 try testArgs(f32, -10.0, nan(f32));7622 try testArgs(f32, -1e1, nan(f32));
21317623
2132 try testArgs(f32, -1.0, -nan(f32));7624 try testArgs(f32, -1e0, -nan(f32));
2133 try testArgs(f32, -1.0, -inf(f32));7625 try testArgs(f32, -1e0, -inf(f32));
2134 try testArgs(f32, -1.0, -fmax(f32));7626 try testArgs(f32, -1e0, -fmax(f32));
2135 try testArgs(f32, -1.0, -10.0);7627 try testArgs(f32, -1e0, -1e1);
2136 try testArgs(f32, -1.0, -1.0);7628 try testArgs(f32, -1e0, -1e0);
2137 try testArgs(f32, -1.0, -0.1);7629 try testArgs(f32, -1e0, -1e-1);
2138 try testArgs(f32, -1.0, -fmin(f32));7630 try testArgs(f32, -1e0, -fmin(f32));
2139 try testArgs(f32, -1.0, -tmin(f32));7631 try testArgs(f32, -1e0, -tmin(f32));
2140 try testArgs(f32, -1.0, -0.0);7632 try testArgs(f32, -1e0, -0.0);
2141 try testArgs(f32, -1.0, 0.0);7633 try testArgs(f32, -1e0, 0.0);
2142 try testArgs(f32, -1.0, tmin(f32));7634 try testArgs(f32, -1e0, tmin(f32));
2143 try testArgs(f32, -1.0, fmin(f32));7635 try testArgs(f32, -1e0, fmin(f32));
2144 try testArgs(f32, -1.0, 0.1);7636 try testArgs(f32, -1e0, 1e-1);
2145 try testArgs(f32, -1.0, 1.0);7637 try testArgs(f32, -1e0, 1e0);
2146 try testArgs(f32, -1.0, 10.0);7638 try testArgs(f32, -1e0, 1e1);
2147 try testArgs(f32, -1.0, fmax(f32));7639 try testArgs(f32, -1e0, fmax(f32));
2148 try testArgs(f32, -1.0, inf(f32));7640 try testArgs(f32, -1e0, inf(f32));
2149 try testArgs(f32, -1.0, nan(f32));7641 try testArgs(f32, -1e0, nan(f32));
21507642
2151 try testArgs(f32, -0.1, -nan(f32));7643 try testArgs(f32, -1e-1, -nan(f32));
2152 try testArgs(f32, -0.1, -inf(f32));7644 try testArgs(f32, -1e-1, -inf(f32));
2153 try testArgs(f32, -0.1, -fmax(f32));7645 try testArgs(f32, -1e-1, -fmax(f32));
2154 try testArgs(f32, -0.1, -10.0);7646 try testArgs(f32, -1e-1, -1e1);
2155 try testArgs(f32, -0.1, -1.0);7647 try testArgs(f32, -1e-1, -1e0);
2156 try testArgs(f32, -0.1, -0.1);7648 try testArgs(f32, -1e-1, -1e-1);
2157 try testArgs(f32, -0.1, -fmin(f32));7649 try testArgs(f32, -1e-1, -fmin(f32));
2158 try testArgs(f32, -0.1, -tmin(f32));7650 try testArgs(f32, -1e-1, -tmin(f32));
2159 try testArgs(f32, -0.1, -0.0);7651 try testArgs(f32, -1e-1, -0.0);
2160 try testArgs(f32, -0.1, 0.0);7652 try testArgs(f32, -1e-1, 0.0);
2161 try testArgs(f32, -0.1, tmin(f32));7653 try testArgs(f32, -1e-1, tmin(f32));
2162 try testArgs(f32, -0.1, fmin(f32));7654 try testArgs(f32, -1e-1, fmin(f32));
2163 try testArgs(f32, -0.1, 0.1);7655 try testArgs(f32, -1e-1, 1e-1);
2164 try testArgs(f32, -0.1, 1.0);7656 try testArgs(f32, -1e-1, 1e0);
2165 try testArgs(f32, -0.1, 10.0);7657 try testArgs(f32, -1e-1, 1e1);
2166 try testArgs(f32, -0.1, fmax(f32));7658 try testArgs(f32, -1e-1, fmax(f32));
2167 try testArgs(f32, -0.1, inf(f32));7659 try testArgs(f32, -1e-1, inf(f32));
2168 try testArgs(f32, -0.1, nan(f32));7660 try testArgs(f32, -1e-1, nan(f32));
21697661
2170 try testArgs(f32, -fmin(f32), -nan(f32));7662 try testArgs(f32, -fmin(f32), -nan(f32));
2171 try testArgs(f32, -fmin(f32), -inf(f32));7663 try testArgs(f32, -fmin(f32), -inf(f32));
2172 try testArgs(f32, -fmin(f32), -fmax(f32));7664 try testArgs(f32, -fmin(f32), -fmax(f32));
2173 try testArgs(f32, -fmin(f32), -10.0);7665 try testArgs(f32, -fmin(f32), -1e1);
2174 try testArgs(f32, -fmin(f32), -1.0);7666 try testArgs(f32, -fmin(f32), -1e0);
2175 try testArgs(f32, -fmin(f32), -0.1);7667 try testArgs(f32, -fmin(f32), -1e-1);
2176 try testArgs(f32, -fmin(f32), -fmin(f32));7668 try testArgs(f32, -fmin(f32), -fmin(f32));
2177 try testArgs(f32, -fmin(f32), -tmin(f32));7669 try testArgs(f32, -fmin(f32), -tmin(f32));
2178 try testArgs(f32, -fmin(f32), -0.0);7670 try testArgs(f32, -fmin(f32), -0.0);
2179 try testArgs(f32, -fmin(f32), 0.0);7671 try testArgs(f32, -fmin(f32), 0.0);
2180 try testArgs(f32, -fmin(f32), tmin(f32));7672 try testArgs(f32, -fmin(f32), tmin(f32));
2181 try testArgs(f32, -fmin(f32), fmin(f32));7673 try testArgs(f32, -fmin(f32), fmin(f32));
2182 try testArgs(f32, -fmin(f32), 0.1);7674 try testArgs(f32, -fmin(f32), 1e-1);
2183 try testArgs(f32, -fmin(f32), 1.0);7675 try testArgs(f32, -fmin(f32), 1e0);
2184 try testArgs(f32, -fmin(f32), 10.0);7676 try testArgs(f32, -fmin(f32), 1e1);
2185 try testArgs(f32, -fmin(f32), fmax(f32));7677 try testArgs(f32, -fmin(f32), fmax(f32));
2186 try testArgs(f32, -fmin(f32), inf(f32));7678 try testArgs(f32, -fmin(f32), inf(f32));
2187 try testArgs(f32, -fmin(f32), nan(f32));7679 try testArgs(f32, -fmin(f32), nan(f32));
...@@ -2189,18 +7681,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2189,18 +7681,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2189 try testArgs(f32, -tmin(f32), -nan(f32));7681 try testArgs(f32, -tmin(f32), -nan(f32));
2190 try testArgs(f32, -tmin(f32), -inf(f32));7682 try testArgs(f32, -tmin(f32), -inf(f32));
2191 try testArgs(f32, -tmin(f32), -fmax(f32));7683 try testArgs(f32, -tmin(f32), -fmax(f32));
2192 try testArgs(f32, -tmin(f32), -10.0);7684 try testArgs(f32, -tmin(f32), -1e1);
2193 try testArgs(f32, -tmin(f32), -1.0);7685 try testArgs(f32, -tmin(f32), -1e0);
2194 try testArgs(f32, -tmin(f32), -0.1);7686 try testArgs(f32, -tmin(f32), -1e-1);
2195 try testArgs(f32, -tmin(f32), -fmin(f32));7687 try testArgs(f32, -tmin(f32), -fmin(f32));
2196 try testArgs(f32, -tmin(f32), -tmin(f32));7688 try testArgs(f32, -tmin(f32), -tmin(f32));
2197 try testArgs(f32, -tmin(f32), -0.0);7689 try testArgs(f32, -tmin(f32), -0.0);
2198 try testArgs(f32, -tmin(f32), 0.0);7690 try testArgs(f32, -tmin(f32), 0.0);
2199 try testArgs(f32, -tmin(f32), tmin(f32));7691 try testArgs(f32, -tmin(f32), tmin(f32));
2200 try testArgs(f32, -tmin(f32), fmin(f32));7692 try testArgs(f32, -tmin(f32), fmin(f32));
2201 try testArgs(f32, -tmin(f32), 0.1);7693 try testArgs(f32, -tmin(f32), 1e-1);
2202 try testArgs(f32, -tmin(f32), 1.0);7694 try testArgs(f32, -tmin(f32), 1e0);
2203 try testArgs(f32, -tmin(f32), 10.0);7695 try testArgs(f32, -tmin(f32), 1e1);
2204 try testArgs(f32, -tmin(f32), fmax(f32));7696 try testArgs(f32, -tmin(f32), fmax(f32));
2205 try testArgs(f32, -tmin(f32), inf(f32));7697 try testArgs(f32, -tmin(f32), inf(f32));
2206 try testArgs(f32, -tmin(f32), nan(f32));7698 try testArgs(f32, -tmin(f32), nan(f32));
...@@ -2208,18 +7700,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2208,18 +7700,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2208 try testArgs(f32, -0.0, -nan(f32));7700 try testArgs(f32, -0.0, -nan(f32));
2209 try testArgs(f32, -0.0, -inf(f32));7701 try testArgs(f32, -0.0, -inf(f32));
2210 try testArgs(f32, -0.0, -fmax(f32));7702 try testArgs(f32, -0.0, -fmax(f32));
2211 try testArgs(f32, -0.0, -10.0);7703 try testArgs(f32, -0.0, -1e1);
2212 try testArgs(f32, -0.0, -1.0);7704 try testArgs(f32, -0.0, -1e0);
2213 try testArgs(f32, -0.0, -0.1);7705 try testArgs(f32, -0.0, -1e-1);
2214 try testArgs(f32, -0.0, -fmin(f32));7706 try testArgs(f32, -0.0, -fmin(f32));
2215 try testArgs(f32, -0.0, -tmin(f32));7707 try testArgs(f32, -0.0, -tmin(f32));
2216 try testArgs(f32, -0.0, -0.0);7708 try testArgs(f32, -0.0, -0.0);
2217 try testArgs(f32, -0.0, 0.0);7709 try testArgs(f32, -0.0, 0.0);
2218 try testArgs(f32, -0.0, tmin(f32));7710 try testArgs(f32, -0.0, tmin(f32));
2219 try testArgs(f32, -0.0, fmin(f32));7711 try testArgs(f32, -0.0, fmin(f32));
2220 try testArgs(f32, -0.0, 0.1);7712 try testArgs(f32, -0.0, 1e-1);
2221 try testArgs(f32, -0.0, 1.0);7713 try testArgs(f32, -0.0, 1e0);
2222 try testArgs(f32, -0.0, 10.0);7714 try testArgs(f32, -0.0, 1e1);
2223 try testArgs(f32, -0.0, fmax(f32));7715 try testArgs(f32, -0.0, fmax(f32));
2224 try testArgs(f32, -0.0, inf(f32));7716 try testArgs(f32, -0.0, inf(f32));
2225 try testArgs(f32, -0.0, nan(f32));7717 try testArgs(f32, -0.0, nan(f32));
...@@ -2227,18 +7719,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2227,18 +7719,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2227 try testArgs(f32, 0.0, -nan(f32));7719 try testArgs(f32, 0.0, -nan(f32));
2228 try testArgs(f32, 0.0, -inf(f32));7720 try testArgs(f32, 0.0, -inf(f32));
2229 try testArgs(f32, 0.0, -fmax(f32));7721 try testArgs(f32, 0.0, -fmax(f32));
2230 try testArgs(f32, 0.0, -10.0);7722 try testArgs(f32, 0.0, -1e1);
2231 try testArgs(f32, 0.0, -1.0);7723 try testArgs(f32, 0.0, -1e0);
2232 try testArgs(f32, 0.0, -0.1);7724 try testArgs(f32, 0.0, -1e-1);
2233 try testArgs(f32, 0.0, -fmin(f32));7725 try testArgs(f32, 0.0, -fmin(f32));
2234 try testArgs(f32, 0.0, -tmin(f32));7726 try testArgs(f32, 0.0, -tmin(f32));
2235 try testArgs(f32, 0.0, -0.0);7727 try testArgs(f32, 0.0, -0.0);
2236 try testArgs(f32, 0.0, 0.0);7728 try testArgs(f32, 0.0, 0.0);
2237 try testArgs(f32, 0.0, tmin(f32));7729 try testArgs(f32, 0.0, tmin(f32));
2238 try testArgs(f32, 0.0, fmin(f32));7730 try testArgs(f32, 0.0, fmin(f32));
2239 try testArgs(f32, 0.0, 0.1);7731 try testArgs(f32, 0.0, 1e-1);
2240 try testArgs(f32, 0.0, 1.0);7732 try testArgs(f32, 0.0, 1e0);
2241 try testArgs(f32, 0.0, 10.0);7733 try testArgs(f32, 0.0, 1e1);
2242 try testArgs(f32, 0.0, fmax(f32));7734 try testArgs(f32, 0.0, fmax(f32));
2243 try testArgs(f32, 0.0, inf(f32));7735 try testArgs(f32, 0.0, inf(f32));
2244 try testArgs(f32, 0.0, nan(f32));7736 try testArgs(f32, 0.0, nan(f32));
...@@ -2246,18 +7738,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2246,18 +7738,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2246 try testArgs(f32, tmin(f32), -nan(f32));7738 try testArgs(f32, tmin(f32), -nan(f32));
2247 try testArgs(f32, tmin(f32), -inf(f32));7739 try testArgs(f32, tmin(f32), -inf(f32));
2248 try testArgs(f32, tmin(f32), -fmax(f32));7740 try testArgs(f32, tmin(f32), -fmax(f32));
2249 try testArgs(f32, tmin(f32), -10.0);7741 try testArgs(f32, tmin(f32), -1e1);
2250 try testArgs(f32, tmin(f32), -1.0);7742 try testArgs(f32, tmin(f32), -1e0);
2251 try testArgs(f32, tmin(f32), -0.1);7743 try testArgs(f32, tmin(f32), -1e-1);
2252 try testArgs(f32, tmin(f32), -fmin(f32));7744 try testArgs(f32, tmin(f32), -fmin(f32));
2253 try testArgs(f32, tmin(f32), -tmin(f32));7745 try testArgs(f32, tmin(f32), -tmin(f32));
2254 try testArgs(f32, tmin(f32), -0.0);7746 try testArgs(f32, tmin(f32), -0.0);
2255 try testArgs(f32, tmin(f32), 0.0);7747 try testArgs(f32, tmin(f32), 0.0);
2256 try testArgs(f32, tmin(f32), tmin(f32));7748 try testArgs(f32, tmin(f32), tmin(f32));
2257 try testArgs(f32, tmin(f32), fmin(f32));7749 try testArgs(f32, tmin(f32), fmin(f32));
2258 try testArgs(f32, tmin(f32), 0.1);7750 try testArgs(f32, tmin(f32), 1e-1);
2259 try testArgs(f32, tmin(f32), 1.0);7751 try testArgs(f32, tmin(f32), 1e0);
2260 try testArgs(f32, tmin(f32), 10.0);7752 try testArgs(f32, tmin(f32), 1e1);
2261 try testArgs(f32, tmin(f32), fmax(f32));7753 try testArgs(f32, tmin(f32), fmax(f32));
2262 try testArgs(f32, tmin(f32), inf(f32));7754 try testArgs(f32, tmin(f32), inf(f32));
2263 try testArgs(f32, tmin(f32), nan(f32));7755 try testArgs(f32, tmin(f32), nan(f32));
...@@ -2265,94 +7757,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2265,94 +7757,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2265 try testArgs(f32, fmin(f32), -nan(f32));7757 try testArgs(f32, fmin(f32), -nan(f32));
2266 try testArgs(f32, fmin(f32), -inf(f32));7758 try testArgs(f32, fmin(f32), -inf(f32));
2267 try testArgs(f32, fmin(f32), -fmax(f32));7759 try testArgs(f32, fmin(f32), -fmax(f32));
2268 try testArgs(f32, fmin(f32), -10.0);7760 try testArgs(f32, fmin(f32), -1e1);
2269 try testArgs(f32, fmin(f32), -1.0);7761 try testArgs(f32, fmin(f32), -1e0);
2270 try testArgs(f32, fmin(f32), -0.1);7762 try testArgs(f32, fmin(f32), -1e-1);
2271 try testArgs(f32, fmin(f32), -fmin(f32));7763 try testArgs(f32, fmin(f32), -fmin(f32));
2272 try testArgs(f32, fmin(f32), -tmin(f32));7764 try testArgs(f32, fmin(f32), -tmin(f32));
2273 try testArgs(f32, fmin(f32), -0.0);7765 try testArgs(f32, fmin(f32), -0.0);
2274 try testArgs(f32, fmin(f32), 0.0);7766 try testArgs(f32, fmin(f32), 0.0);
2275 try testArgs(f32, fmin(f32), tmin(f32));7767 try testArgs(f32, fmin(f32), tmin(f32));
2276 try testArgs(f32, fmin(f32), fmin(f32));7768 try testArgs(f32, fmin(f32), fmin(f32));
2277 try testArgs(f32, fmin(f32), 0.1);7769 try testArgs(f32, fmin(f32), 1e-1);
2278 try testArgs(f32, fmin(f32), 1.0);7770 try testArgs(f32, fmin(f32), 1e0);
2279 try testArgs(f32, fmin(f32), 10.0);7771 try testArgs(f32, fmin(f32), 1e1);
2280 try testArgs(f32, fmin(f32), fmax(f32));7772 try testArgs(f32, fmin(f32), fmax(f32));
2281 try testArgs(f32, fmin(f32), inf(f32));7773 try testArgs(f32, fmin(f32), inf(f32));
2282 try testArgs(f32, fmin(f32), nan(f32));7774 try testArgs(f32, fmin(f32), nan(f32));
22837775
2284 try testArgs(f32, 0.1, -nan(f32));7776 try testArgs(f32, 1e-1, -nan(f32));
2285 try testArgs(f32, 0.1, -inf(f32));7777 try testArgs(f32, 1e-1, -inf(f32));
2286 try testArgs(f32, 0.1, -fmax(f32));7778 try testArgs(f32, 1e-1, -fmax(f32));
2287 try testArgs(f32, 0.1, -10.0);7779 try testArgs(f32, 1e-1, -1e1);
2288 try testArgs(f32, 0.1, -1.0);7780 try testArgs(f32, 1e-1, -1e0);
2289 try testArgs(f32, 0.1, -0.1);7781 try testArgs(f32, 1e-1, -1e-1);
2290 try testArgs(f32, 0.1, -fmin(f32));7782 try testArgs(f32, 1e-1, -fmin(f32));
2291 try testArgs(f32, 0.1, -tmin(f32));7783 try testArgs(f32, 1e-1, -tmin(f32));
2292 try testArgs(f32, 0.1, -0.0);7784 try testArgs(f32, 1e-1, -0.0);
2293 try testArgs(f32, 0.1, 0.0);7785 try testArgs(f32, 1e-1, 0.0);
2294 try testArgs(f32, 0.1, tmin(f32));7786 try testArgs(f32, 1e-1, tmin(f32));
2295 try testArgs(f32, 0.1, fmin(f32));7787 try testArgs(f32, 1e-1, fmin(f32));
2296 try testArgs(f32, 0.1, 0.1);7788 try testArgs(f32, 1e-1, 1e-1);
2297 try testArgs(f32, 0.1, 1.0);7789 try testArgs(f32, 1e-1, 1e0);
2298 try testArgs(f32, 0.1, 10.0);7790 try testArgs(f32, 1e-1, 1e1);
2299 try testArgs(f32, 0.1, fmax(f32));7791 try testArgs(f32, 1e-1, fmax(f32));
2300 try testArgs(f32, 0.1, inf(f32));7792 try testArgs(f32, 1e-1, inf(f32));
2301 try testArgs(f32, 0.1, nan(f32));7793 try testArgs(f32, 1e-1, nan(f32));
23027794
2303 try testArgs(f32, 1.0, -nan(f32));7795 try testArgs(f32, 1e0, -nan(f32));
2304 try testArgs(f32, 1.0, -inf(f32));7796 try testArgs(f32, 1e0, -inf(f32));
2305 try testArgs(f32, 1.0, -fmax(f32));7797 try testArgs(f32, 1e0, -fmax(f32));
2306 try testArgs(f32, 1.0, -10.0);7798 try testArgs(f32, 1e0, -1e1);
2307 try testArgs(f32, 1.0, -1.0);7799 try testArgs(f32, 1e0, -1e0);
2308 try testArgs(f32, 1.0, -0.1);7800 try testArgs(f32, 1e0, -1e-1);
2309 try testArgs(f32, 1.0, -fmin(f32));7801 try testArgs(f32, 1e0, -fmin(f32));
2310 try testArgs(f32, 1.0, -tmin(f32));7802 try testArgs(f32, 1e0, -tmin(f32));
2311 try testArgs(f32, 1.0, -0.0);7803 try testArgs(f32, 1e0, -0.0);
2312 try testArgs(f32, 1.0, 0.0);7804 try testArgs(f32, 1e0, 0.0);
2313 try testArgs(f32, 1.0, tmin(f32));7805 try testArgs(f32, 1e0, tmin(f32));
2314 try testArgs(f32, 1.0, fmin(f32));7806 try testArgs(f32, 1e0, fmin(f32));
2315 try testArgs(f32, 1.0, 0.1);7807 try testArgs(f32, 1e0, 1e-1);
2316 try testArgs(f32, 1.0, 1.0);7808 try testArgs(f32, 1e0, 1e0);
2317 try testArgs(f32, 1.0, 10.0);7809 try testArgs(f32, 1e0, 1e1);
2318 try testArgs(f32, 1.0, fmax(f32));7810 try testArgs(f32, 1e0, fmax(f32));
2319 try testArgs(f32, 1.0, inf(f32));7811 try testArgs(f32, 1e0, inf(f32));
2320 try testArgs(f32, 1.0, nan(f32));7812 try testArgs(f32, 1e0, nan(f32));
23217813
2322 try testArgs(f32, 10.0, -nan(f32));7814 try testArgs(f32, 1e1, -nan(f32));
2323 try testArgs(f32, 10.0, -inf(f32));7815 try testArgs(f32, 1e1, -inf(f32));
2324 try testArgs(f32, 10.0, -fmax(f32));7816 try testArgs(f32, 1e1, -fmax(f32));
2325 try testArgs(f32, 10.0, -10.0);7817 try testArgs(f32, 1e1, -1e1);
2326 try testArgs(f32, 10.0, -1.0);7818 try testArgs(f32, 1e1, -1e0);
2327 try testArgs(f32, 10.0, -0.1);7819 try testArgs(f32, 1e1, -1e-1);
2328 try testArgs(f32, 10.0, -fmin(f32));7820 try testArgs(f32, 1e1, -fmin(f32));
2329 try testArgs(f32, 10.0, -tmin(f32));7821 try testArgs(f32, 1e1, -tmin(f32));
2330 try testArgs(f32, 10.0, -0.0);7822 try testArgs(f32, 1e1, -0.0);
2331 try testArgs(f32, 10.0, 0.0);7823 try testArgs(f32, 1e1, 0.0);
2332 try testArgs(f32, 10.0, tmin(f32));7824 try testArgs(f32, 1e1, tmin(f32));
2333 try testArgs(f32, 10.0, fmin(f32));7825 try testArgs(f32, 1e1, fmin(f32));
2334 try testArgs(f32, 10.0, 0.1);7826 try testArgs(f32, 1e1, 1e-1);
2335 try testArgs(f32, 10.0, 1.0);7827 try testArgs(f32, 1e1, 1e0);
2336 try testArgs(f32, 10.0, 10.0);7828 try testArgs(f32, 1e1, 1e1);
2337 try testArgs(f32, 10.0, fmax(f32));7829 try testArgs(f32, 1e1, fmax(f32));
2338 try testArgs(f32, 10.0, inf(f32));7830 try testArgs(f32, 1e1, inf(f32));
2339 try testArgs(f32, 10.0, nan(f32));7831 try testArgs(f32, 1e1, nan(f32));
23407832
2341 try testArgs(f32, fmax(f32), -nan(f32));7833 try testArgs(f32, fmax(f32), -nan(f32));
2342 try testArgs(f32, fmax(f32), -inf(f32));7834 try testArgs(f32, fmax(f32), -inf(f32));
2343 try testArgs(f32, fmax(f32), -fmax(f32));7835 try testArgs(f32, fmax(f32), -fmax(f32));
2344 try testArgs(f32, fmax(f32), -10.0);7836 try testArgs(f32, fmax(f32), -1e1);
2345 try testArgs(f32, fmax(f32), -1.0);7837 try testArgs(f32, fmax(f32), -1e0);
2346 try testArgs(f32, fmax(f32), -0.1);7838 try testArgs(f32, fmax(f32), -1e-1);
2347 try testArgs(f32, fmax(f32), -fmin(f32));7839 try testArgs(f32, fmax(f32), -fmin(f32));
2348 try testArgs(f32, fmax(f32), -tmin(f32));7840 try testArgs(f32, fmax(f32), -tmin(f32));
2349 try testArgs(f32, fmax(f32), -0.0);7841 try testArgs(f32, fmax(f32), -0.0);
2350 try testArgs(f32, fmax(f32), 0.0);7842 try testArgs(f32, fmax(f32), 0.0);
2351 try testArgs(f32, fmax(f32), tmin(f32));7843 try testArgs(f32, fmax(f32), tmin(f32));
2352 try testArgs(f32, fmax(f32), fmin(f32));7844 try testArgs(f32, fmax(f32), fmin(f32));
2353 try testArgs(f32, fmax(f32), 0.1);7845 try testArgs(f32, fmax(f32), 1e-1);
2354 try testArgs(f32, fmax(f32), 1.0);7846 try testArgs(f32, fmax(f32), 1e0);
2355 try testArgs(f32, fmax(f32), 10.0);7847 try testArgs(f32, fmax(f32), 1e1);
2356 try testArgs(f32, fmax(f32), fmax(f32));7848 try testArgs(f32, fmax(f32), fmax(f32));
2357 try testArgs(f32, fmax(f32), inf(f32));7849 try testArgs(f32, fmax(f32), inf(f32));
2358 try testArgs(f32, fmax(f32), nan(f32));7850 try testArgs(f32, fmax(f32), nan(f32));
...@@ -2360,18 +7852,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2360,18 +7852,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2360 try testArgs(f32, inf(f32), -nan(f32));7852 try testArgs(f32, inf(f32), -nan(f32));
2361 try testArgs(f32, inf(f32), -inf(f32));7853 try testArgs(f32, inf(f32), -inf(f32));
2362 try testArgs(f32, inf(f32), -fmax(f32));7854 try testArgs(f32, inf(f32), -fmax(f32));
2363 try testArgs(f32, inf(f32), -10.0);7855 try testArgs(f32, inf(f32), -1e1);
2364 try testArgs(f32, inf(f32), -1.0);7856 try testArgs(f32, inf(f32), -1e0);
2365 try testArgs(f32, inf(f32), -0.1);7857 try testArgs(f32, inf(f32), -1e-1);
2366 try testArgs(f32, inf(f32), -fmin(f32));7858 try testArgs(f32, inf(f32), -fmin(f32));
2367 try testArgs(f32, inf(f32), -tmin(f32));7859 try testArgs(f32, inf(f32), -tmin(f32));
2368 try testArgs(f32, inf(f32), -0.0);7860 try testArgs(f32, inf(f32), -0.0);
2369 try testArgs(f32, inf(f32), 0.0);7861 try testArgs(f32, inf(f32), 0.0);
2370 try testArgs(f32, inf(f32), tmin(f32));7862 try testArgs(f32, inf(f32), tmin(f32));
2371 try testArgs(f32, inf(f32), fmin(f32));7863 try testArgs(f32, inf(f32), fmin(f32));
2372 try testArgs(f32, inf(f32), 0.1);7864 try testArgs(f32, inf(f32), 1e-1);
2373 try testArgs(f32, inf(f32), 1.0);7865 try testArgs(f32, inf(f32), 1e0);
2374 try testArgs(f32, inf(f32), 10.0);7866 try testArgs(f32, inf(f32), 1e1);
2375 try testArgs(f32, inf(f32), fmax(f32));7867 try testArgs(f32, inf(f32), fmax(f32));
2376 try testArgs(f32, inf(f32), inf(f32));7868 try testArgs(f32, inf(f32), inf(f32));
2377 try testArgs(f32, inf(f32), nan(f32));7869 try testArgs(f32, inf(f32), nan(f32));
...@@ -2379,18 +7871,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2379,18 +7871,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2379 try testArgs(f32, nan(f32), -nan(f32));7871 try testArgs(f32, nan(f32), -nan(f32));
2380 try testArgs(f32, nan(f32), -inf(f32));7872 try testArgs(f32, nan(f32), -inf(f32));
2381 try testArgs(f32, nan(f32), -fmax(f32));7873 try testArgs(f32, nan(f32), -fmax(f32));
2382 try testArgs(f32, nan(f32), -10.0);7874 try testArgs(f32, nan(f32), -1e1);
2383 try testArgs(f32, nan(f32), -1.0);7875 try testArgs(f32, nan(f32), -1e0);
2384 try testArgs(f32, nan(f32), -0.1);7876 try testArgs(f32, nan(f32), -1e-1);
2385 try testArgs(f32, nan(f32), -fmin(f32));7877 try testArgs(f32, nan(f32), -fmin(f32));
2386 try testArgs(f32, nan(f32), -tmin(f32));7878 try testArgs(f32, nan(f32), -tmin(f32));
2387 try testArgs(f32, nan(f32), -0.0);7879 try testArgs(f32, nan(f32), -0.0);
2388 try testArgs(f32, nan(f32), 0.0);7880 try testArgs(f32, nan(f32), 0.0);
2389 try testArgs(f32, nan(f32), tmin(f32));7881 try testArgs(f32, nan(f32), tmin(f32));
2390 try testArgs(f32, nan(f32), fmin(f32));7882 try testArgs(f32, nan(f32), fmin(f32));
2391 try testArgs(f32, nan(f32), 0.1);7883 try testArgs(f32, nan(f32), 1e-1);
2392 try testArgs(f32, nan(f32), 1.0);7884 try testArgs(f32, nan(f32), 1e0);
2393 try testArgs(f32, nan(f32), 10.0);7885 try testArgs(f32, nan(f32), 1e1);
2394 try testArgs(f32, nan(f32), fmax(f32));7886 try testArgs(f32, nan(f32), fmax(f32));
2395 try testArgs(f32, nan(f32), inf(f32));7887 try testArgs(f32, nan(f32), inf(f32));
2396 try testArgs(f32, nan(f32), nan(f32));7888 try testArgs(f32, nan(f32), nan(f32));
...@@ -2398,18 +7890,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2398,18 +7890,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2398 try testArgs(f64, -nan(f64), -nan(f64));7890 try testArgs(f64, -nan(f64), -nan(f64));
2399 try testArgs(f64, -nan(f64), -inf(f64));7891 try testArgs(f64, -nan(f64), -inf(f64));
2400 try testArgs(f64, -nan(f64), -fmax(f64));7892 try testArgs(f64, -nan(f64), -fmax(f64));
2401 try testArgs(f64, -nan(f64), -10.0);7893 try testArgs(f64, -nan(f64), -1e1);
2402 try testArgs(f64, -nan(f64), -1.0);7894 try testArgs(f64, -nan(f64), -1e0);
2403 try testArgs(f64, -nan(f64), -0.1);7895 try testArgs(f64, -nan(f64), -1e-1);
2404 try testArgs(f64, -nan(f64), -fmin(f64));7896 try testArgs(f64, -nan(f64), -fmin(f64));
2405 try testArgs(f64, -nan(f64), -tmin(f64));7897 try testArgs(f64, -nan(f64), -tmin(f64));
2406 try testArgs(f64, -nan(f64), -0.0);7898 try testArgs(f64, -nan(f64), -0.0);
2407 try testArgs(f64, -nan(f64), 0.0);7899 try testArgs(f64, -nan(f64), 0.0);
2408 try testArgs(f64, -nan(f64), tmin(f64));7900 try testArgs(f64, -nan(f64), tmin(f64));
2409 try testArgs(f64, -nan(f64), fmin(f64));7901 try testArgs(f64, -nan(f64), fmin(f64));
2410 try testArgs(f64, -nan(f64), 0.1);7902 try testArgs(f64, -nan(f64), 1e-1);
2411 try testArgs(f64, -nan(f64), 1.0);7903 try testArgs(f64, -nan(f64), 1e0);
2412 try testArgs(f64, -nan(f64), 10.0);7904 try testArgs(f64, -nan(f64), 1e1);
2413 try testArgs(f64, -nan(f64), fmax(f64));7905 try testArgs(f64, -nan(f64), fmax(f64));
2414 try testArgs(f64, -nan(f64), inf(f64));7906 try testArgs(f64, -nan(f64), inf(f64));
2415 try testArgs(f64, -nan(f64), nan(f64));7907 try testArgs(f64, -nan(f64), nan(f64));
...@@ -2417,18 +7909,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2417,18 +7909,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2417 try testArgs(f64, -inf(f64), -nan(f64));7909 try testArgs(f64, -inf(f64), -nan(f64));
2418 try testArgs(f64, -inf(f64), -inf(f64));7910 try testArgs(f64, -inf(f64), -inf(f64));
2419 try testArgs(f64, -inf(f64), -fmax(f64));7911 try testArgs(f64, -inf(f64), -fmax(f64));
2420 try testArgs(f64, -inf(f64), -10.0);7912 try testArgs(f64, -inf(f64), -1e1);
2421 try testArgs(f64, -inf(f64), -1.0);7913 try testArgs(f64, -inf(f64), -1e0);
2422 try testArgs(f64, -inf(f64), -0.1);7914 try testArgs(f64, -inf(f64), -1e-1);
2423 try testArgs(f64, -inf(f64), -fmin(f64));7915 try testArgs(f64, -inf(f64), -fmin(f64));
2424 try testArgs(f64, -inf(f64), -tmin(f64));7916 try testArgs(f64, -inf(f64), -tmin(f64));
2425 try testArgs(f64, -inf(f64), -0.0);7917 try testArgs(f64, -inf(f64), -0.0);
2426 try testArgs(f64, -inf(f64), 0.0);7918 try testArgs(f64, -inf(f64), 0.0);
2427 try testArgs(f64, -inf(f64), tmin(f64));7919 try testArgs(f64, -inf(f64), tmin(f64));
2428 try testArgs(f64, -inf(f64), fmin(f64));7920 try testArgs(f64, -inf(f64), fmin(f64));
2429 try testArgs(f64, -inf(f64), 0.1);7921 try testArgs(f64, -inf(f64), 1e-1);
2430 try testArgs(f64, -inf(f64), 1.0);7922 try testArgs(f64, -inf(f64), 1e0);
2431 try testArgs(f64, -inf(f64), 10.0);7923 try testArgs(f64, -inf(f64), 1e1);
2432 try testArgs(f64, -inf(f64), fmax(f64));7924 try testArgs(f64, -inf(f64), fmax(f64));
2433 try testArgs(f64, -inf(f64), inf(f64));7925 try testArgs(f64, -inf(f64), inf(f64));
2434 try testArgs(f64, -inf(f64), nan(f64));7926 try testArgs(f64, -inf(f64), nan(f64));
...@@ -2436,94 +7928,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2436,94 +7928,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2436 try testArgs(f64, -fmax(f64), -nan(f64));7928 try testArgs(f64, -fmax(f64), -nan(f64));
2437 try testArgs(f64, -fmax(f64), -inf(f64));7929 try testArgs(f64, -fmax(f64), -inf(f64));
2438 try testArgs(f64, -fmax(f64), -fmax(f64));7930 try testArgs(f64, -fmax(f64), -fmax(f64));
2439 try testArgs(f64, -fmax(f64), -10.0);7931 try testArgs(f64, -fmax(f64), -1e1);
2440 try testArgs(f64, -fmax(f64), -1.0);7932 try testArgs(f64, -fmax(f64), -1e0);
2441 try testArgs(f64, -fmax(f64), -0.1);7933 try testArgs(f64, -fmax(f64), -1e-1);
2442 try testArgs(f64, -fmax(f64), -fmin(f64));7934 try testArgs(f64, -fmax(f64), -fmin(f64));
2443 try testArgs(f64, -fmax(f64), -tmin(f64));7935 try testArgs(f64, -fmax(f64), -tmin(f64));
2444 try testArgs(f64, -fmax(f64), -0.0);7936 try testArgs(f64, -fmax(f64), -0.0);
2445 try testArgs(f64, -fmax(f64), 0.0);7937 try testArgs(f64, -fmax(f64), 0.0);
2446 try testArgs(f64, -fmax(f64), tmin(f64));7938 try testArgs(f64, -fmax(f64), tmin(f64));
2447 try testArgs(f64, -fmax(f64), fmin(f64));7939 try testArgs(f64, -fmax(f64), fmin(f64));
2448 try testArgs(f64, -fmax(f64), 0.1);7940 try testArgs(f64, -fmax(f64), 1e-1);
2449 try testArgs(f64, -fmax(f64), 1.0);7941 try testArgs(f64, -fmax(f64), 1e0);
2450 try testArgs(f64, -fmax(f64), 10.0);7942 try testArgs(f64, -fmax(f64), 1e1);
2451 try testArgs(f64, -fmax(f64), fmax(f64));7943 try testArgs(f64, -fmax(f64), fmax(f64));
2452 try testArgs(f64, -fmax(f64), inf(f64));7944 try testArgs(f64, -fmax(f64), inf(f64));
2453 try testArgs(f64, -fmax(f64), nan(f64));7945 try testArgs(f64, -fmax(f64), nan(f64));
24547946
2455 try testArgs(f64, -10.0, -nan(f64));7947 try testArgs(f64, -1e1, -nan(f64));
2456 try testArgs(f64, -10.0, -inf(f64));7948 try testArgs(f64, -1e1, -inf(f64));
2457 try testArgs(f64, -10.0, -fmax(f64));7949 try testArgs(f64, -1e1, -fmax(f64));
2458 try testArgs(f64, -10.0, -10.0);7950 try testArgs(f64, -1e1, -1e1);
2459 try testArgs(f64, -10.0, -1.0);7951 try testArgs(f64, -1e1, -1e0);
2460 try testArgs(f64, -10.0, -0.1);7952 try testArgs(f64, -1e1, -1e-1);
2461 try testArgs(f64, -10.0, -fmin(f64));7953 try testArgs(f64, -1e1, -fmin(f64));
2462 try testArgs(f64, -10.0, -tmin(f64));7954 try testArgs(f64, -1e1, -tmin(f64));
2463 try testArgs(f64, -10.0, -0.0);7955 try testArgs(f64, -1e1, -0.0);
2464 try testArgs(f64, -10.0, 0.0);7956 try testArgs(f64, -1e1, 0.0);
2465 try testArgs(f64, -10.0, tmin(f64));7957 try testArgs(f64, -1e1, tmin(f64));
2466 try testArgs(f64, -10.0, fmin(f64));7958 try testArgs(f64, -1e1, fmin(f64));
2467 try testArgs(f64, -10.0, 0.1);7959 try testArgs(f64, -1e1, 1e-1);
2468 try testArgs(f64, -10.0, 1.0);7960 try testArgs(f64, -1e1, 1e0);
2469 try testArgs(f64, -10.0, 10.0);7961 try testArgs(f64, -1e1, 1e1);
2470 try testArgs(f64, -10.0, fmax(f64));7962 try testArgs(f64, -1e1, fmax(f64));
2471 try testArgs(f64, -10.0, inf(f64));7963 try testArgs(f64, -1e1, inf(f64));
2472 try testArgs(f64, -10.0, nan(f64));7964 try testArgs(f64, -1e1, nan(f64));
24737965
2474 try testArgs(f64, -1.0, -nan(f64));7966 try testArgs(f64, -1e0, -nan(f64));
2475 try testArgs(f64, -1.0, -inf(f64));7967 try testArgs(f64, -1e0, -inf(f64));
2476 try testArgs(f64, -1.0, -fmax(f64));7968 try testArgs(f64, -1e0, -fmax(f64));
2477 try testArgs(f64, -1.0, -10.0);7969 try testArgs(f64, -1e0, -1e1);
2478 try testArgs(f64, -1.0, -1.0);7970 try testArgs(f64, -1e0, -1e0);
2479 try testArgs(f64, -1.0, -0.1);7971 try testArgs(f64, -1e0, -1e-1);
2480 try testArgs(f64, -1.0, -fmin(f64));7972 try testArgs(f64, -1e0, -fmin(f64));
2481 try testArgs(f64, -1.0, -tmin(f64));7973 try testArgs(f64, -1e0, -tmin(f64));
2482 try testArgs(f64, -1.0, -0.0);7974 try testArgs(f64, -1e0, -0.0);
2483 try testArgs(f64, -1.0, 0.0);7975 try testArgs(f64, -1e0, 0.0);
2484 try testArgs(f64, -1.0, tmin(f64));7976 try testArgs(f64, -1e0, tmin(f64));
2485 try testArgs(f64, -1.0, fmin(f64));7977 try testArgs(f64, -1e0, fmin(f64));
2486 try testArgs(f64, -1.0, 0.1);7978 try testArgs(f64, -1e0, 1e-1);
2487 try testArgs(f64, -1.0, 1.0);7979 try testArgs(f64, -1e0, 1e0);
2488 try testArgs(f64, -1.0, 10.0);7980 try testArgs(f64, -1e0, 1e1);
2489 try testArgs(f64, -1.0, fmax(f64));7981 try testArgs(f64, -1e0, fmax(f64));
2490 try testArgs(f64, -1.0, inf(f64));7982 try testArgs(f64, -1e0, inf(f64));
2491 try testArgs(f64, -1.0, nan(f64));7983 try testArgs(f64, -1e0, nan(f64));
24927984
2493 try testArgs(f64, -0.1, -nan(f64));7985 try testArgs(f64, -1e-1, -nan(f64));
2494 try testArgs(f64, -0.1, -inf(f64));7986 try testArgs(f64, -1e-1, -inf(f64));
2495 try testArgs(f64, -0.1, -fmax(f64));7987 try testArgs(f64, -1e-1, -fmax(f64));
2496 try testArgs(f64, -0.1, -10.0);7988 try testArgs(f64, -1e-1, -1e1);
2497 try testArgs(f64, -0.1, -1.0);7989 try testArgs(f64, -1e-1, -1e0);
2498 try testArgs(f64, -0.1, -0.1);7990 try testArgs(f64, -1e-1, -1e-1);
2499 try testArgs(f64, -0.1, -fmin(f64));7991 try testArgs(f64, -1e-1, -fmin(f64));
2500 try testArgs(f64, -0.1, -tmin(f64));7992 try testArgs(f64, -1e-1, -tmin(f64));
2501 try testArgs(f64, -0.1, -0.0);7993 try testArgs(f64, -1e-1, -0.0);
2502 try testArgs(f64, -0.1, 0.0);7994 try testArgs(f64, -1e-1, 0.0);
2503 try testArgs(f64, -0.1, tmin(f64));7995 try testArgs(f64, -1e-1, tmin(f64));
2504 try testArgs(f64, -0.1, fmin(f64));7996 try testArgs(f64, -1e-1, fmin(f64));
2505 try testArgs(f64, -0.1, 0.1);7997 try testArgs(f64, -1e-1, 1e-1);
2506 try testArgs(f64, -0.1, 1.0);7998 try testArgs(f64, -1e-1, 1e0);
2507 try testArgs(f64, -0.1, 10.0);7999 try testArgs(f64, -1e-1, 1e1);
2508 try testArgs(f64, -0.1, fmax(f64));8000 try testArgs(f64, -1e-1, fmax(f64));
2509 try testArgs(f64, -0.1, inf(f64));8001 try testArgs(f64, -1e-1, inf(f64));
2510 try testArgs(f64, -0.1, nan(f64));8002 try testArgs(f64, -1e-1, nan(f64));
25118003
2512 try testArgs(f64, -fmin(f64), -nan(f64));8004 try testArgs(f64, -fmin(f64), -nan(f64));
2513 try testArgs(f64, -fmin(f64), -inf(f64));8005 try testArgs(f64, -fmin(f64), -inf(f64));
2514 try testArgs(f64, -fmin(f64), -fmax(f64));8006 try testArgs(f64, -fmin(f64), -fmax(f64));
2515 try testArgs(f64, -fmin(f64), -10.0);8007 try testArgs(f64, -fmin(f64), -1e1);
2516 try testArgs(f64, -fmin(f64), -1.0);8008 try testArgs(f64, -fmin(f64), -1e0);
2517 try testArgs(f64, -fmin(f64), -0.1);8009 try testArgs(f64, -fmin(f64), -1e-1);
2518 try testArgs(f64, -fmin(f64), -fmin(f64));8010 try testArgs(f64, -fmin(f64), -fmin(f64));
2519 try testArgs(f64, -fmin(f64), -tmin(f64));8011 try testArgs(f64, -fmin(f64), -tmin(f64));
2520 try testArgs(f64, -fmin(f64), -0.0);8012 try testArgs(f64, -fmin(f64), -0.0);
2521 try testArgs(f64, -fmin(f64), 0.0);8013 try testArgs(f64, -fmin(f64), 0.0);
2522 try testArgs(f64, -fmin(f64), tmin(f64));8014 try testArgs(f64, -fmin(f64), tmin(f64));
2523 try testArgs(f64, -fmin(f64), fmin(f64));8015 try testArgs(f64, -fmin(f64), fmin(f64));
2524 try testArgs(f64, -fmin(f64), 0.1);8016 try testArgs(f64, -fmin(f64), 1e-1);
2525 try testArgs(f64, -fmin(f64), 1.0);8017 try testArgs(f64, -fmin(f64), 1e0);
2526 try testArgs(f64, -fmin(f64), 10.0);8018 try testArgs(f64, -fmin(f64), 1e1);
2527 try testArgs(f64, -fmin(f64), fmax(f64));8019 try testArgs(f64, -fmin(f64), fmax(f64));
2528 try testArgs(f64, -fmin(f64), inf(f64));8020 try testArgs(f64, -fmin(f64), inf(f64));
2529 try testArgs(f64, -fmin(f64), nan(f64));8021 try testArgs(f64, -fmin(f64), nan(f64));
...@@ -2531,18 +8023,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2531,18 +8023,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2531 try testArgs(f64, -tmin(f64), -nan(f64));8023 try testArgs(f64, -tmin(f64), -nan(f64));
2532 try testArgs(f64, -tmin(f64), -inf(f64));8024 try testArgs(f64, -tmin(f64), -inf(f64));
2533 try testArgs(f64, -tmin(f64), -fmax(f64));8025 try testArgs(f64, -tmin(f64), -fmax(f64));
2534 try testArgs(f64, -tmin(f64), -10.0);8026 try testArgs(f64, -tmin(f64), -1e1);
2535 try testArgs(f64, -tmin(f64), -1.0);8027 try testArgs(f64, -tmin(f64), -1e0);
2536 try testArgs(f64, -tmin(f64), -0.1);8028 try testArgs(f64, -tmin(f64), -1e-1);
2537 try testArgs(f64, -tmin(f64), -fmin(f64));8029 try testArgs(f64, -tmin(f64), -fmin(f64));
2538 try testArgs(f64, -tmin(f64), -tmin(f64));8030 try testArgs(f64, -tmin(f64), -tmin(f64));
2539 try testArgs(f64, -tmin(f64), -0.0);8031 try testArgs(f64, -tmin(f64), -0.0);
2540 try testArgs(f64, -tmin(f64), 0.0);8032 try testArgs(f64, -tmin(f64), 0.0);
2541 try testArgs(f64, -tmin(f64), tmin(f64));8033 try testArgs(f64, -tmin(f64), tmin(f64));
2542 try testArgs(f64, -tmin(f64), fmin(f64));8034 try testArgs(f64, -tmin(f64), fmin(f64));
2543 try testArgs(f64, -tmin(f64), 0.1);8035 try testArgs(f64, -tmin(f64), 1e-1);
2544 try testArgs(f64, -tmin(f64), 1.0);8036 try testArgs(f64, -tmin(f64), 1e0);
2545 try testArgs(f64, -tmin(f64), 10.0);8037 try testArgs(f64, -tmin(f64), 1e1);
2546 try testArgs(f64, -tmin(f64), fmax(f64));8038 try testArgs(f64, -tmin(f64), fmax(f64));
2547 try testArgs(f64, -tmin(f64), inf(f64));8039 try testArgs(f64, -tmin(f64), inf(f64));
2548 try testArgs(f64, -tmin(f64), nan(f64));8040 try testArgs(f64, -tmin(f64), nan(f64));
...@@ -2550,18 +8042,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2550,18 +8042,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2550 try testArgs(f64, -0.0, -nan(f64));8042 try testArgs(f64, -0.0, -nan(f64));
2551 try testArgs(f64, -0.0, -inf(f64));8043 try testArgs(f64, -0.0, -inf(f64));
2552 try testArgs(f64, -0.0, -fmax(f64));8044 try testArgs(f64, -0.0, -fmax(f64));
2553 try testArgs(f64, -0.0, -10.0);8045 try testArgs(f64, -0.0, -1e1);
2554 try testArgs(f64, -0.0, -1.0);8046 try testArgs(f64, -0.0, -1e0);
2555 try testArgs(f64, -0.0, -0.1);8047 try testArgs(f64, -0.0, -1e-1);
2556 try testArgs(f64, -0.0, -fmin(f64));8048 try testArgs(f64, -0.0, -fmin(f64));
2557 try testArgs(f64, -0.0, -tmin(f64));8049 try testArgs(f64, -0.0, -tmin(f64));
2558 try testArgs(f64, -0.0, -0.0);8050 try testArgs(f64, -0.0, -0.0);
2559 try testArgs(f64, -0.0, 0.0);8051 try testArgs(f64, -0.0, 0.0);
2560 try testArgs(f64, -0.0, tmin(f64));8052 try testArgs(f64, -0.0, tmin(f64));
2561 try testArgs(f64, -0.0, fmin(f64));8053 try testArgs(f64, -0.0, fmin(f64));
2562 try testArgs(f64, -0.0, 0.1);8054 try testArgs(f64, -0.0, 1e-1);
2563 try testArgs(f64, -0.0, 1.0);8055 try testArgs(f64, -0.0, 1e0);
2564 try testArgs(f64, -0.0, 10.0);8056 try testArgs(f64, -0.0, 1e1);
2565 try testArgs(f64, -0.0, fmax(f64));8057 try testArgs(f64, -0.0, fmax(f64));
2566 try testArgs(f64, -0.0, inf(f64));8058 try testArgs(f64, -0.0, inf(f64));
2567 try testArgs(f64, -0.0, nan(f64));8059 try testArgs(f64, -0.0, nan(f64));
...@@ -2569,18 +8061,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2569,18 +8061,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2569 try testArgs(f64, 0.0, -nan(f64));8061 try testArgs(f64, 0.0, -nan(f64));
2570 try testArgs(f64, 0.0, -inf(f64));8062 try testArgs(f64, 0.0, -inf(f64));
2571 try testArgs(f64, 0.0, -fmax(f64));8063 try testArgs(f64, 0.0, -fmax(f64));
2572 try testArgs(f64, 0.0, -10.0);8064 try testArgs(f64, 0.0, -1e1);
2573 try testArgs(f64, 0.0, -1.0);8065 try testArgs(f64, 0.0, -1e0);
2574 try testArgs(f64, 0.0, -0.1);8066 try testArgs(f64, 0.0, -1e-1);
2575 try testArgs(f64, 0.0, -fmin(f64));8067 try testArgs(f64, 0.0, -fmin(f64));
2576 try testArgs(f64, 0.0, -tmin(f64));8068 try testArgs(f64, 0.0, -tmin(f64));
2577 try testArgs(f64, 0.0, -0.0);8069 try testArgs(f64, 0.0, -0.0);
2578 try testArgs(f64, 0.0, 0.0);8070 try testArgs(f64, 0.0, 0.0);
2579 try testArgs(f64, 0.0, tmin(f64));8071 try testArgs(f64, 0.0, tmin(f64));
2580 try testArgs(f64, 0.0, fmin(f64));8072 try testArgs(f64, 0.0, fmin(f64));
2581 try testArgs(f64, 0.0, 0.1);8073 try testArgs(f64, 0.0, 1e-1);
2582 try testArgs(f64, 0.0, 1.0);8074 try testArgs(f64, 0.0, 1e0);
2583 try testArgs(f64, 0.0, 10.0);8075 try testArgs(f64, 0.0, 1e1);
2584 try testArgs(f64, 0.0, fmax(f64));8076 try testArgs(f64, 0.0, fmax(f64));
2585 try testArgs(f64, 0.0, inf(f64));8077 try testArgs(f64, 0.0, inf(f64));
2586 try testArgs(f64, 0.0, nan(f64));8078 try testArgs(f64, 0.0, nan(f64));
...@@ -2588,18 +8080,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2588,18 +8080,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2588 try testArgs(f64, tmin(f64), -nan(f64));8080 try testArgs(f64, tmin(f64), -nan(f64));
2589 try testArgs(f64, tmin(f64), -inf(f64));8081 try testArgs(f64, tmin(f64), -inf(f64));
2590 try testArgs(f64, tmin(f64), -fmax(f64));8082 try testArgs(f64, tmin(f64), -fmax(f64));
2591 try testArgs(f64, tmin(f64), -10.0);8083 try testArgs(f64, tmin(f64), -1e1);
2592 try testArgs(f64, tmin(f64), -1.0);8084 try testArgs(f64, tmin(f64), -1e0);
2593 try testArgs(f64, tmin(f64), -0.1);8085 try testArgs(f64, tmin(f64), -1e-1);
2594 try testArgs(f64, tmin(f64), -fmin(f64));8086 try testArgs(f64, tmin(f64), -fmin(f64));
2595 try testArgs(f64, tmin(f64), -tmin(f64));8087 try testArgs(f64, tmin(f64), -tmin(f64));
2596 try testArgs(f64, tmin(f64), -0.0);8088 try testArgs(f64, tmin(f64), -0.0);
2597 try testArgs(f64, tmin(f64), 0.0);8089 try testArgs(f64, tmin(f64), 0.0);
2598 try testArgs(f64, tmin(f64), tmin(f64));8090 try testArgs(f64, tmin(f64), tmin(f64));
2599 try testArgs(f64, tmin(f64), fmin(f64));8091 try testArgs(f64, tmin(f64), fmin(f64));
2600 try testArgs(f64, tmin(f64), 0.1);8092 try testArgs(f64, tmin(f64), 1e-1);
2601 try testArgs(f64, tmin(f64), 1.0);8093 try testArgs(f64, tmin(f64), 1e0);
2602 try testArgs(f64, tmin(f64), 10.0);8094 try testArgs(f64, tmin(f64), 1e1);
2603 try testArgs(f64, tmin(f64), fmax(f64));8095 try testArgs(f64, tmin(f64), fmax(f64));
2604 try testArgs(f64, tmin(f64), inf(f64));8096 try testArgs(f64, tmin(f64), inf(f64));
2605 try testArgs(f64, tmin(f64), nan(f64));8097 try testArgs(f64, tmin(f64), nan(f64));
...@@ -2607,94 +8099,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2607,94 +8099,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2607 try testArgs(f64, fmin(f64), -nan(f64));8099 try testArgs(f64, fmin(f64), -nan(f64));
2608 try testArgs(f64, fmin(f64), -inf(f64));8100 try testArgs(f64, fmin(f64), -inf(f64));
2609 try testArgs(f64, fmin(f64), -fmax(f64));8101 try testArgs(f64, fmin(f64), -fmax(f64));
2610 try testArgs(f64, fmin(f64), -10.0);8102 try testArgs(f64, fmin(f64), -1e1);
2611 try testArgs(f64, fmin(f64), -1.0);8103 try testArgs(f64, fmin(f64), -1e0);
2612 try testArgs(f64, fmin(f64), -0.1);8104 try testArgs(f64, fmin(f64), -1e-1);
2613 try testArgs(f64, fmin(f64), -fmin(f64));8105 try testArgs(f64, fmin(f64), -fmin(f64));
2614 try testArgs(f64, fmin(f64), -tmin(f64));8106 try testArgs(f64, fmin(f64), -tmin(f64));
2615 try testArgs(f64, fmin(f64), -0.0);8107 try testArgs(f64, fmin(f64), -0.0);
2616 try testArgs(f64, fmin(f64), 0.0);8108 try testArgs(f64, fmin(f64), 0.0);
2617 try testArgs(f64, fmin(f64), tmin(f64));8109 try testArgs(f64, fmin(f64), tmin(f64));
2618 try testArgs(f64, fmin(f64), fmin(f64));8110 try testArgs(f64, fmin(f64), fmin(f64));
2619 try testArgs(f64, fmin(f64), 0.1);8111 try testArgs(f64, fmin(f64), 1e-1);
2620 try testArgs(f64, fmin(f64), 1.0);8112 try testArgs(f64, fmin(f64), 1e0);
2621 try testArgs(f64, fmin(f64), 10.0);8113 try testArgs(f64, fmin(f64), 1e1);
2622 try testArgs(f64, fmin(f64), fmax(f64));8114 try testArgs(f64, fmin(f64), fmax(f64));
2623 try testArgs(f64, fmin(f64), inf(f64));8115 try testArgs(f64, fmin(f64), inf(f64));
2624 try testArgs(f64, fmin(f64), nan(f64));8116 try testArgs(f64, fmin(f64), nan(f64));
26258117
2626 try testArgs(f64, 0.1, -nan(f64));8118 try testArgs(f64, 1e-1, -nan(f64));
2627 try testArgs(f64, 0.1, -inf(f64));8119 try testArgs(f64, 1e-1, -inf(f64));
2628 try testArgs(f64, 0.1, -fmax(f64));8120 try testArgs(f64, 1e-1, -fmax(f64));
2629 try testArgs(f64, 0.1, -10.0);8121 try testArgs(f64, 1e-1, -1e1);
2630 try testArgs(f64, 0.1, -1.0);8122 try testArgs(f64, 1e-1, -1e0);
2631 try testArgs(f64, 0.1, -0.1);8123 try testArgs(f64, 1e-1, -1e-1);
2632 try testArgs(f64, 0.1, -fmin(f64));8124 try testArgs(f64, 1e-1, -fmin(f64));
2633 try testArgs(f64, 0.1, -tmin(f64));8125 try testArgs(f64, 1e-1, -tmin(f64));
2634 try testArgs(f64, 0.1, -0.0);8126 try testArgs(f64, 1e-1, -0.0);
2635 try testArgs(f64, 0.1, 0.0);8127 try testArgs(f64, 1e-1, 0.0);
2636 try testArgs(f64, 0.1, tmin(f64));8128 try testArgs(f64, 1e-1, tmin(f64));
2637 try testArgs(f64, 0.1, fmin(f64));8129 try testArgs(f64, 1e-1, fmin(f64));
2638 try testArgs(f64, 0.1, 0.1);8130 try testArgs(f64, 1e-1, 1e-1);
2639 try testArgs(f64, 0.1, 1.0);8131 try testArgs(f64, 1e-1, 1e0);
2640 try testArgs(f64, 0.1, 10.0);8132 try testArgs(f64, 1e-1, 1e1);
2641 try testArgs(f64, 0.1, fmax(f64));8133 try testArgs(f64, 1e-1, fmax(f64));
2642 try testArgs(f64, 0.1, inf(f64));8134 try testArgs(f64, 1e-1, inf(f64));
2643 try testArgs(f64, 0.1, nan(f64));8135 try testArgs(f64, 1e-1, nan(f64));
26448136
2645 try testArgs(f64, 1.0, -nan(f64));8137 try testArgs(f64, 1e0, -nan(f64));
2646 try testArgs(f64, 1.0, -inf(f64));8138 try testArgs(f64, 1e0, -inf(f64));
2647 try testArgs(f64, 1.0, -fmax(f64));8139 try testArgs(f64, 1e0, -fmax(f64));
2648 try testArgs(f64, 1.0, -10.0);8140 try testArgs(f64, 1e0, -1e1);
2649 try testArgs(f64, 1.0, -1.0);8141 try testArgs(f64, 1e0, -1e0);
2650 try testArgs(f64, 1.0, -0.1);8142 try testArgs(f64, 1e0, -1e-1);
2651 try testArgs(f64, 1.0, -fmin(f64));8143 try testArgs(f64, 1e0, -fmin(f64));
2652 try testArgs(f64, 1.0, -tmin(f64));8144 try testArgs(f64, 1e0, -tmin(f64));
2653 try testArgs(f64, 1.0, -0.0);8145 try testArgs(f64, 1e0, -0.0);
2654 try testArgs(f64, 1.0, 0.0);8146 try testArgs(f64, 1e0, 0.0);
2655 try testArgs(f64, 1.0, tmin(f64));8147 try testArgs(f64, 1e0, tmin(f64));
2656 try testArgs(f64, 1.0, fmin(f64));8148 try testArgs(f64, 1e0, fmin(f64));
2657 try testArgs(f64, 1.0, 0.1);8149 try testArgs(f64, 1e0, 1e-1);
2658 try testArgs(f64, 1.0, 1.0);8150 try testArgs(f64, 1e0, 1e0);
2659 try testArgs(f64, 1.0, 10.0);8151 try testArgs(f64, 1e0, 1e1);
2660 try testArgs(f64, 1.0, fmax(f64));8152 try testArgs(f64, 1e0, fmax(f64));
2661 try testArgs(f64, 1.0, inf(f64));8153 try testArgs(f64, 1e0, inf(f64));
2662 try testArgs(f64, 1.0, nan(f64));8154 try testArgs(f64, 1e0, nan(f64));
26638155
2664 try testArgs(f64, 10.0, -nan(f64));8156 try testArgs(f64, 1e1, -nan(f64));
2665 try testArgs(f64, 10.0, -inf(f64));8157 try testArgs(f64, 1e1, -inf(f64));
2666 try testArgs(f64, 10.0, -fmax(f64));8158 try testArgs(f64, 1e1, -fmax(f64));
2667 try testArgs(f64, 10.0, -10.0);8159 try testArgs(f64, 1e1, -1e1);
2668 try testArgs(f64, 10.0, -1.0);8160 try testArgs(f64, 1e1, -1e0);
2669 try testArgs(f64, 10.0, -0.1);8161 try testArgs(f64, 1e1, -1e-1);
2670 try testArgs(f64, 10.0, -fmin(f64));8162 try testArgs(f64, 1e1, -fmin(f64));
2671 try testArgs(f64, 10.0, -tmin(f64));8163 try testArgs(f64, 1e1, -tmin(f64));
2672 try testArgs(f64, 10.0, -0.0);8164 try testArgs(f64, 1e1, -0.0);
2673 try testArgs(f64, 10.0, 0.0);8165 try testArgs(f64, 1e1, 0.0);
2674 try testArgs(f64, 10.0, tmin(f64));8166 try testArgs(f64, 1e1, tmin(f64));
2675 try testArgs(f64, 10.0, fmin(f64));8167 try testArgs(f64, 1e1, fmin(f64));
2676 try testArgs(f64, 10.0, 0.1);8168 try testArgs(f64, 1e1, 1e-1);
2677 try testArgs(f64, 10.0, 1.0);8169 try testArgs(f64, 1e1, 1e0);
2678 try testArgs(f64, 10.0, 10.0);8170 try testArgs(f64, 1e1, 1e1);
2679 try testArgs(f64, 10.0, fmax(f64));8171 try testArgs(f64, 1e1, fmax(f64));
2680 try testArgs(f64, 10.0, inf(f64));8172 try testArgs(f64, 1e1, inf(f64));
2681 try testArgs(f64, 10.0, nan(f64));8173 try testArgs(f64, 1e1, nan(f64));
26828174
2683 try testArgs(f64, fmax(f64), -nan(f64));8175 try testArgs(f64, fmax(f64), -nan(f64));
2684 try testArgs(f64, fmax(f64), -inf(f64));8176 try testArgs(f64, fmax(f64), -inf(f64));
2685 try testArgs(f64, fmax(f64), -fmax(f64));8177 try testArgs(f64, fmax(f64), -fmax(f64));
2686 try testArgs(f64, fmax(f64), -10.0);8178 try testArgs(f64, fmax(f64), -1e1);
2687 try testArgs(f64, fmax(f64), -1.0);8179 try testArgs(f64, fmax(f64), -1e0);
2688 try testArgs(f64, fmax(f64), -0.1);8180 try testArgs(f64, fmax(f64), -1e-1);
2689 try testArgs(f64, fmax(f64), -fmin(f64));8181 try testArgs(f64, fmax(f64), -fmin(f64));
2690 try testArgs(f64, fmax(f64), -tmin(f64));8182 try testArgs(f64, fmax(f64), -tmin(f64));
2691 try testArgs(f64, fmax(f64), -0.0);8183 try testArgs(f64, fmax(f64), -0.0);
2692 try testArgs(f64, fmax(f64), 0.0);8184 try testArgs(f64, fmax(f64), 0.0);
2693 try testArgs(f64, fmax(f64), tmin(f64));8185 try testArgs(f64, fmax(f64), tmin(f64));
2694 try testArgs(f64, fmax(f64), fmin(f64));8186 try testArgs(f64, fmax(f64), fmin(f64));
2695 try testArgs(f64, fmax(f64), 0.1);8187 try testArgs(f64, fmax(f64), 1e-1);
2696 try testArgs(f64, fmax(f64), 1.0);8188 try testArgs(f64, fmax(f64), 1e0);
2697 try testArgs(f64, fmax(f64), 10.0);8189 try testArgs(f64, fmax(f64), 1e1);
2698 try testArgs(f64, fmax(f64), fmax(f64));8190 try testArgs(f64, fmax(f64), fmax(f64));
2699 try testArgs(f64, fmax(f64), inf(f64));8191 try testArgs(f64, fmax(f64), inf(f64));
2700 try testArgs(f64, fmax(f64), nan(f64));8192 try testArgs(f64, fmax(f64), nan(f64));
...@@ -2702,18 +8194,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2702,18 +8194,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2702 try testArgs(f64, inf(f64), -nan(f64));8194 try testArgs(f64, inf(f64), -nan(f64));
2703 try testArgs(f64, inf(f64), -inf(f64));8195 try testArgs(f64, inf(f64), -inf(f64));
2704 try testArgs(f64, inf(f64), -fmax(f64));8196 try testArgs(f64, inf(f64), -fmax(f64));
2705 try testArgs(f64, inf(f64), -10.0);8197 try testArgs(f64, inf(f64), -1e1);
2706 try testArgs(f64, inf(f64), -1.0);8198 try testArgs(f64, inf(f64), -1e0);
2707 try testArgs(f64, inf(f64), -0.1);8199 try testArgs(f64, inf(f64), -1e-1);
2708 try testArgs(f64, inf(f64), -fmin(f64));8200 try testArgs(f64, inf(f64), -fmin(f64));
2709 try testArgs(f64, inf(f64), -tmin(f64));8201 try testArgs(f64, inf(f64), -tmin(f64));
2710 try testArgs(f64, inf(f64), -0.0);8202 try testArgs(f64, inf(f64), -0.0);
2711 try testArgs(f64, inf(f64), 0.0);8203 try testArgs(f64, inf(f64), 0.0);
2712 try testArgs(f64, inf(f64), tmin(f64));8204 try testArgs(f64, inf(f64), tmin(f64));
2713 try testArgs(f64, inf(f64), fmin(f64));8205 try testArgs(f64, inf(f64), fmin(f64));
2714 try testArgs(f64, inf(f64), 0.1);8206 try testArgs(f64, inf(f64), 1e-1);
2715 try testArgs(f64, inf(f64), 1.0);8207 try testArgs(f64, inf(f64), 1e0);
2716 try testArgs(f64, inf(f64), 10.0);8208 try testArgs(f64, inf(f64), 1e1);
2717 try testArgs(f64, inf(f64), fmax(f64));8209 try testArgs(f64, inf(f64), fmax(f64));
2718 try testArgs(f64, inf(f64), inf(f64));8210 try testArgs(f64, inf(f64), inf(f64));
2719 try testArgs(f64, inf(f64), nan(f64));8211 try testArgs(f64, inf(f64), nan(f64));
...@@ -2721,18 +8213,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2721,18 +8213,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2721 try testArgs(f64, nan(f64), -nan(f64));8213 try testArgs(f64, nan(f64), -nan(f64));
2722 try testArgs(f64, nan(f64), -inf(f64));8214 try testArgs(f64, nan(f64), -inf(f64));
2723 try testArgs(f64, nan(f64), -fmax(f64));8215 try testArgs(f64, nan(f64), -fmax(f64));
2724 try testArgs(f64, nan(f64), -10.0);8216 try testArgs(f64, nan(f64), -1e1);
2725 try testArgs(f64, nan(f64), -1.0);8217 try testArgs(f64, nan(f64), -1e0);
2726 try testArgs(f64, nan(f64), -0.1);8218 try testArgs(f64, nan(f64), -1e-1);
2727 try testArgs(f64, nan(f64), -fmin(f64));8219 try testArgs(f64, nan(f64), -fmin(f64));
2728 try testArgs(f64, nan(f64), -tmin(f64));8220 try testArgs(f64, nan(f64), -tmin(f64));
2729 try testArgs(f64, nan(f64), -0.0);8221 try testArgs(f64, nan(f64), -0.0);
2730 try testArgs(f64, nan(f64), 0.0);8222 try testArgs(f64, nan(f64), 0.0);
2731 try testArgs(f64, nan(f64), tmin(f64));8223 try testArgs(f64, nan(f64), tmin(f64));
2732 try testArgs(f64, nan(f64), fmin(f64));8224 try testArgs(f64, nan(f64), fmin(f64));
2733 try testArgs(f64, nan(f64), 0.1);8225 try testArgs(f64, nan(f64), 1e-1);
2734 try testArgs(f64, nan(f64), 1.0);8226 try testArgs(f64, nan(f64), 1e0);
2735 try testArgs(f64, nan(f64), 10.0);8227 try testArgs(f64, nan(f64), 1e1);
2736 try testArgs(f64, nan(f64), fmax(f64));8228 try testArgs(f64, nan(f64), fmax(f64));
2737 try testArgs(f64, nan(f64), inf(f64));8229 try testArgs(f64, nan(f64), inf(f64));
2738 try testArgs(f64, nan(f64), nan(f64));8230 try testArgs(f64, nan(f64), nan(f64));
...@@ -2740,18 +8232,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2740,18 +8232,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2740 try testArgs(f80, -nan(f80), -nan(f80));8232 try testArgs(f80, -nan(f80), -nan(f80));
2741 try testArgs(f80, -nan(f80), -inf(f80));8233 try testArgs(f80, -nan(f80), -inf(f80));
2742 try testArgs(f80, -nan(f80), -fmax(f80));8234 try testArgs(f80, -nan(f80), -fmax(f80));
2743 try testArgs(f80, -nan(f80), -10.0);8235 try testArgs(f80, -nan(f80), -1e1);
2744 try testArgs(f80, -nan(f80), -1.0);8236 try testArgs(f80, -nan(f80), -1e0);
2745 try testArgs(f80, -nan(f80), -0.1);8237 try testArgs(f80, -nan(f80), -1e-1);
2746 try testArgs(f80, -nan(f80), -fmin(f80));8238 try testArgs(f80, -nan(f80), -fmin(f80));
2747 try testArgs(f80, -nan(f80), -tmin(f80));8239 try testArgs(f80, -nan(f80), -tmin(f80));
2748 try testArgs(f80, -nan(f80), -0.0);8240 try testArgs(f80, -nan(f80), -0.0);
2749 try testArgs(f80, -nan(f80), 0.0);8241 try testArgs(f80, -nan(f80), 0.0);
2750 try testArgs(f80, -nan(f80), tmin(f80));8242 try testArgs(f80, -nan(f80), tmin(f80));
2751 try testArgs(f80, -nan(f80), fmin(f80));8243 try testArgs(f80, -nan(f80), fmin(f80));
2752 try testArgs(f80, -nan(f80), 0.1);8244 try testArgs(f80, -nan(f80), 1e-1);
2753 try testArgs(f80, -nan(f80), 1.0);8245 try testArgs(f80, -nan(f80), 1e0);
2754 try testArgs(f80, -nan(f80), 10.0);8246 try testArgs(f80, -nan(f80), 1e1);
2755 try testArgs(f80, -nan(f80), fmax(f80));8247 try testArgs(f80, -nan(f80), fmax(f80));
2756 try testArgs(f80, -nan(f80), inf(f80));8248 try testArgs(f80, -nan(f80), inf(f80));
2757 try testArgs(f80, -nan(f80), nan(f80));8249 try testArgs(f80, -nan(f80), nan(f80));
...@@ -2759,18 +8251,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2759,18 +8251,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2759 try testArgs(f80, -inf(f80), -nan(f80));8251 try testArgs(f80, -inf(f80), -nan(f80));
2760 try testArgs(f80, -inf(f80), -inf(f80));8252 try testArgs(f80, -inf(f80), -inf(f80));
2761 try testArgs(f80, -inf(f80), -fmax(f80));8253 try testArgs(f80, -inf(f80), -fmax(f80));
2762 try testArgs(f80, -inf(f80), -10.0);8254 try testArgs(f80, -inf(f80), -1e1);
2763 try testArgs(f80, -inf(f80), -1.0);8255 try testArgs(f80, -inf(f80), -1e0);
2764 try testArgs(f80, -inf(f80), -0.1);8256 try testArgs(f80, -inf(f80), -1e-1);
2765 try testArgs(f80, -inf(f80), -fmin(f80));8257 try testArgs(f80, -inf(f80), -fmin(f80));
2766 try testArgs(f80, -inf(f80), -tmin(f80));8258 try testArgs(f80, -inf(f80), -tmin(f80));
2767 try testArgs(f80, -inf(f80), -0.0);8259 try testArgs(f80, -inf(f80), -0.0);
2768 try testArgs(f80, -inf(f80), 0.0);8260 try testArgs(f80, -inf(f80), 0.0);
2769 try testArgs(f80, -inf(f80), tmin(f80));8261 try testArgs(f80, -inf(f80), tmin(f80));
2770 try testArgs(f80, -inf(f80), fmin(f80));8262 try testArgs(f80, -inf(f80), fmin(f80));
2771 try testArgs(f80, -inf(f80), 0.1);8263 try testArgs(f80, -inf(f80), 1e-1);
2772 try testArgs(f80, -inf(f80), 1.0);8264 try testArgs(f80, -inf(f80), 1e0);
2773 try testArgs(f80, -inf(f80), 10.0);8265 try testArgs(f80, -inf(f80), 1e1);
2774 try testArgs(f80, -inf(f80), fmax(f80));8266 try testArgs(f80, -inf(f80), fmax(f80));
2775 try testArgs(f80, -inf(f80), inf(f80));8267 try testArgs(f80, -inf(f80), inf(f80));
2776 try testArgs(f80, -inf(f80), nan(f80));8268 try testArgs(f80, -inf(f80), nan(f80));
...@@ -2778,94 +8270,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2778,94 +8270,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2778 try testArgs(f80, -fmax(f80), -nan(f80));8270 try testArgs(f80, -fmax(f80), -nan(f80));
2779 try testArgs(f80, -fmax(f80), -inf(f80));8271 try testArgs(f80, -fmax(f80), -inf(f80));
2780 try testArgs(f80, -fmax(f80), -fmax(f80));8272 try testArgs(f80, -fmax(f80), -fmax(f80));
2781 try testArgs(f80, -fmax(f80), -10.0);8273 try testArgs(f80, -fmax(f80), -1e1);
2782 try testArgs(f80, -fmax(f80), -1.0);8274 try testArgs(f80, -fmax(f80), -1e0);
2783 try testArgs(f80, -fmax(f80), -0.1);8275 try testArgs(f80, -fmax(f80), -1e-1);
2784 try testArgs(f80, -fmax(f80), -fmin(f80));8276 try testArgs(f80, -fmax(f80), -fmin(f80));
2785 try testArgs(f80, -fmax(f80), -tmin(f80));8277 try testArgs(f80, -fmax(f80), -tmin(f80));
2786 try testArgs(f80, -fmax(f80), -0.0);8278 try testArgs(f80, -fmax(f80), -0.0);
2787 try testArgs(f80, -fmax(f80), 0.0);8279 try testArgs(f80, -fmax(f80), 0.0);
2788 try testArgs(f80, -fmax(f80), tmin(f80));8280 try testArgs(f80, -fmax(f80), tmin(f80));
2789 try testArgs(f80, -fmax(f80), fmin(f80));8281 try testArgs(f80, -fmax(f80), fmin(f80));
2790 try testArgs(f80, -fmax(f80), 0.1);8282 try testArgs(f80, -fmax(f80), 1e-1);
2791 try testArgs(f80, -fmax(f80), 1.0);8283 try testArgs(f80, -fmax(f80), 1e0);
2792 try testArgs(f80, -fmax(f80), 10.0);8284 try testArgs(f80, -fmax(f80), 1e1);
2793 try testArgs(f80, -fmax(f80), fmax(f80));8285 try testArgs(f80, -fmax(f80), fmax(f80));
2794 try testArgs(f80, -fmax(f80), inf(f80));8286 try testArgs(f80, -fmax(f80), inf(f80));
2795 try testArgs(f80, -fmax(f80), nan(f80));8287 try testArgs(f80, -fmax(f80), nan(f80));
27968288
2797 try testArgs(f80, -10.0, -nan(f80));8289 try testArgs(f80, -1e1, -nan(f80));
2798 try testArgs(f80, -10.0, -inf(f80));8290 try testArgs(f80, -1e1, -inf(f80));
2799 try testArgs(f80, -10.0, -fmax(f80));8291 try testArgs(f80, -1e1, -fmax(f80));
2800 try testArgs(f80, -10.0, -10.0);8292 try testArgs(f80, -1e1, -1e1);
2801 try testArgs(f80, -10.0, -1.0);8293 try testArgs(f80, -1e1, -1e0);
2802 try testArgs(f80, -10.0, -0.1);8294 try testArgs(f80, -1e1, -1e-1);
2803 try testArgs(f80, -10.0, -fmin(f80));8295 try testArgs(f80, -1e1, -fmin(f80));
2804 try testArgs(f80, -10.0, -tmin(f80));8296 try testArgs(f80, -1e1, -tmin(f80));
2805 try testArgs(f80, -10.0, -0.0);8297 try testArgs(f80, -1e1, -0.0);
2806 try testArgs(f80, -10.0, 0.0);8298 try testArgs(f80, -1e1, 0.0);
2807 try testArgs(f80, -10.0, tmin(f80));8299 try testArgs(f80, -1e1, tmin(f80));
2808 try testArgs(f80, -10.0, fmin(f80));8300 try testArgs(f80, -1e1, fmin(f80));
2809 try testArgs(f80, -10.0, 0.1);8301 try testArgs(f80, -1e1, 1e-1);
2810 try testArgs(f80, -10.0, 1.0);8302 try testArgs(f80, -1e1, 1e0);
2811 try testArgs(f80, -10.0, 10.0);8303 try testArgs(f80, -1e1, 1e1);
2812 try testArgs(f80, -10.0, fmax(f80));8304 try testArgs(f80, -1e1, fmax(f80));
2813 try testArgs(f80, -10.0, inf(f80));8305 try testArgs(f80, -1e1, inf(f80));
2814 try testArgs(f80, -10.0, nan(f80));8306 try testArgs(f80, -1e1, nan(f80));
28158307
2816 try testArgs(f80, -1.0, -nan(f80));8308 try testArgs(f80, -1e0, -nan(f80));
2817 try testArgs(f80, -1.0, -inf(f80));8309 try testArgs(f80, -1e0, -inf(f80));
2818 try testArgs(f80, -1.0, -fmax(f80));8310 try testArgs(f80, -1e0, -fmax(f80));
2819 try testArgs(f80, -1.0, -10.0);8311 try testArgs(f80, -1e0, -1e1);
2820 try testArgs(f80, -1.0, -1.0);8312 try testArgs(f80, -1e0, -1e0);
2821 try testArgs(f80, -1.0, -0.1);8313 try testArgs(f80, -1e0, -1e-1);
2822 try testArgs(f80, -1.0, -fmin(f80));8314 try testArgs(f80, -1e0, -fmin(f80));
2823 try testArgs(f80, -1.0, -tmin(f80));8315 try testArgs(f80, -1e0, -tmin(f80));
2824 try testArgs(f80, -1.0, -0.0);8316 try testArgs(f80, -1e0, -0.0);
2825 try testArgs(f80, -1.0, 0.0);8317 try testArgs(f80, -1e0, 0.0);
2826 try testArgs(f80, -1.0, tmin(f80));8318 try testArgs(f80, -1e0, tmin(f80));
2827 try testArgs(f80, -1.0, fmin(f80));8319 try testArgs(f80, -1e0, fmin(f80));
2828 try testArgs(f80, -1.0, 0.1);8320 try testArgs(f80, -1e0, 1e-1);
2829 try testArgs(f80, -1.0, 1.0);8321 try testArgs(f80, -1e0, 1e0);
2830 try testArgs(f80, -1.0, 10.0);8322 try testArgs(f80, -1e0, 1e1);
2831 try testArgs(f80, -1.0, fmax(f80));8323 try testArgs(f80, -1e0, fmax(f80));
2832 try testArgs(f80, -1.0, inf(f80));8324 try testArgs(f80, -1e0, inf(f80));
2833 try testArgs(f80, -1.0, nan(f80));8325 try testArgs(f80, -1e0, nan(f80));
28348326
2835 try testArgs(f80, -0.1, -nan(f80));8327 try testArgs(f80, -1e-1, -nan(f80));
2836 try testArgs(f80, -0.1, -inf(f80));8328 try testArgs(f80, -1e-1, -inf(f80));
2837 try testArgs(f80, -0.1, -fmax(f80));8329 try testArgs(f80, -1e-1, -fmax(f80));
2838 try testArgs(f80, -0.1, -10.0);8330 try testArgs(f80, -1e-1, -1e1);
2839 try testArgs(f80, -0.1, -1.0);8331 try testArgs(f80, -1e-1, -1e0);
2840 try testArgs(f80, -0.1, -0.1);8332 try testArgs(f80, -1e-1, -1e-1);
2841 try testArgs(f80, -0.1, -fmin(f80));8333 try testArgs(f80, -1e-1, -fmin(f80));
2842 try testArgs(f80, -0.1, -tmin(f80));8334 try testArgs(f80, -1e-1, -tmin(f80));
2843 try testArgs(f80, -0.1, -0.0);8335 try testArgs(f80, -1e-1, -0.0);
2844 try testArgs(f80, -0.1, 0.0);8336 try testArgs(f80, -1e-1, 0.0);
2845 try testArgs(f80, -0.1, tmin(f80));8337 try testArgs(f80, -1e-1, tmin(f80));
2846 try testArgs(f80, -0.1, fmin(f80));8338 try testArgs(f80, -1e-1, fmin(f80));
2847 try testArgs(f80, -0.1, 0.1);8339 try testArgs(f80, -1e-1, 1e-1);
2848 try testArgs(f80, -0.1, 1.0);8340 try testArgs(f80, -1e-1, 1e0);
2849 try testArgs(f80, -0.1, 10.0);8341 try testArgs(f80, -1e-1, 1e1);
2850 try testArgs(f80, -0.1, fmax(f80));8342 try testArgs(f80, -1e-1, fmax(f80));
2851 try testArgs(f80, -0.1, inf(f80));8343 try testArgs(f80, -1e-1, inf(f80));
2852 try testArgs(f80, -0.1, nan(f80));8344 try testArgs(f80, -1e-1, nan(f80));
28538345
2854 try testArgs(f80, -fmin(f80), -nan(f80));8346 try testArgs(f80, -fmin(f80), -nan(f80));
2855 try testArgs(f80, -fmin(f80), -inf(f80));8347 try testArgs(f80, -fmin(f80), -inf(f80));
2856 try testArgs(f80, -fmin(f80), -fmax(f80));8348 try testArgs(f80, -fmin(f80), -fmax(f80));
2857 try testArgs(f80, -fmin(f80), -10.0);8349 try testArgs(f80, -fmin(f80), -1e1);
2858 try testArgs(f80, -fmin(f80), -1.0);8350 try testArgs(f80, -fmin(f80), -1e0);
2859 try testArgs(f80, -fmin(f80), -0.1);8351 try testArgs(f80, -fmin(f80), -1e-1);
2860 try testArgs(f80, -fmin(f80), -fmin(f80));8352 try testArgs(f80, -fmin(f80), -fmin(f80));
2861 try testArgs(f80, -fmin(f80), -tmin(f80));8353 try testArgs(f80, -fmin(f80), -tmin(f80));
2862 try testArgs(f80, -fmin(f80), -0.0);8354 try testArgs(f80, -fmin(f80), -0.0);
2863 try testArgs(f80, -fmin(f80), 0.0);8355 try testArgs(f80, -fmin(f80), 0.0);
2864 try testArgs(f80, -fmin(f80), tmin(f80));8356 try testArgs(f80, -fmin(f80), tmin(f80));
2865 try testArgs(f80, -fmin(f80), fmin(f80));8357 try testArgs(f80, -fmin(f80), fmin(f80));
2866 try testArgs(f80, -fmin(f80), 0.1);8358 try testArgs(f80, -fmin(f80), 1e-1);
2867 try testArgs(f80, -fmin(f80), 1.0);8359 try testArgs(f80, -fmin(f80), 1e0);
2868 try testArgs(f80, -fmin(f80), 10.0);8360 try testArgs(f80, -fmin(f80), 1e1);
2869 try testArgs(f80, -fmin(f80), fmax(f80));8361 try testArgs(f80, -fmin(f80), fmax(f80));
2870 try testArgs(f80, -fmin(f80), inf(f80));8362 try testArgs(f80, -fmin(f80), inf(f80));
2871 try testArgs(f80, -fmin(f80), nan(f80));8363 try testArgs(f80, -fmin(f80), nan(f80));
...@@ -2873,18 +8365,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2873,18 +8365,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2873 try testArgs(f80, -tmin(f80), -nan(f80));8365 try testArgs(f80, -tmin(f80), -nan(f80));
2874 try testArgs(f80, -tmin(f80), -inf(f80));8366 try testArgs(f80, -tmin(f80), -inf(f80));
2875 try testArgs(f80, -tmin(f80), -fmax(f80));8367 try testArgs(f80, -tmin(f80), -fmax(f80));
2876 try testArgs(f80, -tmin(f80), -10.0);8368 try testArgs(f80, -tmin(f80), -1e1);
2877 try testArgs(f80, -tmin(f80), -1.0);8369 try testArgs(f80, -tmin(f80), -1e0);
2878 try testArgs(f80, -tmin(f80), -0.1);8370 try testArgs(f80, -tmin(f80), -1e-1);
2879 try testArgs(f80, -tmin(f80), -fmin(f80));8371 try testArgs(f80, -tmin(f80), -fmin(f80));
2880 try testArgs(f80, -tmin(f80), -tmin(f80));8372 try testArgs(f80, -tmin(f80), -tmin(f80));
2881 try testArgs(f80, -tmin(f80), -0.0);8373 try testArgs(f80, -tmin(f80), -0.0);
2882 try testArgs(f80, -tmin(f80), 0.0);8374 try testArgs(f80, -tmin(f80), 0.0);
2883 try testArgs(f80, -tmin(f80), tmin(f80));8375 try testArgs(f80, -tmin(f80), tmin(f80));
2884 try testArgs(f80, -tmin(f80), fmin(f80));8376 try testArgs(f80, -tmin(f80), fmin(f80));
2885 try testArgs(f80, -tmin(f80), 0.1);8377 try testArgs(f80, -tmin(f80), 1e-1);
2886 try testArgs(f80, -tmin(f80), 1.0);8378 try testArgs(f80, -tmin(f80), 1e0);
2887 try testArgs(f80, -tmin(f80), 10.0);8379 try testArgs(f80, -tmin(f80), 1e1);
2888 try testArgs(f80, -tmin(f80), fmax(f80));8380 try testArgs(f80, -tmin(f80), fmax(f80));
2889 try testArgs(f80, -tmin(f80), inf(f80));8381 try testArgs(f80, -tmin(f80), inf(f80));
2890 try testArgs(f80, -tmin(f80), nan(f80));8382 try testArgs(f80, -tmin(f80), nan(f80));
...@@ -2892,18 +8384,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2892,18 +8384,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2892 try testArgs(f80, -0.0, -nan(f80));8384 try testArgs(f80, -0.0, -nan(f80));
2893 try testArgs(f80, -0.0, -inf(f80));8385 try testArgs(f80, -0.0, -inf(f80));
2894 try testArgs(f80, -0.0, -fmax(f80));8386 try testArgs(f80, -0.0, -fmax(f80));
2895 try testArgs(f80, -0.0, -10.0);8387 try testArgs(f80, -0.0, -1e1);
2896 try testArgs(f80, -0.0, -1.0);8388 try testArgs(f80, -0.0, -1e0);
2897 try testArgs(f80, -0.0, -0.1);8389 try testArgs(f80, -0.0, -1e-1);
2898 try testArgs(f80, -0.0, -fmin(f80));8390 try testArgs(f80, -0.0, -fmin(f80));
2899 try testArgs(f80, -0.0, -tmin(f80));8391 try testArgs(f80, -0.0, -tmin(f80));
2900 try testArgs(f80, -0.0, -0.0);8392 try testArgs(f80, -0.0, -0.0);
2901 try testArgs(f80, -0.0, 0.0);8393 try testArgs(f80, -0.0, 0.0);
2902 try testArgs(f80, -0.0, tmin(f80));8394 try testArgs(f80, -0.0, tmin(f80));
2903 try testArgs(f80, -0.0, fmin(f80));8395 try testArgs(f80, -0.0, fmin(f80));
2904 try testArgs(f80, -0.0, 0.1);8396 try testArgs(f80, -0.0, 1e-1);
2905 try testArgs(f80, -0.0, 1.0);8397 try testArgs(f80, -0.0, 1e0);
2906 try testArgs(f80, -0.0, 10.0);8398 try testArgs(f80, -0.0, 1e1);
2907 try testArgs(f80, -0.0, fmax(f80));8399 try testArgs(f80, -0.0, fmax(f80));
2908 try testArgs(f80, -0.0, inf(f80));8400 try testArgs(f80, -0.0, inf(f80));
2909 try testArgs(f80, -0.0, nan(f80));8401 try testArgs(f80, -0.0, nan(f80));
...@@ -2911,18 +8403,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2911,18 +8403,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2911 try testArgs(f80, 0.0, -nan(f80));8403 try testArgs(f80, 0.0, -nan(f80));
2912 try testArgs(f80, 0.0, -inf(f80));8404 try testArgs(f80, 0.0, -inf(f80));
2913 try testArgs(f80, 0.0, -fmax(f80));8405 try testArgs(f80, 0.0, -fmax(f80));
2914 try testArgs(f80, 0.0, -10.0);8406 try testArgs(f80, 0.0, -1e1);
2915 try testArgs(f80, 0.0, -1.0);8407 try testArgs(f80, 0.0, -1e0);
2916 try testArgs(f80, 0.0, -0.1);8408 try testArgs(f80, 0.0, -1e-1);
2917 try testArgs(f80, 0.0, -fmin(f80));8409 try testArgs(f80, 0.0, -fmin(f80));
2918 try testArgs(f80, 0.0, -tmin(f80));8410 try testArgs(f80, 0.0, -tmin(f80));
2919 try testArgs(f80, 0.0, -0.0);8411 try testArgs(f80, 0.0, -0.0);
2920 try testArgs(f80, 0.0, 0.0);8412 try testArgs(f80, 0.0, 0.0);
2921 try testArgs(f80, 0.0, tmin(f80));8413 try testArgs(f80, 0.0, tmin(f80));
2922 try testArgs(f80, 0.0, fmin(f80));8414 try testArgs(f80, 0.0, fmin(f80));
2923 try testArgs(f80, 0.0, 0.1);8415 try testArgs(f80, 0.0, 1e-1);
2924 try testArgs(f80, 0.0, 1.0);8416 try testArgs(f80, 0.0, 1e0);
2925 try testArgs(f80, 0.0, 10.0);8417 try testArgs(f80, 0.0, 1e1);
2926 try testArgs(f80, 0.0, fmax(f80));8418 try testArgs(f80, 0.0, fmax(f80));
2927 try testArgs(f80, 0.0, inf(f80));8419 try testArgs(f80, 0.0, inf(f80));
2928 try testArgs(f80, 0.0, nan(f80));8420 try testArgs(f80, 0.0, nan(f80));
...@@ -2930,18 +8422,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2930,18 +8422,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2930 try testArgs(f80, tmin(f80), -nan(f80));8422 try testArgs(f80, tmin(f80), -nan(f80));
2931 try testArgs(f80, tmin(f80), -inf(f80));8423 try testArgs(f80, tmin(f80), -inf(f80));
2932 try testArgs(f80, tmin(f80), -fmax(f80));8424 try testArgs(f80, tmin(f80), -fmax(f80));
2933 try testArgs(f80, tmin(f80), -10.0);8425 try testArgs(f80, tmin(f80), -1e1);
2934 try testArgs(f80, tmin(f80), -1.0);8426 try testArgs(f80, tmin(f80), -1e0);
2935 try testArgs(f80, tmin(f80), -0.1);8427 try testArgs(f80, tmin(f80), -1e-1);
2936 try testArgs(f80, tmin(f80), -fmin(f80));8428 try testArgs(f80, tmin(f80), -fmin(f80));
2937 try testArgs(f80, tmin(f80), -tmin(f80));8429 try testArgs(f80, tmin(f80), -tmin(f80));
2938 try testArgs(f80, tmin(f80), -0.0);8430 try testArgs(f80, tmin(f80), -0.0);
2939 try testArgs(f80, tmin(f80), 0.0);8431 try testArgs(f80, tmin(f80), 0.0);
2940 try testArgs(f80, tmin(f80), tmin(f80));8432 try testArgs(f80, tmin(f80), tmin(f80));
2941 try testArgs(f80, tmin(f80), fmin(f80));8433 try testArgs(f80, tmin(f80), fmin(f80));
2942 try testArgs(f80, tmin(f80), 0.1);8434 try testArgs(f80, tmin(f80), 1e-1);
2943 try testArgs(f80, tmin(f80), 1.0);8435 try testArgs(f80, tmin(f80), 1e0);
2944 try testArgs(f80, tmin(f80), 10.0);8436 try testArgs(f80, tmin(f80), 1e1);
2945 try testArgs(f80, tmin(f80), fmax(f80));8437 try testArgs(f80, tmin(f80), fmax(f80));
2946 try testArgs(f80, tmin(f80), inf(f80));8438 try testArgs(f80, tmin(f80), inf(f80));
2947 try testArgs(f80, tmin(f80), nan(f80));8439 try testArgs(f80, tmin(f80), nan(f80));
...@@ -2949,94 +8441,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -2949,94 +8441,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
2949 try testArgs(f80, fmin(f80), -nan(f80));8441 try testArgs(f80, fmin(f80), -nan(f80));
2950 try testArgs(f80, fmin(f80), -inf(f80));8442 try testArgs(f80, fmin(f80), -inf(f80));
2951 try testArgs(f80, fmin(f80), -fmax(f80));8443 try testArgs(f80, fmin(f80), -fmax(f80));
2952 try testArgs(f80, fmin(f80), -10.0);8444 try testArgs(f80, fmin(f80), -1e1);
2953 try testArgs(f80, fmin(f80), -1.0);8445 try testArgs(f80, fmin(f80), -1e0);
2954 try testArgs(f80, fmin(f80), -0.1);8446 try testArgs(f80, fmin(f80), -1e-1);
2955 try testArgs(f80, fmin(f80), -fmin(f80));8447 try testArgs(f80, fmin(f80), -fmin(f80));
2956 try testArgs(f80, fmin(f80), -tmin(f80));8448 try testArgs(f80, fmin(f80), -tmin(f80));
2957 try testArgs(f80, fmin(f80), -0.0);8449 try testArgs(f80, fmin(f80), -0.0);
2958 try testArgs(f80, fmin(f80), 0.0);8450 try testArgs(f80, fmin(f80), 0.0);
2959 try testArgs(f80, fmin(f80), tmin(f80));8451 try testArgs(f80, fmin(f80), tmin(f80));
2960 try testArgs(f80, fmin(f80), fmin(f80));8452 try testArgs(f80, fmin(f80), fmin(f80));
2961 try testArgs(f80, fmin(f80), 0.1);8453 try testArgs(f80, fmin(f80), 1e-1);
2962 try testArgs(f80, fmin(f80), 1.0);8454 try testArgs(f80, fmin(f80), 1e0);
2963 try testArgs(f80, fmin(f80), 10.0);8455 try testArgs(f80, fmin(f80), 1e1);
2964 try testArgs(f80, fmin(f80), fmax(f80));8456 try testArgs(f80, fmin(f80), fmax(f80));
2965 try testArgs(f80, fmin(f80), inf(f80));8457 try testArgs(f80, fmin(f80), inf(f80));
2966 try testArgs(f80, fmin(f80), nan(f80));8458 try testArgs(f80, fmin(f80), nan(f80));
29678459
2968 try testArgs(f80, 0.1, -nan(f80));8460 try testArgs(f80, 1e-1, -nan(f80));
2969 try testArgs(f80, 0.1, -inf(f80));8461 try testArgs(f80, 1e-1, -inf(f80));
2970 try testArgs(f80, 0.1, -fmax(f80));8462 try testArgs(f80, 1e-1, -fmax(f80));
2971 try testArgs(f80, 0.1, -10.0);8463 try testArgs(f80, 1e-1, -1e1);
2972 try testArgs(f80, 0.1, -1.0);8464 try testArgs(f80, 1e-1, -1e0);
2973 try testArgs(f80, 0.1, -0.1);8465 try testArgs(f80, 1e-1, -1e-1);
2974 try testArgs(f80, 0.1, -fmin(f80));8466 try testArgs(f80, 1e-1, -fmin(f80));
2975 try testArgs(f80, 0.1, -tmin(f80));8467 try testArgs(f80, 1e-1, -tmin(f80));
2976 try testArgs(f80, 0.1, -0.0);8468 try testArgs(f80, 1e-1, -0.0);
2977 try testArgs(f80, 0.1, 0.0);8469 try testArgs(f80, 1e-1, 0.0);
2978 try testArgs(f80, 0.1, tmin(f80));8470 try testArgs(f80, 1e-1, tmin(f80));
2979 try testArgs(f80, 0.1, fmin(f80));8471 try testArgs(f80, 1e-1, fmin(f80));
2980 try testArgs(f80, 0.1, 0.1);8472 try testArgs(f80, 1e-1, 1e-1);
2981 try testArgs(f80, 0.1, 1.0);8473 try testArgs(f80, 1e-1, 1e0);
2982 try testArgs(f80, 0.1, 10.0);8474 try testArgs(f80, 1e-1, 1e1);
2983 try testArgs(f80, 0.1, fmax(f80));8475 try testArgs(f80, 1e-1, fmax(f80));
2984 try testArgs(f80, 0.1, inf(f80));8476 try testArgs(f80, 1e-1, inf(f80));
2985 try testArgs(f80, 0.1, nan(f80));8477 try testArgs(f80, 1e-1, nan(f80));
29868478
2987 try testArgs(f80, 1.0, -nan(f80));8479 try testArgs(f80, 1e0, -nan(f80));
2988 try testArgs(f80, 1.0, -inf(f80));8480 try testArgs(f80, 1e0, -inf(f80));
2989 try testArgs(f80, 1.0, -fmax(f80));8481 try testArgs(f80, 1e0, -fmax(f80));
2990 try testArgs(f80, 1.0, -10.0);8482 try testArgs(f80, 1e0, -1e1);
2991 try testArgs(f80, 1.0, -1.0);8483 try testArgs(f80, 1e0, -1e0);
2992 try testArgs(f80, 1.0, -0.1);8484 try testArgs(f80, 1e0, -1e-1);
2993 try testArgs(f80, 1.0, -fmin(f80));8485 try testArgs(f80, 1e0, -fmin(f80));
2994 try testArgs(f80, 1.0, -tmin(f80));8486 try testArgs(f80, 1e0, -tmin(f80));
2995 try testArgs(f80, 1.0, -0.0);8487 try testArgs(f80, 1e0, -0.0);
2996 try testArgs(f80, 1.0, 0.0);8488 try testArgs(f80, 1e0, 0.0);
2997 try testArgs(f80, 1.0, tmin(f80));8489 try testArgs(f80, 1e0, tmin(f80));
2998 try testArgs(f80, 1.0, fmin(f80));8490 try testArgs(f80, 1e0, fmin(f80));
2999 try testArgs(f80, 1.0, 0.1);8491 try testArgs(f80, 1e0, 1e-1);
3000 try testArgs(f80, 1.0, 1.0);8492 try testArgs(f80, 1e0, 1e0);
3001 try testArgs(f80, 1.0, 10.0);8493 try testArgs(f80, 1e0, 1e1);
3002 try testArgs(f80, 1.0, fmax(f80));8494 try testArgs(f80, 1e0, fmax(f80));
3003 try testArgs(f80, 1.0, inf(f80));8495 try testArgs(f80, 1e0, inf(f80));
3004 try testArgs(f80, 1.0, nan(f80));8496 try testArgs(f80, 1e0, nan(f80));
30058497
3006 try testArgs(f80, 10.0, -nan(f80));8498 try testArgs(f80, 1e1, -nan(f80));
3007 try testArgs(f80, 10.0, -inf(f80));8499 try testArgs(f80, 1e1, -inf(f80));
3008 try testArgs(f80, 10.0, -fmax(f80));8500 try testArgs(f80, 1e1, -fmax(f80));
3009 try testArgs(f80, 10.0, -10.0);8501 try testArgs(f80, 1e1, -1e1);
3010 try testArgs(f80, 10.0, -1.0);8502 try testArgs(f80, 1e1, -1e0);
3011 try testArgs(f80, 10.0, -0.1);8503 try testArgs(f80, 1e1, -1e-1);
3012 try testArgs(f80, 10.0, -fmin(f80));8504 try testArgs(f80, 1e1, -fmin(f80));
3013 try testArgs(f80, 10.0, -tmin(f80));8505 try testArgs(f80, 1e1, -tmin(f80));
3014 try testArgs(f80, 10.0, -0.0);8506 try testArgs(f80, 1e1, -0.0);
3015 try testArgs(f80, 10.0, 0.0);8507 try testArgs(f80, 1e1, 0.0);
3016 try testArgs(f80, 10.0, tmin(f80));8508 try testArgs(f80, 1e1, tmin(f80));
3017 try testArgs(f80, 10.0, fmin(f80));8509 try testArgs(f80, 1e1, fmin(f80));
3018 try testArgs(f80, 10.0, 0.1);8510 try testArgs(f80, 1e1, 1e-1);
3019 try testArgs(f80, 10.0, 1.0);8511 try testArgs(f80, 1e1, 1e0);
3020 try testArgs(f80, 10.0, 10.0);8512 try testArgs(f80, 1e1, 1e1);
3021 try testArgs(f80, 10.0, fmax(f80));8513 try testArgs(f80, 1e1, fmax(f80));
3022 try testArgs(f80, 10.0, inf(f80));8514 try testArgs(f80, 1e1, inf(f80));
3023 try testArgs(f80, 10.0, nan(f80));8515 try testArgs(f80, 1e1, nan(f80));
30248516
3025 try testArgs(f80, fmax(f80), -nan(f80));8517 try testArgs(f80, fmax(f80), -nan(f80));
3026 try testArgs(f80, fmax(f80), -inf(f80));8518 try testArgs(f80, fmax(f80), -inf(f80));
3027 try testArgs(f80, fmax(f80), -fmax(f80));8519 try testArgs(f80, fmax(f80), -fmax(f80));
3028 try testArgs(f80, fmax(f80), -10.0);8520 try testArgs(f80, fmax(f80), -1e1);
3029 try testArgs(f80, fmax(f80), -1.0);8521 try testArgs(f80, fmax(f80), -1e0);
3030 try testArgs(f80, fmax(f80), -0.1);8522 try testArgs(f80, fmax(f80), -1e-1);
3031 try testArgs(f80, fmax(f80), -fmin(f80));8523 try testArgs(f80, fmax(f80), -fmin(f80));
3032 try testArgs(f80, fmax(f80), -tmin(f80));8524 try testArgs(f80, fmax(f80), -tmin(f80));
3033 try testArgs(f80, fmax(f80), -0.0);8525 try testArgs(f80, fmax(f80), -0.0);
3034 try testArgs(f80, fmax(f80), 0.0);8526 try testArgs(f80, fmax(f80), 0.0);
3035 try testArgs(f80, fmax(f80), tmin(f80));8527 try testArgs(f80, fmax(f80), tmin(f80));
3036 try testArgs(f80, fmax(f80), fmin(f80));8528 try testArgs(f80, fmax(f80), fmin(f80));
3037 try testArgs(f80, fmax(f80), 0.1);8529 try testArgs(f80, fmax(f80), 1e-1);
3038 try testArgs(f80, fmax(f80), 1.0);8530 try testArgs(f80, fmax(f80), 1e0);
3039 try testArgs(f80, fmax(f80), 10.0);8531 try testArgs(f80, fmax(f80), 1e1);
3040 try testArgs(f80, fmax(f80), fmax(f80));8532 try testArgs(f80, fmax(f80), fmax(f80));
3041 try testArgs(f80, fmax(f80), inf(f80));8533 try testArgs(f80, fmax(f80), inf(f80));
3042 try testArgs(f80, fmax(f80), nan(f80));8534 try testArgs(f80, fmax(f80), nan(f80));
...@@ -3044,18 +8536,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3044,18 +8536,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3044 try testArgs(f80, inf(f80), -nan(f80));8536 try testArgs(f80, inf(f80), -nan(f80));
3045 try testArgs(f80, inf(f80), -inf(f80));8537 try testArgs(f80, inf(f80), -inf(f80));
3046 try testArgs(f80, inf(f80), -fmax(f80));8538 try testArgs(f80, inf(f80), -fmax(f80));
3047 try testArgs(f80, inf(f80), -10.0);8539 try testArgs(f80, inf(f80), -1e1);
3048 try testArgs(f80, inf(f80), -1.0);8540 try testArgs(f80, inf(f80), -1e0);
3049 try testArgs(f80, inf(f80), -0.1);8541 try testArgs(f80, inf(f80), -1e-1);
3050 try testArgs(f80, inf(f80), -fmin(f80));8542 try testArgs(f80, inf(f80), -fmin(f80));
3051 try testArgs(f80, inf(f80), -tmin(f80));8543 try testArgs(f80, inf(f80), -tmin(f80));
3052 try testArgs(f80, inf(f80), -0.0);8544 try testArgs(f80, inf(f80), -0.0);
3053 try testArgs(f80, inf(f80), 0.0);8545 try testArgs(f80, inf(f80), 0.0);
3054 try testArgs(f80, inf(f80), tmin(f80));8546 try testArgs(f80, inf(f80), tmin(f80));
3055 try testArgs(f80, inf(f80), fmin(f80));8547 try testArgs(f80, inf(f80), fmin(f80));
3056 try testArgs(f80, inf(f80), 0.1);8548 try testArgs(f80, inf(f80), 1e-1);
3057 try testArgs(f80, inf(f80), 1.0);8549 try testArgs(f80, inf(f80), 1e0);
3058 try testArgs(f80, inf(f80), 10.0);8550 try testArgs(f80, inf(f80), 1e1);
3059 try testArgs(f80, inf(f80), fmax(f80));8551 try testArgs(f80, inf(f80), fmax(f80));
3060 try testArgs(f80, inf(f80), inf(f80));8552 try testArgs(f80, inf(f80), inf(f80));
3061 try testArgs(f80, inf(f80), nan(f80));8553 try testArgs(f80, inf(f80), nan(f80));
...@@ -3063,18 +8555,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3063,18 +8555,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3063 try testArgs(f80, nan(f80), -nan(f80));8555 try testArgs(f80, nan(f80), -nan(f80));
3064 try testArgs(f80, nan(f80), -inf(f80));8556 try testArgs(f80, nan(f80), -inf(f80));
3065 try testArgs(f80, nan(f80), -fmax(f80));8557 try testArgs(f80, nan(f80), -fmax(f80));
3066 try testArgs(f80, nan(f80), -10.0);8558 try testArgs(f80, nan(f80), -1e1);
3067 try testArgs(f80, nan(f80), -1.0);8559 try testArgs(f80, nan(f80), -1e0);
3068 try testArgs(f80, nan(f80), -0.1);8560 try testArgs(f80, nan(f80), -1e-1);
3069 try testArgs(f80, nan(f80), -fmin(f80));8561 try testArgs(f80, nan(f80), -fmin(f80));
3070 try testArgs(f80, nan(f80), -tmin(f80));8562 try testArgs(f80, nan(f80), -tmin(f80));
3071 try testArgs(f80, nan(f80), -0.0);8563 try testArgs(f80, nan(f80), -0.0);
3072 try testArgs(f80, nan(f80), 0.0);8564 try testArgs(f80, nan(f80), 0.0);
3073 try testArgs(f80, nan(f80), tmin(f80));8565 try testArgs(f80, nan(f80), tmin(f80));
3074 try testArgs(f80, nan(f80), fmin(f80));8566 try testArgs(f80, nan(f80), fmin(f80));
3075 try testArgs(f80, nan(f80), 0.1);8567 try testArgs(f80, nan(f80), 1e-1);
3076 try testArgs(f80, nan(f80), 1.0);8568 try testArgs(f80, nan(f80), 1e0);
3077 try testArgs(f80, nan(f80), 10.0);8569 try testArgs(f80, nan(f80), 1e1);
3078 try testArgs(f80, nan(f80), fmax(f80));8570 try testArgs(f80, nan(f80), fmax(f80));
3079 try testArgs(f80, nan(f80), inf(f80));8571 try testArgs(f80, nan(f80), inf(f80));
3080 try testArgs(f80, nan(f80), nan(f80));8572 try testArgs(f80, nan(f80), nan(f80));
...@@ -3082,18 +8574,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3082,18 +8574,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3082 try testArgs(f128, -nan(f128), -nan(f128));8574 try testArgs(f128, -nan(f128), -nan(f128));
3083 try testArgs(f128, -nan(f128), -inf(f128));8575 try testArgs(f128, -nan(f128), -inf(f128));
3084 try testArgs(f128, -nan(f128), -fmax(f128));8576 try testArgs(f128, -nan(f128), -fmax(f128));
3085 try testArgs(f128, -nan(f128), -10.0);8577 try testArgs(f128, -nan(f128), -1e1);
3086 try testArgs(f128, -nan(f128), -1.0);8578 try testArgs(f128, -nan(f128), -1e0);
3087 try testArgs(f128, -nan(f128), -0.1);8579 try testArgs(f128, -nan(f128), -1e-1);
3088 try testArgs(f128, -nan(f128), -fmin(f128));8580 try testArgs(f128, -nan(f128), -fmin(f128));
3089 try testArgs(f128, -nan(f128), -tmin(f128));8581 try testArgs(f128, -nan(f128), -tmin(f128));
3090 try testArgs(f128, -nan(f128), -0.0);8582 try testArgs(f128, -nan(f128), -0.0);
3091 try testArgs(f128, -nan(f128), 0.0);8583 try testArgs(f128, -nan(f128), 0.0);
3092 try testArgs(f128, -nan(f128), tmin(f128));8584 try testArgs(f128, -nan(f128), tmin(f128));
3093 try testArgs(f128, -nan(f128), fmin(f128));8585 try testArgs(f128, -nan(f128), fmin(f128));
3094 try testArgs(f128, -nan(f128), 0.1);8586 try testArgs(f128, -nan(f128), 1e-1);
3095 try testArgs(f128, -nan(f128), 1.0);8587 try testArgs(f128, -nan(f128), 1e0);
3096 try testArgs(f128, -nan(f128), 10.0);8588 try testArgs(f128, -nan(f128), 1e1);
3097 try testArgs(f128, -nan(f128), fmax(f128));8589 try testArgs(f128, -nan(f128), fmax(f128));
3098 try testArgs(f128, -nan(f128), inf(f128));8590 try testArgs(f128, -nan(f128), inf(f128));
3099 try testArgs(f128, -nan(f128), nan(f128));8591 try testArgs(f128, -nan(f128), nan(f128));
...@@ -3101,18 +8593,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3101,18 +8593,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3101 try testArgs(f128, -inf(f128), -nan(f128));8593 try testArgs(f128, -inf(f128), -nan(f128));
3102 try testArgs(f128, -inf(f128), -inf(f128));8594 try testArgs(f128, -inf(f128), -inf(f128));
3103 try testArgs(f128, -inf(f128), -fmax(f128));8595 try testArgs(f128, -inf(f128), -fmax(f128));
3104 try testArgs(f128, -inf(f128), -10.0);8596 try testArgs(f128, -inf(f128), -1e1);
3105 try testArgs(f128, -inf(f128), -1.0);8597 try testArgs(f128, -inf(f128), -1e0);
3106 try testArgs(f128, -inf(f128), -0.1);8598 try testArgs(f128, -inf(f128), -1e-1);
3107 try testArgs(f128, -inf(f128), -fmin(f128));8599 try testArgs(f128, -inf(f128), -fmin(f128));
3108 try testArgs(f128, -inf(f128), -tmin(f128));8600 try testArgs(f128, -inf(f128), -tmin(f128));
3109 try testArgs(f128, -inf(f128), -0.0);8601 try testArgs(f128, -inf(f128), -0.0);
3110 try testArgs(f128, -inf(f128), 0.0);8602 try testArgs(f128, -inf(f128), 0.0);
3111 try testArgs(f128, -inf(f128), tmin(f128));8603 try testArgs(f128, -inf(f128), tmin(f128));
3112 try testArgs(f128, -inf(f128), fmin(f128));8604 try testArgs(f128, -inf(f128), fmin(f128));
3113 try testArgs(f128, -inf(f128), 0.1);8605 try testArgs(f128, -inf(f128), 1e-1);
3114 try testArgs(f128, -inf(f128), 1.0);8606 try testArgs(f128, -inf(f128), 1e0);
3115 try testArgs(f128, -inf(f128), 10.0);8607 try testArgs(f128, -inf(f128), 1e1);
3116 try testArgs(f128, -inf(f128), fmax(f128));8608 try testArgs(f128, -inf(f128), fmax(f128));
3117 try testArgs(f128, -inf(f128), inf(f128));8609 try testArgs(f128, -inf(f128), inf(f128));
3118 try testArgs(f128, -inf(f128), nan(f128));8610 try testArgs(f128, -inf(f128), nan(f128));
...@@ -3120,94 +8612,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3120,94 +8612,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3120 try testArgs(f128, -fmax(f128), -nan(f128));8612 try testArgs(f128, -fmax(f128), -nan(f128));
3121 try testArgs(f128, -fmax(f128), -inf(f128));8613 try testArgs(f128, -fmax(f128), -inf(f128));
3122 try testArgs(f128, -fmax(f128), -fmax(f128));8614 try testArgs(f128, -fmax(f128), -fmax(f128));
3123 try testArgs(f128, -fmax(f128), -10.0);8615 try testArgs(f128, -fmax(f128), -1e1);
3124 try testArgs(f128, -fmax(f128), -1.0);8616 try testArgs(f128, -fmax(f128), -1e0);
3125 try testArgs(f128, -fmax(f128), -0.1);8617 try testArgs(f128, -fmax(f128), -1e-1);
3126 try testArgs(f128, -fmax(f128), -fmin(f128));8618 try testArgs(f128, -fmax(f128), -fmin(f128));
3127 try testArgs(f128, -fmax(f128), -tmin(f128));8619 try testArgs(f128, -fmax(f128), -tmin(f128));
3128 try testArgs(f128, -fmax(f128), -0.0);8620 try testArgs(f128, -fmax(f128), -0.0);
3129 try testArgs(f128, -fmax(f128), 0.0);8621 try testArgs(f128, -fmax(f128), 0.0);
3130 try testArgs(f128, -fmax(f128), tmin(f128));8622 try testArgs(f128, -fmax(f128), tmin(f128));
3131 try testArgs(f128, -fmax(f128), fmin(f128));8623 try testArgs(f128, -fmax(f128), fmin(f128));
3132 try testArgs(f128, -fmax(f128), 0.1);8624 try testArgs(f128, -fmax(f128), 1e-1);
3133 try testArgs(f128, -fmax(f128), 1.0);8625 try testArgs(f128, -fmax(f128), 1e0);
3134 try testArgs(f128, -fmax(f128), 10.0);8626 try testArgs(f128, -fmax(f128), 1e1);
3135 try testArgs(f128, -fmax(f128), fmax(f128));8627 try testArgs(f128, -fmax(f128), fmax(f128));
3136 try testArgs(f128, -fmax(f128), inf(f128));8628 try testArgs(f128, -fmax(f128), inf(f128));
3137 try testArgs(f128, -fmax(f128), nan(f128));8629 try testArgs(f128, -fmax(f128), nan(f128));
31388630
3139 try testArgs(f128, -10.0, -nan(f128));8631 try testArgs(f128, -1e1, -nan(f128));
3140 try testArgs(f128, -10.0, -inf(f128));8632 try testArgs(f128, -1e1, -inf(f128));
3141 try testArgs(f128, -10.0, -fmax(f128));8633 try testArgs(f128, -1e1, -fmax(f128));
3142 try testArgs(f128, -10.0, -10.0);8634 try testArgs(f128, -1e1, -1e1);
3143 try testArgs(f128, -10.0, -1.0);8635 try testArgs(f128, -1e1, -1e0);
3144 try testArgs(f128, -10.0, -0.1);8636 try testArgs(f128, -1e1, -1e-1);
3145 try testArgs(f128, -10.0, -fmin(f128));8637 try testArgs(f128, -1e1, -fmin(f128));
3146 try testArgs(f128, -10.0, -tmin(f128));8638 try testArgs(f128, -1e1, -tmin(f128));
3147 try testArgs(f128, -10.0, -0.0);8639 try testArgs(f128, -1e1, -0.0);
3148 try testArgs(f128, -10.0, 0.0);8640 try testArgs(f128, -1e1, 0.0);
3149 try testArgs(f128, -10.0, tmin(f128));8641 try testArgs(f128, -1e1, tmin(f128));
3150 try testArgs(f128, -10.0, fmin(f128));8642 try testArgs(f128, -1e1, fmin(f128));
3151 try testArgs(f128, -10.0, 0.1);8643 try testArgs(f128, -1e1, 1e-1);
3152 try testArgs(f128, -10.0, 1.0);8644 try testArgs(f128, -1e1, 1e0);
3153 try testArgs(f128, -10.0, 10.0);8645 try testArgs(f128, -1e1, 1e1);
3154 try testArgs(f128, -10.0, fmax(f128));8646 try testArgs(f128, -1e1, fmax(f128));
3155 try testArgs(f128, -10.0, inf(f128));8647 try testArgs(f128, -1e1, inf(f128));
3156 try testArgs(f128, -10.0, nan(f128));8648 try testArgs(f128, -1e1, nan(f128));
31578649
3158 try testArgs(f128, -1.0, -nan(f128));8650 try testArgs(f128, -1e0, -nan(f128));
3159 try testArgs(f128, -1.0, -inf(f128));8651 try testArgs(f128, -1e0, -inf(f128));
3160 try testArgs(f128, -1.0, -fmax(f128));8652 try testArgs(f128, -1e0, -fmax(f128));
3161 try testArgs(f128, -1.0, -10.0);8653 try testArgs(f128, -1e0, -1e1);
3162 try testArgs(f128, -1.0, -1.0);8654 try testArgs(f128, -1e0, -1e0);
3163 try testArgs(f128, -1.0, -0.1);8655 try testArgs(f128, -1e0, -1e-1);
3164 try testArgs(f128, -1.0, -fmin(f128));8656 try testArgs(f128, -1e0, -fmin(f128));
3165 try testArgs(f128, -1.0, -tmin(f128));8657 try testArgs(f128, -1e0, -tmin(f128));
3166 try testArgs(f128, -1.0, -0.0);8658 try testArgs(f128, -1e0, -0.0);
3167 try testArgs(f128, -1.0, 0.0);8659 try testArgs(f128, -1e0, 0.0);
3168 try testArgs(f128, -1.0, tmin(f128));8660 try testArgs(f128, -1e0, tmin(f128));
3169 try testArgs(f128, -1.0, fmin(f128));8661 try testArgs(f128, -1e0, fmin(f128));
3170 try testArgs(f128, -1.0, 0.1);8662 try testArgs(f128, -1e0, 1e-1);
3171 try testArgs(f128, -1.0, 1.0);8663 try testArgs(f128, -1e0, 1e0);
3172 try testArgs(f128, -1.0, 10.0);8664 try testArgs(f128, -1e0, 1e1);
3173 try testArgs(f128, -1.0, fmax(f128));8665 try testArgs(f128, -1e0, fmax(f128));
3174 try testArgs(f128, -1.0, inf(f128));8666 try testArgs(f128, -1e0, inf(f128));
3175 try testArgs(f128, -1.0, nan(f128));8667 try testArgs(f128, -1e0, nan(f128));
31768668
3177 try testArgs(f128, -0.1, -nan(f128));8669 try testArgs(f128, -1e-1, -nan(f128));
3178 try testArgs(f128, -0.1, -inf(f128));8670 try testArgs(f128, -1e-1, -inf(f128));
3179 try testArgs(f128, -0.1, -fmax(f128));8671 try testArgs(f128, -1e-1, -fmax(f128));
3180 try testArgs(f128, -0.1, -10.0);8672 try testArgs(f128, -1e-1, -1e1);
3181 try testArgs(f128, -0.1, -1.0);8673 try testArgs(f128, -1e-1, -1e0);
3182 try testArgs(f128, -0.1, -0.1);8674 try testArgs(f128, -1e-1, -1e-1);
3183 try testArgs(f128, -0.1, -fmin(f128));8675 try testArgs(f128, -1e-1, -fmin(f128));
3184 try testArgs(f128, -0.1, -tmin(f128));8676 try testArgs(f128, -1e-1, -tmin(f128));
3185 try testArgs(f128, -0.1, -0.0);8677 try testArgs(f128, -1e-1, -0.0);
3186 try testArgs(f128, -0.1, 0.0);8678 try testArgs(f128, -1e-1, 0.0);
3187 try testArgs(f128, -0.1, tmin(f128));8679 try testArgs(f128, -1e-1, tmin(f128));
3188 try testArgs(f128, -0.1, fmin(f128));8680 try testArgs(f128, -1e-1, fmin(f128));
3189 try testArgs(f128, -0.1, 0.1);8681 try testArgs(f128, -1e-1, 1e-1);
3190 try testArgs(f128, -0.1, 1.0);8682 try testArgs(f128, -1e-1, 1e0);
3191 try testArgs(f128, -0.1, 10.0);8683 try testArgs(f128, -1e-1, 1e1);
3192 try testArgs(f128, -0.1, fmax(f128));8684 try testArgs(f128, -1e-1, fmax(f128));
3193 try testArgs(f128, -0.1, inf(f128));8685 try testArgs(f128, -1e-1, inf(f128));
3194 try testArgs(f128, -0.1, nan(f128));8686 try testArgs(f128, -1e-1, nan(f128));
31958687
3196 try testArgs(f128, -fmin(f128), -nan(f128));8688 try testArgs(f128, -fmin(f128), -nan(f128));
3197 try testArgs(f128, -fmin(f128), -inf(f128));8689 try testArgs(f128, -fmin(f128), -inf(f128));
3198 try testArgs(f128, -fmin(f128), -fmax(f128));8690 try testArgs(f128, -fmin(f128), -fmax(f128));
3199 try testArgs(f128, -fmin(f128), -10.0);8691 try testArgs(f128, -fmin(f128), -1e1);
3200 try testArgs(f128, -fmin(f128), -1.0);8692 try testArgs(f128, -fmin(f128), -1e0);
3201 try testArgs(f128, -fmin(f128), -0.1);8693 try testArgs(f128, -fmin(f128), -1e-1);
3202 try testArgs(f128, -fmin(f128), -fmin(f128));8694 try testArgs(f128, -fmin(f128), -fmin(f128));
3203 try testArgs(f128, -fmin(f128), -tmin(f128));8695 try testArgs(f128, -fmin(f128), -tmin(f128));
3204 try testArgs(f128, -fmin(f128), -0.0);8696 try testArgs(f128, -fmin(f128), -0.0);
3205 try testArgs(f128, -fmin(f128), 0.0);8697 try testArgs(f128, -fmin(f128), 0.0);
3206 try testArgs(f128, -fmin(f128), tmin(f128));8698 try testArgs(f128, -fmin(f128), tmin(f128));
3207 try testArgs(f128, -fmin(f128), fmin(f128));8699 try testArgs(f128, -fmin(f128), fmin(f128));
3208 try testArgs(f128, -fmin(f128), 0.1);8700 try testArgs(f128, -fmin(f128), 1e-1);
3209 try testArgs(f128, -fmin(f128), 1.0);8701 try testArgs(f128, -fmin(f128), 1e0);
3210 try testArgs(f128, -fmin(f128), 10.0);8702 try testArgs(f128, -fmin(f128), 1e1);
3211 try testArgs(f128, -fmin(f128), fmax(f128));8703 try testArgs(f128, -fmin(f128), fmax(f128));
3212 try testArgs(f128, -fmin(f128), inf(f128));8704 try testArgs(f128, -fmin(f128), inf(f128));
3213 try testArgs(f128, -fmin(f128), nan(f128));8705 try testArgs(f128, -fmin(f128), nan(f128));
...@@ -3215,18 +8707,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3215,18 +8707,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3215 try testArgs(f128, -tmin(f128), -nan(f128));8707 try testArgs(f128, -tmin(f128), -nan(f128));
3216 try testArgs(f128, -tmin(f128), -inf(f128));8708 try testArgs(f128, -tmin(f128), -inf(f128));
3217 try testArgs(f128, -tmin(f128), -fmax(f128));8709 try testArgs(f128, -tmin(f128), -fmax(f128));
3218 try testArgs(f128, -tmin(f128), -10.0);8710 try testArgs(f128, -tmin(f128), -1e1);
3219 try testArgs(f128, -tmin(f128), -1.0);8711 try testArgs(f128, -tmin(f128), -1e0);
3220 try testArgs(f128, -tmin(f128), -0.1);8712 try testArgs(f128, -tmin(f128), -1e-1);
3221 try testArgs(f128, -tmin(f128), -fmin(f128));8713 try testArgs(f128, -tmin(f128), -fmin(f128));
3222 try testArgs(f128, -tmin(f128), -tmin(f128));8714 try testArgs(f128, -tmin(f128), -tmin(f128));
3223 try testArgs(f128, -tmin(f128), -0.0);8715 try testArgs(f128, -tmin(f128), -0.0);
3224 try testArgs(f128, -tmin(f128), 0.0);8716 try testArgs(f128, -tmin(f128), 0.0);
3225 try testArgs(f128, -tmin(f128), tmin(f128));8717 try testArgs(f128, -tmin(f128), tmin(f128));
3226 try testArgs(f128, -tmin(f128), fmin(f128));8718 try testArgs(f128, -tmin(f128), fmin(f128));
3227 try testArgs(f128, -tmin(f128), 0.1);8719 try testArgs(f128, -tmin(f128), 1e-1);
3228 try testArgs(f128, -tmin(f128), 1.0);8720 try testArgs(f128, -tmin(f128), 1e0);
3229 try testArgs(f128, -tmin(f128), 10.0);8721 try testArgs(f128, -tmin(f128), 1e1);
3230 try testArgs(f128, -tmin(f128), fmax(f128));8722 try testArgs(f128, -tmin(f128), fmax(f128));
3231 try testArgs(f128, -tmin(f128), inf(f128));8723 try testArgs(f128, -tmin(f128), inf(f128));
3232 try testArgs(f128, -tmin(f128), nan(f128));8724 try testArgs(f128, -tmin(f128), nan(f128));
...@@ -3234,18 +8726,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3234,18 +8726,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3234 try testArgs(f128, -0.0, -nan(f128));8726 try testArgs(f128, -0.0, -nan(f128));
3235 try testArgs(f128, -0.0, -inf(f128));8727 try testArgs(f128, -0.0, -inf(f128));
3236 try testArgs(f128, -0.0, -fmax(f128));8728 try testArgs(f128, -0.0, -fmax(f128));
3237 try testArgs(f128, -0.0, -10.0);8729 try testArgs(f128, -0.0, -1e1);
3238 try testArgs(f128, -0.0, -1.0);8730 try testArgs(f128, -0.0, -1e0);
3239 try testArgs(f128, -0.0, -0.1);8731 try testArgs(f128, -0.0, -1e-1);
3240 try testArgs(f128, -0.0, -fmin(f128));8732 try testArgs(f128, -0.0, -fmin(f128));
3241 try testArgs(f128, -0.0, -tmin(f128));8733 try testArgs(f128, -0.0, -tmin(f128));
3242 try testArgs(f128, -0.0, -0.0);8734 try testArgs(f128, -0.0, -0.0);
3243 try testArgs(f128, -0.0, 0.0);8735 try testArgs(f128, -0.0, 0.0);
3244 try testArgs(f128, -0.0, tmin(f128));8736 try testArgs(f128, -0.0, tmin(f128));
3245 try testArgs(f128, -0.0, fmin(f128));8737 try testArgs(f128, -0.0, fmin(f128));
3246 try testArgs(f128, -0.0, 0.1);8738 try testArgs(f128, -0.0, 1e-1);
3247 try testArgs(f128, -0.0, 1.0);8739 try testArgs(f128, -0.0, 1e0);
3248 try testArgs(f128, -0.0, 10.0);8740 try testArgs(f128, -0.0, 1e1);
3249 try testArgs(f128, -0.0, fmax(f128));8741 try testArgs(f128, -0.0, fmax(f128));
3250 try testArgs(f128, -0.0, inf(f128));8742 try testArgs(f128, -0.0, inf(f128));
3251 try testArgs(f128, -0.0, nan(f128));8743 try testArgs(f128, -0.0, nan(f128));
...@@ -3253,18 +8745,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3253,18 +8745,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3253 try testArgs(f128, 0.0, -nan(f128));8745 try testArgs(f128, 0.0, -nan(f128));
3254 try testArgs(f128, 0.0, -inf(f128));8746 try testArgs(f128, 0.0, -inf(f128));
3255 try testArgs(f128, 0.0, -fmax(f128));8747 try testArgs(f128, 0.0, -fmax(f128));
3256 try testArgs(f128, 0.0, -10.0);8748 try testArgs(f128, 0.0, -1e1);
3257 try testArgs(f128, 0.0, -1.0);8749 try testArgs(f128, 0.0, -1e0);
3258 try testArgs(f128, 0.0, -0.1);8750 try testArgs(f128, 0.0, -1e-1);
3259 try testArgs(f128, 0.0, -fmin(f128));8751 try testArgs(f128, 0.0, -fmin(f128));
3260 try testArgs(f128, 0.0, -tmin(f128));8752 try testArgs(f128, 0.0, -tmin(f128));
3261 try testArgs(f128, 0.0, -0.0);8753 try testArgs(f128, 0.0, -0.0);
3262 try testArgs(f128, 0.0, 0.0);8754 try testArgs(f128, 0.0, 0.0);
3263 try testArgs(f128, 0.0, tmin(f128));8755 try testArgs(f128, 0.0, tmin(f128));
3264 try testArgs(f128, 0.0, fmin(f128));8756 try testArgs(f128, 0.0, fmin(f128));
3265 try testArgs(f128, 0.0, 0.1);8757 try testArgs(f128, 0.0, 1e-1);
3266 try testArgs(f128, 0.0, 1.0);8758 try testArgs(f128, 0.0, 1e0);
3267 try testArgs(f128, 0.0, 10.0);8759 try testArgs(f128, 0.0, 1e1);
3268 try testArgs(f128, 0.0, fmax(f128));8760 try testArgs(f128, 0.0, fmax(f128));
3269 try testArgs(f128, 0.0, inf(f128));8761 try testArgs(f128, 0.0, inf(f128));
3270 try testArgs(f128, 0.0, nan(f128));8762 try testArgs(f128, 0.0, nan(f128));
...@@ -3272,18 +8764,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3272,18 +8764,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3272 try testArgs(f128, tmin(f128), -nan(f128));8764 try testArgs(f128, tmin(f128), -nan(f128));
3273 try testArgs(f128, tmin(f128), -inf(f128));8765 try testArgs(f128, tmin(f128), -inf(f128));
3274 try testArgs(f128, tmin(f128), -fmax(f128));8766 try testArgs(f128, tmin(f128), -fmax(f128));
3275 try testArgs(f128, tmin(f128), -10.0);8767 try testArgs(f128, tmin(f128), -1e1);
3276 try testArgs(f128, tmin(f128), -1.0);8768 try testArgs(f128, tmin(f128), -1e0);
3277 try testArgs(f128, tmin(f128), -0.1);8769 try testArgs(f128, tmin(f128), -1e-1);
3278 try testArgs(f128, tmin(f128), -fmin(f128));8770 try testArgs(f128, tmin(f128), -fmin(f128));
3279 try testArgs(f128, tmin(f128), -tmin(f128));8771 try testArgs(f128, tmin(f128), -tmin(f128));
3280 try testArgs(f128, tmin(f128), -0.0);8772 try testArgs(f128, tmin(f128), -0.0);
3281 try testArgs(f128, tmin(f128), 0.0);8773 try testArgs(f128, tmin(f128), 0.0);
3282 try testArgs(f128, tmin(f128), tmin(f128));8774 try testArgs(f128, tmin(f128), tmin(f128));
3283 try testArgs(f128, tmin(f128), fmin(f128));8775 try testArgs(f128, tmin(f128), fmin(f128));
3284 try testArgs(f128, tmin(f128), 0.1);8776 try testArgs(f128, tmin(f128), 1e-1);
3285 try testArgs(f128, tmin(f128), 1.0);8777 try testArgs(f128, tmin(f128), 1e0);
3286 try testArgs(f128, tmin(f128), 10.0);8778 try testArgs(f128, tmin(f128), 1e1);
3287 try testArgs(f128, tmin(f128), fmax(f128));8779 try testArgs(f128, tmin(f128), fmax(f128));
3288 try testArgs(f128, tmin(f128), inf(f128));8780 try testArgs(f128, tmin(f128), inf(f128));
3289 try testArgs(f128, tmin(f128), nan(f128));8781 try testArgs(f128, tmin(f128), nan(f128));
...@@ -3291,94 +8783,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3291,94 +8783,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3291 try testArgs(f128, fmin(f128), -nan(f128));8783 try testArgs(f128, fmin(f128), -nan(f128));
3292 try testArgs(f128, fmin(f128), -inf(f128));8784 try testArgs(f128, fmin(f128), -inf(f128));
3293 try testArgs(f128, fmin(f128), -fmax(f128));8785 try testArgs(f128, fmin(f128), -fmax(f128));
3294 try testArgs(f128, fmin(f128), -10.0);8786 try testArgs(f128, fmin(f128), -1e1);
3295 try testArgs(f128, fmin(f128), -1.0);8787 try testArgs(f128, fmin(f128), -1e0);
3296 try testArgs(f128, fmin(f128), -0.1);8788 try testArgs(f128, fmin(f128), -1e-1);
3297 try testArgs(f128, fmin(f128), -fmin(f128));8789 try testArgs(f128, fmin(f128), -fmin(f128));
3298 try testArgs(f128, fmin(f128), -tmin(f128));8790 try testArgs(f128, fmin(f128), -tmin(f128));
3299 try testArgs(f128, fmin(f128), -0.0);8791 try testArgs(f128, fmin(f128), -0.0);
3300 try testArgs(f128, fmin(f128), 0.0);8792 try testArgs(f128, fmin(f128), 0.0);
3301 try testArgs(f128, fmin(f128), tmin(f128));8793 try testArgs(f128, fmin(f128), tmin(f128));
3302 try testArgs(f128, fmin(f128), fmin(f128));8794 try testArgs(f128, fmin(f128), fmin(f128));
3303 try testArgs(f128, fmin(f128), 0.1);8795 try testArgs(f128, fmin(f128), 1e-1);
3304 try testArgs(f128, fmin(f128), 1.0);8796 try testArgs(f128, fmin(f128), 1e0);
3305 try testArgs(f128, fmin(f128), 10.0);8797 try testArgs(f128, fmin(f128), 1e1);
3306 try testArgs(f128, fmin(f128), fmax(f128));8798 try testArgs(f128, fmin(f128), fmax(f128));
3307 try testArgs(f128, fmin(f128), inf(f128));8799 try testArgs(f128, fmin(f128), inf(f128));
3308 try testArgs(f128, fmin(f128), nan(f128));8800 try testArgs(f128, fmin(f128), nan(f128));
33098801
3310 try testArgs(f128, 0.1, -nan(f128));8802 try testArgs(f128, 1e-1, -nan(f128));
3311 try testArgs(f128, 0.1, -inf(f128));8803 try testArgs(f128, 1e-1, -inf(f128));
3312 try testArgs(f128, 0.1, -fmax(f128));8804 try testArgs(f128, 1e-1, -fmax(f128));
3313 try testArgs(f128, 0.1, -10.0);8805 try testArgs(f128, 1e-1, -1e1);
3314 try testArgs(f128, 0.1, -1.0);8806 try testArgs(f128, 1e-1, -1e0);
3315 try testArgs(f128, 0.1, -0.1);8807 try testArgs(f128, 1e-1, -1e-1);
3316 try testArgs(f128, 0.1, -fmin(f128));8808 try testArgs(f128, 1e-1, -fmin(f128));
3317 try testArgs(f128, 0.1, -tmin(f128));8809 try testArgs(f128, 1e-1, -tmin(f128));
3318 try testArgs(f128, 0.1, -0.0);8810 try testArgs(f128, 1e-1, -0.0);
3319 try testArgs(f128, 0.1, 0.0);8811 try testArgs(f128, 1e-1, 0.0);
3320 try testArgs(f128, 0.1, tmin(f128));8812 try testArgs(f128, 1e-1, tmin(f128));
3321 try testArgs(f128, 0.1, fmin(f128));8813 try testArgs(f128, 1e-1, fmin(f128));
3322 try testArgs(f128, 0.1, 0.1);8814 try testArgs(f128, 1e-1, 1e-1);
3323 try testArgs(f128, 0.1, 1.0);8815 try testArgs(f128, 1e-1, 1e0);
3324 try testArgs(f128, 0.1, 10.0);8816 try testArgs(f128, 1e-1, 1e1);
3325 try testArgs(f128, 0.1, fmax(f128));8817 try testArgs(f128, 1e-1, fmax(f128));
3326 try testArgs(f128, 0.1, inf(f128));8818 try testArgs(f128, 1e-1, inf(f128));
3327 try testArgs(f128, 0.1, nan(f128));8819 try testArgs(f128, 1e-1, nan(f128));
33288820
3329 try testArgs(f128, 1.0, -nan(f128));8821 try testArgs(f128, 1e0, -nan(f128));
3330 try testArgs(f128, 1.0, -inf(f128));8822 try testArgs(f128, 1e0, -inf(f128));
3331 try testArgs(f128, 1.0, -fmax(f128));8823 try testArgs(f128, 1e0, -fmax(f128));
3332 try testArgs(f128, 1.0, -10.0);8824 try testArgs(f128, 1e0, -1e1);
3333 try testArgs(f128, 1.0, -1.0);8825 try testArgs(f128, 1e0, -1e0);
3334 try testArgs(f128, 1.0, -0.1);8826 try testArgs(f128, 1e0, -1e-1);
3335 try testArgs(f128, 1.0, -fmin(f128));8827 try testArgs(f128, 1e0, -fmin(f128));
3336 try testArgs(f128, 1.0, -tmin(f128));8828 try testArgs(f128, 1e0, -tmin(f128));
3337 try testArgs(f128, 1.0, -0.0);8829 try testArgs(f128, 1e0, -0.0);
3338 try testArgs(f128, 1.0, 0.0);8830 try testArgs(f128, 1e0, 0.0);
3339 try testArgs(f128, 1.0, tmin(f128));8831 try testArgs(f128, 1e0, tmin(f128));
3340 try testArgs(f128, 1.0, fmin(f128));8832 try testArgs(f128, 1e0, fmin(f128));
3341 try testArgs(f128, 1.0, 0.1);8833 try testArgs(f128, 1e0, 1e-1);
3342 try testArgs(f128, 1.0, 1.0);8834 try testArgs(f128, 1e0, 1e0);
3343 try testArgs(f128, 1.0, 10.0);8835 try testArgs(f128, 1e0, 1e1);
3344 try testArgs(f128, 1.0, fmax(f128));8836 try testArgs(f128, 1e0, fmax(f128));
3345 try testArgs(f128, 1.0, inf(f128));8837 try testArgs(f128, 1e0, inf(f128));
3346 try testArgs(f128, 1.0, nan(f128));8838 try testArgs(f128, 1e0, nan(f128));
33478839
3348 try testArgs(f128, 10.0, -nan(f128));8840 try testArgs(f128, 1e1, -nan(f128));
3349 try testArgs(f128, 10.0, -inf(f128));8841 try testArgs(f128, 1e1, -inf(f128));
3350 try testArgs(f128, 10.0, -fmax(f128));8842 try testArgs(f128, 1e1, -fmax(f128));
3351 try testArgs(f128, 10.0, -10.0);8843 try testArgs(f128, 1e1, -1e1);
3352 try testArgs(f128, 10.0, -1.0);8844 try testArgs(f128, 1e1, -1e0);
3353 try testArgs(f128, 10.0, -0.1);8845 try testArgs(f128, 1e1, -1e-1);
3354 try testArgs(f128, 10.0, -fmin(f128));8846 try testArgs(f128, 1e1, -fmin(f128));
3355 try testArgs(f128, 10.0, -tmin(f128));8847 try testArgs(f128, 1e1, -tmin(f128));
3356 try testArgs(f128, 10.0, -0.0);8848 try testArgs(f128, 1e1, -0.0);
3357 try testArgs(f128, 10.0, 0.0);8849 try testArgs(f128, 1e1, 0.0);
3358 try testArgs(f128, 10.0, tmin(f128));8850 try testArgs(f128, 1e1, tmin(f128));
3359 try testArgs(f128, 10.0, fmin(f128));8851 try testArgs(f128, 1e1, fmin(f128));
3360 try testArgs(f128, 10.0, 0.1);8852 try testArgs(f128, 1e1, 1e-1);
3361 try testArgs(f128, 10.0, 1.0);8853 try testArgs(f128, 1e1, 1e0);
3362 try testArgs(f128, 10.0, 10.0);8854 try testArgs(f128, 1e1, 1e1);
3363 try testArgs(f128, 10.0, fmax(f128));8855 try testArgs(f128, 1e1, fmax(f128));
3364 try testArgs(f128, 10.0, inf(f128));8856 try testArgs(f128, 1e1, inf(f128));
3365 try testArgs(f128, 10.0, nan(f128));8857 try testArgs(f128, 1e1, nan(f128));
33668858
3367 try testArgs(f128, fmax(f128), -nan(f128));8859 try testArgs(f128, fmax(f128), -nan(f128));
3368 try testArgs(f128, fmax(f128), -inf(f128));8860 try testArgs(f128, fmax(f128), -inf(f128));
3369 try testArgs(f128, fmax(f128), -fmax(f128));8861 try testArgs(f128, fmax(f128), -fmax(f128));
3370 try testArgs(f128, fmax(f128), -10.0);8862 try testArgs(f128, fmax(f128), -1e1);
3371 try testArgs(f128, fmax(f128), -1.0);8863 try testArgs(f128, fmax(f128), -1e0);
3372 try testArgs(f128, fmax(f128), -0.1);8864 try testArgs(f128, fmax(f128), -1e-1);
3373 try testArgs(f128, fmax(f128), -fmin(f128));8865 try testArgs(f128, fmax(f128), -fmin(f128));
3374 try testArgs(f128, fmax(f128), -tmin(f128));8866 try testArgs(f128, fmax(f128), -tmin(f128));
3375 try testArgs(f128, fmax(f128), -0.0);8867 try testArgs(f128, fmax(f128), -0.0);
3376 try testArgs(f128, fmax(f128), 0.0);8868 try testArgs(f128, fmax(f128), 0.0);
3377 try testArgs(f128, fmax(f128), tmin(f128));8869 try testArgs(f128, fmax(f128), tmin(f128));
3378 try testArgs(f128, fmax(f128), fmin(f128));8870 try testArgs(f128, fmax(f128), fmin(f128));
3379 try testArgs(f128, fmax(f128), 0.1);8871 try testArgs(f128, fmax(f128), 1e-1);
3380 try testArgs(f128, fmax(f128), 1.0);8872 try testArgs(f128, fmax(f128), 1e0);
3381 try testArgs(f128, fmax(f128), 10.0);8873 try testArgs(f128, fmax(f128), 1e1);
3382 try testArgs(f128, fmax(f128), fmax(f128));8874 try testArgs(f128, fmax(f128), fmax(f128));
3383 try testArgs(f128, fmax(f128), inf(f128));8875 try testArgs(f128, fmax(f128), inf(f128));
3384 try testArgs(f128, fmax(f128), nan(f128));8876 try testArgs(f128, fmax(f128), nan(f128));
...@@ -3386,18 +8878,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3386,18 +8878,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3386 try testArgs(f128, inf(f128), -nan(f128));8878 try testArgs(f128, inf(f128), -nan(f128));
3387 try testArgs(f128, inf(f128), -inf(f128));8879 try testArgs(f128, inf(f128), -inf(f128));
3388 try testArgs(f128, inf(f128), -fmax(f128));8880 try testArgs(f128, inf(f128), -fmax(f128));
3389 try testArgs(f128, inf(f128), -10.0);8881 try testArgs(f128, inf(f128), -1e1);
3390 try testArgs(f128, inf(f128), -1.0);8882 try testArgs(f128, inf(f128), -1e0);
3391 try testArgs(f128, inf(f128), -0.1);8883 try testArgs(f128, inf(f128), -1e-1);
3392 try testArgs(f128, inf(f128), -fmin(f128));8884 try testArgs(f128, inf(f128), -fmin(f128));
3393 try testArgs(f128, inf(f128), -tmin(f128));8885 try testArgs(f128, inf(f128), -tmin(f128));
3394 try testArgs(f128, inf(f128), -0.0);8886 try testArgs(f128, inf(f128), -0.0);
3395 try testArgs(f128, inf(f128), 0.0);8887 try testArgs(f128, inf(f128), 0.0);
3396 try testArgs(f128, inf(f128), tmin(f128));8888 try testArgs(f128, inf(f128), tmin(f128));
3397 try testArgs(f128, inf(f128), fmin(f128));8889 try testArgs(f128, inf(f128), fmin(f128));
3398 try testArgs(f128, inf(f128), 0.1);8890 try testArgs(f128, inf(f128), 1e-1);
3399 try testArgs(f128, inf(f128), 1.0);8891 try testArgs(f128, inf(f128), 1e0);
3400 try testArgs(f128, inf(f128), 10.0);8892 try testArgs(f128, inf(f128), 1e1);
3401 try testArgs(f128, inf(f128), fmax(f128));8893 try testArgs(f128, inf(f128), fmax(f128));
3402 try testArgs(f128, inf(f128), inf(f128));8894 try testArgs(f128, inf(f128), inf(f128));
3403 try testArgs(f128, inf(f128), nan(f128));8895 try testArgs(f128, inf(f128), nan(f128));
...@@ -3405,18 +8897,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -3405,18 +8897,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
3405 try testArgs(f128, nan(f128), -nan(f128));8897 try testArgs(f128, nan(f128), -nan(f128));
3406 try testArgs(f128, nan(f128), -inf(f128));8898 try testArgs(f128, nan(f128), -inf(f128));
3407 try testArgs(f128, nan(f128), -fmax(f128));8899 try testArgs(f128, nan(f128), -fmax(f128));
3408 try testArgs(f128, nan(f128), -10.0);8900 try testArgs(f128, nan(f128), -1e1);
3409 try testArgs(f128, nan(f128), -1.0);8901 try testArgs(f128, nan(f128), -1e0);
3410 try testArgs(f128, nan(f128), -0.1);8902 try testArgs(f128, nan(f128), -1e-1);
3411 try testArgs(f128, nan(f128), -fmin(f128));8903 try testArgs(f128, nan(f128), -fmin(f128));
3412 try testArgs(f128, nan(f128), -tmin(f128));8904 try testArgs(f128, nan(f128), -tmin(f128));
3413 try testArgs(f128, nan(f128), -0.0);8905 try testArgs(f128, nan(f128), -0.0);
3414 try testArgs(f128, nan(f128), 0.0);8906 try testArgs(f128, nan(f128), 0.0);
3415 try testArgs(f128, nan(f128), tmin(f128));8907 try testArgs(f128, nan(f128), tmin(f128));
3416 try testArgs(f128, nan(f128), fmin(f128));8908 try testArgs(f128, nan(f128), fmin(f128));
3417 try testArgs(f128, nan(f128), 0.1);8909 try testArgs(f128, nan(f128), 1e-1);
3418 try testArgs(f128, nan(f128), 1.0);8910 try testArgs(f128, nan(f128), 1e0);
3419 try testArgs(f128, nan(f128), 10.0);8911 try testArgs(f128, nan(f128), 1e1);
3420 try testArgs(f128, nan(f128), fmax(f128));8912 try testArgs(f128, nan(f128), fmax(f128));
3421 try testArgs(f128, nan(f128), inf(f128));8913 try testArgs(f128, nan(f128), inf(f128));
3422 try testArgs(f128, nan(f128), nan(f128));8914 try testArgs(f128, nan(f128), nan(f128));
...@@ -4050,73 +9542,73 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -4050,73 +9542,73 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
4050 fmax(f16),9542 fmax(f16),
4051 });9543 });
4052 try testArgs(@Vector(2, f16), .{9544 try testArgs(@Vector(2, f16), .{
4053 0.1, 1.0,9545 1e-1, 1e0,
4054 }, .{9546 }, .{
4055 -nan(f16), -fmin(f16),9547 -nan(f16), -fmin(f16),
4056 });9548 });
4057 try testArgs(@Vector(4, f16), .{9549 try testArgs(@Vector(4, f16), .{
4058 0.1, -fmax(f16), 0.0, 0.1,9550 1e-1, -fmax(f16), 0.0, 1e-1,
4059 }, .{9551 }, .{
4060 -fmin(f16), -10.0, 1.0, -tmin(f16),9552 -fmin(f16), -1e1, 1e0, -tmin(f16),
4061 });9553 });
4062 try testArgs(@Vector(8, f16), .{9554 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,
4064 }, .{9556 }, .{
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,
4066 });9558 });
4067 try testArgs(@Vector(16, f16), .{9559 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),
4069 }, .{9561 }, .{
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),
4071 });9563 });
4072 try testArgs(@Vector(32, f16), .{9564 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),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),
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,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,
4075 }, .{9567 }, .{
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),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),
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,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,
4078 });9570 });
4079 try testArgs(@Vector(64, f16), .{9571 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),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),
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),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),
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,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,
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),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),
4084 }, .{9576 }, .{
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,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,
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,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,
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,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,
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),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),
4089 });9581 });
4090 try testArgs(@Vector(128, f16), .{9582 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),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),
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),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),
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),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),
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,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,
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),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),
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,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,
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),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),
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,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,
4099 }, .{9591 }, .{
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),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),
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),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),
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,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,
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),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),
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),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),
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),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),
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,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,
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,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,
4108 });9600 });
4109 try testArgs(@Vector(69, f16), .{9601 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),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),
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,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,
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),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),
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,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,
4114 -10.0, -0.0, -fmax(f16), nan(f16), fmax(f16),9606 -1e1, -0.0, -fmax(f16), nan(f16), fmax(f16),
4115 }, .{9607 }, .{
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),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),
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,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,
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),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),
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),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),
4120 inf(f16), fmin(f16), -nan(f16), -inf(f16), inf(f16),9612 inf(f16), fmin(f16), -nan(f16), -inf(f16), inf(f16),
4121 });9613 });
41229614
...@@ -4126,229 +9618,229 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -4126,229 +9618,229 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
4126 -tmin(f32),9618 -tmin(f32),
4127 });9619 });
4128 try testArgs(@Vector(2, f32), .{9620 try testArgs(@Vector(2, f32), .{
4129 nan(f32), -10.0,9621 nan(f32), -1e1,
4130 }, .{9622 }, .{
4131 -tmin(f32), fmin(f32),9623 -tmin(f32), fmin(f32),
4132 });9624 });
4133 try testArgs(@Vector(4, f32), .{9625 try testArgs(@Vector(4, f32), .{
4134 fmax(f32), -fmax(f32), -10.0, 0.0,9626 fmax(f32), -fmax(f32), -1e1, 0.0,
4135 }, .{9627 }, .{
4136 inf(f32), inf(f32), -10.0, inf(f32),9628 inf(f32), inf(f32), -1e1, inf(f32),
4137 });9629 });
4138 try testArgs(@Vector(8, f32), .{9630 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,
4140 }, .{9632 }, .{
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,
4142 });9634 });
4143 try testArgs(@Vector(16, f32), .{9635 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),
4145 }, .{9637 }, .{
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),
4147 });9639 });
4148 try testArgs(@Vector(32, f32), .{9640 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,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,
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,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,
4151 }, .{9643 }, .{
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),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),
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),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),
4154 -fmin(f32), fmax(f32),9646 -fmin(f32), fmax(f32),
4155 });9647 });
4156 try testArgs(@Vector(64, f32), .{9648 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,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,
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),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),
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),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),
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,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,
4161 }, .{9653 }, .{
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,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,
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,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,
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),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),
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),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),
4166 });9658 });
4167 try testArgs(@Vector(128, f32), .{9659 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,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,
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),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),
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,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,
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,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,
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),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),
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),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),
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),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),
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),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),
4176 }, .{9668 }, .{
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),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),
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),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),
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,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,
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),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),
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,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,
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),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),
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),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),
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),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),
4185 });9677 });
4186 try testArgs(@Vector(69, f32), .{9678 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,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,
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,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,
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),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),
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,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,
4191 10.0, -nan(f32), -nan(f32), tmin(f32), -nan(f32),9683 1e1, -nan(f32), -nan(f32), tmin(f32), -nan(f32),
4192 }, .{9684 }, .{
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),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),
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),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),
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),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),
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,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,
4197 -10.0, fmin(f32), inf(f32), fmin(f32), 0.0,9689 -1e1, fmin(f32), inf(f32), fmin(f32), 0.0,
4198 });9690 });
41999691
4200 try testArgs(@Vector(1, f64), .{9692 try testArgs(@Vector(1, f64), .{
4201 -0.0,9693 -0.0,
4202 }, .{9694 }, .{
4203 1.0,9695 1e0,
4204 });9696 });
4205 try testArgs(@Vector(2, f64), .{9697 try testArgs(@Vector(2, f64), .{
4206 -1.0, 0.0,9698 -1e0, 0.0,
4207 }, .{9699 }, .{
4208 -inf(f64), -fmax(f64),9700 -inf(f64), -fmax(f64),
4209 });9701 });
4210 try testArgs(@Vector(4, f64), .{9702 try testArgs(@Vector(4, f64), .{
4211 -inf(f64), inf(f64), 10.0, 0.0,9703 -inf(f64), inf(f64), 1e1, 0.0,
4212 }, .{9704 }, .{
4213 -tmin(f64), 1.0, nan(f64), 0.0,9705 -tmin(f64), 1e0, nan(f64), 0.0,
4214 });9706 });
4215 try testArgs(@Vector(8, f64), .{9707 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,
4217 }, .{9709 }, .{
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,
4219 });9711 });
4220 try testArgs(@Vector(16, f64), .{9712 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,
4222 }, .{9714 }, .{
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),
4224 });9716 });
4225 try testArgs(@Vector(32, f64), .{9717 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,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,
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),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),
4228 }, .{9720 }, .{
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),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),
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),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),
4231 });9723 });
4232 try testArgs(@Vector(64, f64), .{9724 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,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,
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,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,
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),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),
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,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,
4237 }, .{9729 }, .{
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),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),
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,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,
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),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),
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,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,
4242 });9734 });
4243 try testArgs(@Vector(128, f64), .{9735 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),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),
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),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),
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),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),
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,9739 -fmin(f64), 1e0, -inf(f64), -1e1, 1e-1, 1e0, 1e1, 1e1, tmin(f64), nan(f64), inf(f64), 0.0, -1e0, -1e1, 1e0,
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),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),
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),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),
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,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,
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),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),
4252 -fmin(f64), -fmin(f64), -1.0, inf(f64), nan(f64), tmin(f64), 0.1, -1.0,9744 -fmin(f64), -fmin(f64), -1e0, inf(f64), nan(f64), tmin(f64), 1e-1, -1e0,
4253 }, .{9745 }, .{
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),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),
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,9747 nan(f64), -tmin(f64), tmin(f64), 1e0, 1e-1, -1e1, -nan(f64), 1e0, inf(f64), -1e1, fmin(f64), 1e-1, 1e1, -1e1, 1e1,
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),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),
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),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),
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,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,
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,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,
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,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,
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),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),
4262 tmin(f64), -10.0, -nan(f64), 10.0, -inf(f64), -fmax(f64), -inf(f64), -1.0,9754 tmin(f64), -1e1, -nan(f64), 1e1, -inf(f64), -fmax(f64), -inf(f64), -1e0,
4263 });9755 });
4264 try testArgs(@Vector(69, f64), .{9756 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),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),
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),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),
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),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),
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,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,
4269 -nan(f64), 10.0, -1.0, 0.1, 0.0,9761 -nan(f64), 1e1, -1e0, 1e-1, 0.0,
4270 }, .{9762 }, .{
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),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),
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),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),
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),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),
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,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,
4275 -nan(f64), -fmin(f64), 0.1, nan(f64), 0.1,9767 -nan(f64), -fmin(f64), 1e-1, nan(f64), 1e-1,
4276 });9768 });
42779769
4278 try testArgs(@Vector(1, f80), .{9770 try testArgs(@Vector(1, f80), .{
4279 -nan(f80),9771 -nan(f80),
4280 }, .{9772 }, .{
4281 -1.0,9773 -1e0,
4282 });9774 });
4283 try testArgs(@Vector(2, f80), .{9775 try testArgs(@Vector(2, f80), .{
4284 -fmax(f80), -inf(f80),9776 -fmax(f80), -inf(f80),
4285 }, .{9777 }, .{
4286 0.1, 10.0,9778 1e-1, 1e1,
4287 });9779 });
4288 try testArgs(@Vector(4, f80), .{9780 try testArgs(@Vector(4, f80), .{
4289 -0.0, -inf(f80), 0.1, 10.0,9781 -0.0, -inf(f80), 1e-1, 1e1,
4290 }, .{9782 }, .{
4291 -1.0, 0.0, 0.1, -10.0,9783 -1e0, 0.0, 1e-1, -1e1,
4292 });9784 });
4293 try testArgs(@Vector(8, f80), .{9785 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,
4295 }, .{9787 }, .{
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,
4297 });9789 });
4298 try testArgs(@Vector(16, f80), .{9790 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),
4300 }, .{9792 }, .{
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,
4302 });9794 });
4303 try testArgs(@Vector(32, f80), .{9795 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),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),
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),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),
4306 }, .{9798 }, .{
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,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,
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),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),
4309 });9801 });
4310 try testArgs(@Vector(64, f80), .{9802 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),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),
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,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,
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,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,
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),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),
4315 }, .{9807 }, .{
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),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),
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),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),
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,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,
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,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,
4320 });9812 });
4321 try testArgs(@Vector(128, f80), .{9813 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),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),
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,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,
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,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,
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),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),
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),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),
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,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,
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,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,
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),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),
4330 }, .{9822 }, .{
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),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),
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,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,
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),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),
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),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),
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,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,
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),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),
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),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),
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,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,
4339 });9831 });
4340 try testArgs(@Vector(69, f80), .{9832 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,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,
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),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),
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),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),
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,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,
4345 -fmax(f80), -1.0, 0.1, -1.0, fmax(f80),9837 -fmax(f80), -1e0, 1e-1, -1e0, fmax(f80),
4346 }, .{9838 }, .{
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),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),
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,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,
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),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),
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,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,
4351 nan(f80), 10.0, -10.0, 0.0, -fmin(f80),9843 nan(f80), 1e1, -1e1, 0.0, -fmin(f80),
4352 });9844 });
43539845
4354 try testArgs(@Vector(1, f128), .{9846 try testArgs(@Vector(1, f128), .{
...@@ -4359,76 +9851,76 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })...@@ -4359,76 +9851,76 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
4359 try testArgs(@Vector(2, f128), .{9851 try testArgs(@Vector(2, f128), .{
4360 0.0, -inf(f128),9852 0.0, -inf(f128),
4361 }, .{9853 }, .{
4362 0.1, -fmin(f128),9854 1e-1, -fmin(f128),
4363 });9855 });
4364 try testArgs(@Vector(4, f128), .{9856 try testArgs(@Vector(4, f128), .{
4365 0.1, fmax(f128), 10.0, -fmax(f128),9857 1e-1, fmax(f128), 1e1, -fmax(f128),
4366 }, .{9858 }, .{
4367 -tmin(f128), fmax(f128), -0.0, -0.0,9859 -tmin(f128), fmax(f128), -0.0, -0.0,
4368 });9860 });
4369 try testArgs(@Vector(8, f128), .{9861 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),
4371 }, .{9863 }, .{
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,
4373 });9865 });
4374 try testArgs(@Vector(16, f128), .{9866 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),
4376 }, .{9868 }, .{
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),
4378 });9870 });
4379 try testArgs(@Vector(32, f128), .{9871 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),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),
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),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),
4382 }, .{9874 }, .{
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,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,
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,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,
4385 });9877 });
4386 try testArgs(@Vector(64, f128), .{9878 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,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,
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,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,
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,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,
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,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,
4391 fmax(f128), fmax(f128), 0.1, -fmax(f128),9883 fmax(f128), fmax(f128), 1e-1, -fmax(f128),
4392 }, .{9884 }, .{
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,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,
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),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),
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),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),
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),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),
4397 });9889 });
4398 try testArgs(@Vector(128, f128), .{9890 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),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),
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),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),
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,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,
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),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),
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,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,
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,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,
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),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),
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,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,
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),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),
4408 0.1, fmax(f128),9900 1e-1, fmax(f128),
4409 }, .{9901 }, .{
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,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,
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),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),
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),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),
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,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,
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),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),
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),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),
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,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,
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,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,
4418 fmin(f128), 10.0, -tmin(f128), -tmin(f128), 0.0, -10.0, 1.0, -fmin(f128),9910 fmin(f128), 1e1, -tmin(f128), -tmin(f128), 0.0, -1e1, 1e0, -fmin(f128),
4419 });9911 });
4420 try testArgs(@Vector(69, f128), .{9912 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),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),
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),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),
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,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,
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),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),
4425 nan(f128), -inf(f128), 1.0, fmin(f128), -nan(f128),9917 nan(f128), -inf(f128), 1e0, fmin(f128), -nan(f128),
4426 }, .{9918 }, .{
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),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),
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,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,
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,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,
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,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,
4431 -1.0, -inf(f128), tmin(f128), inf(f128), inf(f128),9923 -1e0, -inf(f128), tmin(f128), inf(f128), inf(f128),
4432 });9924 });
4433 }9925 }
4434 };9926 };
...@@ -4463,6 +9955,65 @@ test clz {...@@ -4463,6 +9955,65 @@ test clz {
4463 try test_clz.testIntVectors();9955 try test_clz.testIntVectors();
4464}9956}
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
4466inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {10017inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
4467 return lhs == rhs;10018 return lhs == rhs;
4468}10019}
test/cases/compile_errors/anytype_param_requires_comptime.zig+1-1
...@@ -15,6 +15,6 @@ pub export fn entry() void {...@@ -15,6 +15,6 @@ pub export fn entry() void {
15// error15// error
16//16//
17// :7:25: error: unable to resolve comptime value17// :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-known18// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_464.C' must be comptime-known
19// :4:16: note: struct requires comptime because of this field19// :4:16: note: struct requires comptime because of this field
20// :4:16: note: types are not available at runtime20// :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 {...@@ -16,5 +16,5 @@ pub export fn entry2() void {
16//16//
17// :3:6: error: no field or member function named 'copy' in '[]const u8'17// :3:6: error: no field or member function named 'copy' in '[]const u8'
18// :9:8: error: no field or member function named 'bar' in '@TypeOf(.{})'18// :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'
20// :12:6: note: struct declared here20// :12:6: note: struct declared here
test/cases/compile_errors/coerce_anon_struct.zig+1-1
...@@ -6,6 +6,6 @@ export fn foo() void {...@@ -6,6 +6,6 @@ export fn foo() void {
66
7// error7// error
8//8//
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'
10// :3:16: note: struct declared here10// :3:16: note: struct declared here
11// :1:11: note: struct declared here11// :1:11: note: struct declared here