Commit 8195b64f57

Jacob Young <jacobly0@users.noreply.github.com>
2025-01-29 18:29:40
x86_64: rewrite scalar float conversions
1 parent c44be99
Changed files (2)
src
arch
test
behavior
x86_64
src/arch/x86_64/CodeGen.zig
@@ -1339,7 +1339,7 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {
         self.mir_extra.appendAssumeCapacity(switch (field.type) {
             u32 => @field(extra, field.name),
             i32, Mir.Memory.Info => @bitCast(@field(extra, field.name)),
-            bits.FrameIndex => @intFromEnum(@field(extra, field.name)),
+            FrameIndex => @intFromEnum(@field(extra, field.name)),
             else => @compileError("bad field type: " ++ field.name ++ ": " ++ @typeName(field.type)),
         });
     }
@@ -2499,8 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
             .cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),
 
             .bitcast          => try cg.airBitCast(inst),
-            .fptrunc          => try cg.airFptrunc(inst),
-            .fpext            => try cg.airFpext(inst),
             .intcast          => try cg.airIntCast(inst),
             .trunc            => try cg.airTrunc(inst),
             .is_non_null      => try cg.airIsNonNull(inst),
@@ -14558,8 +14556,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14598,8 +14596,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .lzcnt, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14637,8 +14635,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14676,8 +14674,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14716,8 +14714,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .lzcnt, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14755,8 +14753,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .byte }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14794,8 +14792,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14834,8 +14832,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .lzcnt, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14873,8 +14871,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14912,8 +14910,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .false_deps_lzcnt_tzcnt, .lzcnt, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14952,8 +14950,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", .lzcnt, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -14991,8 +14989,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     } },
                 }, .{
                     .required_features = .{ .@"64bit", null, null, null },
-                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .src_constraints = .{ .{ .scalar_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_int_is = .word }},
                     .patterns = &.{
                         .{ .src = .{ .to_mem, .none } },
                     },
@@ -16356,8 +16354,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
+                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16388,8 +16386,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
+                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16420,8 +16418,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
+                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16453,8 +16451,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
+                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16485,8 +16483,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .src_constraints = .{ .any_scalar_int, .any_scalar_int },
+                            .dst_constraints = .{.{ .bool_vec = .byte }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16524,8 +16522,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16557,8 +16555,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16590,8 +16588,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16624,8 +16622,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16657,8 +16655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
                             } },
                         }, .{
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{ .any_scalar_int, .any_scalar_int },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16698,8 +16696,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte } },
+                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16732,8 +16730,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word } },
+                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16765,8 +16763,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword } },
+                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16799,8 +16797,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword } },
+                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -16833,8 +16831,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .@"64bit", null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .src_constraints = .{ .any_scalar_int, .any_scalar_int },
+                            .dst_constraints = .{.{ .bool_vec = .qword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -17326,11 +17324,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .avx, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -17371,11 +17369,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .avx, null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -17416,11 +17414,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse2, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -17462,11 +17460,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse2, null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -17508,11 +17506,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -17556,11 +17554,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse, null, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                                 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -18675,11 +18673,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .avx, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -18720,11 +18718,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .avx, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -18765,11 +18763,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse2, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -18810,11 +18808,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse2, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -18855,11 +18853,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -18900,11 +18898,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             } },
                         }, .{
                             .required_features = .{ .sse2, .slow_incdec, null, null },
-                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .src_constraints = .{
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                                 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
                             },
+                            .dst_constraints = .{.{ .bool_vec = .dword }},
                             .patterns = &.{
                                 .{ .src = .{ .to_mem, .to_mem } },
                             },
@@ -21901,6 +21899,939 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                 for (ops) |op| try op.die(cg);
             },
             .unreach => {},
+            .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
+                const ty_op = air_datas[@intFromEnum(inst)].ty_op;
+                var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
+                var res: [1]Temp = undefined;
+                cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_, .cvtps2ph, .dst0q, .src0x, .rm(.{}), ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_, .cvtps2ph, .dst0x, .src0y, .rm(.{}), ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                    },
+                    .dst_temps = .{.{ .rc = .sse }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
+                        .{ ._, .v_ss, .cvtsd2, .dst0x, .dst0x, .src0q, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ss, .cvtsd2, .dst0x, .src0x, .src0q, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mut_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .sse, .none } },
+                    },
+                    .dst_temps = .{.{ .rc = .sse }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
+                        .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._ss, .cvtsd2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .x87, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.mem},
+                    .each = .{ .once = &.{
+                        .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtpd2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._ps, .cvtpd2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtpd2, .dst0y, .src0x, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .avx, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .call_frame = .{ .size = 16, .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .frame = .call_frame } },
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .xmm0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
+                        .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
+                        .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .sse2, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .call_frame = .{ .size = 16, .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .frame = .call_frame } },
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .xmm0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
+                        .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
+                        .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .sse, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .call_frame = .{ .size = 16, .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .frame = .call_frame } },
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .xmm0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
+                        .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
+                        .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .x87, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_x87, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.mem},
+                    .each = .{ .once = &.{
+                        .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .x87, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_x87, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.mem},
+                    .each = .{ .once = &.{
+                        .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .word, .is = .word } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .st0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                } }) catch |err| switch (err) {
+                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
+                        @tagName(air_tag),
+                        ty_op.ty.toType().fmt(pt),
+                        cg.typeOf(ty_op.operand).fmt(pt),
+                        ops[0].tracking(cg),
+                    }),
+                    else => |e| return e,
+                };
+                try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
+            },
+            .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
+                const ty_op = air_datas[@intFromEnum(inst)].ty_op;
+                var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
+                var res: [1]Temp = undefined;
+                cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .dword, .is = .dword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
+                        .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .dst0d, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
+                        .{ ._, .v_pd, .cvtps2, .dst0x, .dst0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
+                        .{ ._, .v_pd, .cvtps2, .dst0y, .dst0x, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .f16c, .x87, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
+                        .{ .type = .f32, .kind = .mem },
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .rc = .x87 }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
+                        .{ ._, .v_ss, .mov, .mem(.tmp1d), .tmp0x, ._, ._ },
+                        .{ ._, .f_, .ld, .mem(.tmp1d), ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .st0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                    },
+                    .dst_temps = .{.{ .rc = .sse }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
+                        .{ ._, .v_sd, .cvtss2, .dst0x, .dst0x, .src0d, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_sd, .cvtss2, .dst0x, .src0x, .src0d, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mut_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .sse, .none } },
+                    },
+                    .dst_temps = .{.{ .rc = .sse }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
+                        .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mut_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._sd, .cvtss2, .dst0x, .src0d, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .x87, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.mem},
+                    .each = .{ .once = &.{
+                        .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_pd, .cvtps2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse2, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, ._pd, .cvtps2, .dst0x, .src0q, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .avx, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .mem, .none } },
+                        .{ .src = .{ .to_sse, .none } },
+                    },
+                    .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
+                    .each = .{ .once = &.{
+                        .{ ._, .v_pd, .cvtps2, .dst0y, .src0x, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .x87, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.mem},
+                    .each = .{ .once = &.{
+                        .{ ._, .f_, .ld, .src0d, ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .x87, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .tbyte } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .reg = .st7 } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.mem},
+                    .each = .{ .once = &.{
+                        .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
+                        .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .sse, null, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .{ .to_reg = .xmm0 }, .none } },
+                    },
+                    .call_frame = .{ .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .ref = .src0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .avx, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .call_frame = .{ .size = 16, .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .frame = .call_frame } },
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .xmm0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
+                        .{ ._, .v_dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
+                        .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .sse2, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .call_frame = .{ .size = 16, .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .frame = .call_frame } },
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .xmm0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
+                        .{ ._, ._dqa, .mov, .mem(.tmp0x), .dst0x, ._, ._ },
+                        .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
+                    } },
+                }, .{
+                    .required_features = .{ .@"64bit", .sse, null, null },
+                    .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
+                    .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .xword } }},
+                    .patterns = &.{
+                        .{ .src = .{ .to_mem, .none } },
+                    },
+                    .call_frame = .{ .size = 16, .alignment = .@"16" },
+                    .extra_temps = .{
+                        .{ .type = .f80, .kind = .{ .frame = .call_frame } },
+                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                        .unused,
+                    },
+                    .dst_temps = .{.{ .reg = .xmm0 }},
+                    .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
+                    .each = .{ .once = &.{
+                        .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
+                        .{ ._, ._ps, .mova, .mem(.tmp0x), .dst0x, ._, ._ },
+                        .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
+                    } },
+                } }) catch |err| switch (err) {
+                    error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
+                        @tagName(air_tag),
+                        ty_op.ty.toType().fmt(pt),
+                        cg.typeOf(ty_op.operand).fmt(pt),
+                        ops[0].tracking(cg),
+                    }),
+                    else => |e| return e,
+                };
+                try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
+            },
             .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
                 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
                 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
@@ -42770,8 +43701,8 @@ const Select = struct {
 
     const Case = struct {
         required_features: [4]?std.Target.x86.Feature = @splat(null),
-        dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),
         src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any),
+        dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),
         patterns: []const Select.Pattern,
         call_frame: packed struct(u16) { size: u10 = 0, alignment: InternPool.Alignment } = .{ .size = 0, .alignment = .none },
         extra_temps: [@intFromEnum(Select.Operand.Ref.dst0) - @intFromEnum(Select.Operand.Ref.tmp0)]TempSpec = @splat(.unused),
@@ -43168,6 +44099,7 @@ const Select = struct {
             smax_mem: ConstInfo,
             umin_mem: ConstInfo,
             umax_mem: ConstInfo,
+            frame: FrameIndex,
             symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },
 
             const ConstInfo = struct { ref: Select.Operand.Ref, vectorize_to: ?Memory.Size = null };
@@ -43284,6 +44216,7 @@ const Select = struct {
                     } })) else res_scalar_val;
                     return .{ try cg.tempMemFromValue(res_val), true };
                 },
+                .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },
                 .symbol => |symbol| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{
                     .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
                         try elf_file.getGlobalSymbol(symbol.name, symbol.lib)
@@ -43945,11 +44878,11 @@ fn select(
     @setEvalBranchQuota(33_600);
     cases: for (cases) |case| {
         for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;
-        for (case.dst_constraints[0..dst_temps.len], dst_tys) |dst_constraint, dst_ty| if (!dst_constraint.accepts(dst_ty, cg)) continue :cases;
         for (case.src_constraints[0..src_temps.len], src_temps) |src_constraint, src_temp| if (!src_constraint.accepts(src_temp.typeOf(cg), cg)) continue :cases;
+        for (case.dst_constraints[0..dst_temps.len], dst_tys) |dst_constraint, dst_ty| if (!dst_constraint.accepts(dst_ty, cg)) continue :cases;
         if (std.debug.runtime_safety) {
-            for (case.dst_constraints[dst_temps.len..]) |dst_constraint| assert(dst_constraint == .any);
             for (case.src_constraints[src_temps.len..]) |src_constraint| assert(src_constraint == .any);
+            for (case.dst_constraints[dst_temps.len..]) |dst_constraint| assert(dst_constraint == .any);
         }
         patterns: for (case.patterns) |pattern| {
             for (pattern.src[0..src_temps.len], src_temps) |src_pattern, src_temp| if (!src_pattern.matches(src_temp, cg)) continue :patterns;
test/behavior/x86_64/math.zig
@@ -650,18 +650,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
             try testArgs(f16, -nan(f16));
             try testArgs(f16, -inf(f16));
             try testArgs(f16, -fmax(f16));
-            try testArgs(f16, -10.0);
-            try testArgs(f16, -1.0);
-            try testArgs(f16, -0.1);
+            try testArgs(f16, -1e1);
+            try testArgs(f16, -1e0);
+            try testArgs(f16, -1e-1);
             try testArgs(f16, -fmin(f16));
             try testArgs(f16, -tmin(f16));
             try testArgs(f16, -0.0);
             try testArgs(f16, 0.0);
             try testArgs(f16, tmin(f16));
             try testArgs(f16, fmin(f16));
-            try testArgs(f16, 0.1);
-            try testArgs(f16, 1.0);
-            try testArgs(f16, 10.0);
+            try testArgs(f16, 1e-1);
+            try testArgs(f16, 1e0);
+            try testArgs(f16, 1e1);
             try testArgs(f16, fmax(f16));
             try testArgs(f16, inf(f16));
             try testArgs(f16, nan(f16));
@@ -669,18 +669,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
             try testArgs(f32, -nan(f32));
             try testArgs(f32, -inf(f32));
             try testArgs(f32, -fmax(f32));
-            try testArgs(f32, -10.0);
-            try testArgs(f32, -1.0);
-            try testArgs(f32, -0.1);
+            try testArgs(f32, -1e1);
+            try testArgs(f32, -1e0);
+            try testArgs(f32, -1e-1);
             try testArgs(f32, -fmin(f32));
             try testArgs(f32, -tmin(f32));
             try testArgs(f32, -0.0);
             try testArgs(f32, 0.0);
             try testArgs(f32, tmin(f32));
             try testArgs(f32, fmin(f32));
-            try testArgs(f32, 0.1);
-            try testArgs(f32, 1.0);
-            try testArgs(f32, 10.0);
+            try testArgs(f32, 1e-1);
+            try testArgs(f32, 1e0);
+            try testArgs(f32, 1e1);
             try testArgs(f32, fmax(f32));
             try testArgs(f32, inf(f32));
             try testArgs(f32, nan(f32));
@@ -688,18 +688,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
             try testArgs(f64, -nan(f64));
             try testArgs(f64, -inf(f64));
             try testArgs(f64, -fmax(f64));
-            try testArgs(f64, -10.0);
-            try testArgs(f64, -1.0);
-            try testArgs(f64, -0.1);
+            try testArgs(f64, -1e1);
+            try testArgs(f64, -1e0);
+            try testArgs(f64, -1e-1);
             try testArgs(f64, -fmin(f64));
             try testArgs(f64, -tmin(f64));
             try testArgs(f64, -0.0);
             try testArgs(f64, 0.0);
             try testArgs(f64, tmin(f64));
             try testArgs(f64, fmin(f64));
-            try testArgs(f64, 0.1);
-            try testArgs(f64, 1.0);
-            try testArgs(f64, 10.0);
+            try testArgs(f64, 1e-1);
+            try testArgs(f64, 1e0);
+            try testArgs(f64, 1e1);
             try testArgs(f64, fmax(f64));
             try testArgs(f64, inf(f64));
             try testArgs(f64, nan(f64));
@@ -707,18 +707,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
             try testArgs(f80, -nan(f80));
             try testArgs(f80, -inf(f80));
             try testArgs(f80, -fmax(f80));
-            try testArgs(f80, -10.0);
-            try testArgs(f80, -1.0);
-            try testArgs(f80, -0.1);
+            try testArgs(f80, -1e1);
+            try testArgs(f80, -1e0);
+            try testArgs(f80, -1e-1);
             try testArgs(f80, -fmin(f80));
             try testArgs(f80, -tmin(f80));
             try testArgs(f80, -0.0);
             try testArgs(f80, 0.0);
             try testArgs(f80, tmin(f80));
             try testArgs(f80, fmin(f80));
-            try testArgs(f80, 0.1);
-            try testArgs(f80, 1.0);
-            try testArgs(f80, 10.0);
+            try testArgs(f80, 1e-1);
+            try testArgs(f80, 1e0);
+            try testArgs(f80, 1e1);
             try testArgs(f80, fmax(f80));
             try testArgs(f80, inf(f80));
             try testArgs(f80, nan(f80));
@@ -726,18 +726,18 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
             try testArgs(f128, -nan(f128));
             try testArgs(f128, -inf(f128));
             try testArgs(f128, -fmax(f128));
-            try testArgs(f128, -10.0);
-            try testArgs(f128, -1.0);
-            try testArgs(f128, -0.1);
+            try testArgs(f128, -1e1);
+            try testArgs(f128, -1e0);
+            try testArgs(f128, -1e-1);
             try testArgs(f128, -fmin(f128));
             try testArgs(f128, -tmin(f128));
             try testArgs(f128, -0.0);
             try testArgs(f128, 0.0);
             try testArgs(f128, tmin(f128));
             try testArgs(f128, fmin(f128));
-            try testArgs(f128, 0.1);
-            try testArgs(f128, 1.0);
-            try testArgs(f128, 10.0);
+            try testArgs(f128, 1e-1);
+            try testArgs(f128, 1e0);
+            try testArgs(f128, 1e1);
             try testArgs(f128, fmax(f128));
             try testArgs(f128, inf(f128));
             try testArgs(f128, nan(f128));
@@ -1623,6 +1623,6347 @@ fn unary(comptime op: anytype, comptime opts: struct { strict: bool = false }) t
     };
 }
 
+fn cast(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
+    return struct {
+        // noinline so that `mem_arg` is on the stack
+        noinline fn testArgKinds(
+            _: Gpr,
+            _: Gpr,
+            _: Gpr,
+            _: Gpr,
+            _: Gpr,
+            _: Gpr,
+            _: Gpr,
+            _: Gpr,
+            _: Sse,
+            _: Sse,
+            _: Sse,
+            _: Sse,
+            _: Sse,
+            _: Sse,
+            _: Sse,
+            _: Sse,
+            comptime Result: type,
+            comptime Type: type,
+            comptime imm_arg: Type,
+            mem_arg: Type,
+        ) !void {
+            const expected = comptime op(Result, Type, imm_arg);
+            var reg_arg = mem_arg;
+            _ = .{&reg_arg};
+            try checkExpected(expected, op(Result, Type, reg_arg), opts.strict);
+            try checkExpected(expected, op(Result, Type, mem_arg), opts.strict);
+            try checkExpected(expected, op(Result, Type, imm_arg), opts.strict);
+        }
+        // noinline for a more helpful stack trace
+        noinline fn testArgs(comptime Result: type, comptime Type: type, comptime imm_arg: Type) !void {
+            try testArgKinds(
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                undefined,
+                Result,
+                Type,
+                imm_arg,
+                imm_arg,
+            );
+        }
+        fn testInts() !void {
+            try testArgs(i8, i1, -1);
+            try testArgs(i8, i1, 0);
+            try testArgs(u8, i1, -1);
+            try testArgs(u8, i1, 0);
+            try testArgs(i16, i1, -1);
+            try testArgs(i16, i1, 0);
+            try testArgs(u16, i1, -1);
+            try testArgs(u16, i1, 0);
+            try testArgs(i32, i1, -1);
+            try testArgs(i32, i1, 0);
+            try testArgs(u32, i1, -1);
+            try testArgs(u32, i1, 0);
+            try testArgs(i64, i1, -1);
+            try testArgs(i64, i1, 0);
+            try testArgs(u64, i1, -1);
+            try testArgs(u64, i1, 0);
+            try testArgs(i128, i1, -1);
+            try testArgs(i128, i1, 0);
+            try testArgs(u128, i1, -1);
+            try testArgs(u128, i1, 0);
+            try testArgs(i256, i1, -1);
+            try testArgs(i256, i1, 0);
+            try testArgs(u256, i1, -1);
+            try testArgs(u256, i1, 0);
+            try testArgs(i512, i1, -1);
+            try testArgs(i512, i1, 0);
+            try testArgs(u512, i1, -1);
+            try testArgs(u512, i1, 0);
+            try testArgs(i1024, i1, -1);
+            try testArgs(i1024, i1, 0);
+            try testArgs(u1024, i1, -1);
+            try testArgs(u1024, i1, 0);
+            try testArgs(i8, u1, 0);
+            try testArgs(i8, u1, 1 << 0);
+            try testArgs(u8, u1, 0);
+            try testArgs(u8, u1, 1 << 0);
+            try testArgs(i16, u1, 0);
+            try testArgs(i16, u1, 1 << 0);
+            try testArgs(u16, u1, 0);
+            try testArgs(u16, u1, 1 << 0);
+            try testArgs(i32, u1, 0);
+            try testArgs(i32, u1, 1 << 0);
+            try testArgs(u32, u1, 0);
+            try testArgs(u32, u1, 1 << 0);
+            try testArgs(i64, u1, 0);
+            try testArgs(i64, u1, 1 << 0);
+            try testArgs(u64, u1, 0);
+            try testArgs(u64, u1, 1 << 0);
+            try testArgs(i128, u1, 0);
+            try testArgs(i128, u1, 1 << 0);
+            try testArgs(u128, u1, 0);
+            try testArgs(u128, u1, 1 << 0);
+            try testArgs(i256, u1, 0);
+            try testArgs(i256, u1, 1 << 0);
+            try testArgs(u256, u1, 0);
+            try testArgs(u256, u1, 1 << 0);
+            try testArgs(i512, u1, 0);
+            try testArgs(i512, u1, 1 << 0);
+            try testArgs(u512, u1, 0);
+            try testArgs(u512, u1, 1 << 0);
+            try testArgs(i1024, u1, 0);
+            try testArgs(i1024, u1, 1 << 0);
+            try testArgs(u1024, u1, 0);
+            try testArgs(u1024, u1, 1 << 0);
+
+            try testArgs(i8, i2, -1 << 1);
+            try testArgs(i8, i2, -1);
+            try testArgs(i8, i2, 0);
+            try testArgs(u8, i2, -1 << 1);
+            try testArgs(u8, i2, -1);
+            try testArgs(u8, i2, 0);
+            try testArgs(i16, i2, -1 << 1);
+            try testArgs(i16, i2, -1);
+            try testArgs(i16, i2, 0);
+            try testArgs(u16, i2, -1 << 1);
+            try testArgs(u16, i2, -1);
+            try testArgs(u16, i2, 0);
+            try testArgs(i32, i2, -1 << 1);
+            try testArgs(i32, i2, -1);
+            try testArgs(i32, i2, 0);
+            try testArgs(u32, i2, -1 << 1);
+            try testArgs(u32, i2, -1);
+            try testArgs(u32, i2, 0);
+            try testArgs(i64, i2, -1 << 1);
+            try testArgs(i64, i2, -1);
+            try testArgs(i64, i2, 0);
+            try testArgs(u64, i2, -1 << 1);
+            try testArgs(u64, i2, -1);
+            try testArgs(u64, i2, 0);
+            try testArgs(i128, i2, -1 << 1);
+            try testArgs(i128, i2, -1);
+            try testArgs(i128, i2, 0);
+            try testArgs(u128, i2, -1 << 1);
+            try testArgs(u128, i2, -1);
+            try testArgs(u128, i2, 0);
+            try testArgs(i256, i2, -1 << 1);
+            try testArgs(i256, i2, -1);
+            try testArgs(i256, i2, 0);
+            try testArgs(u256, i2, -1 << 1);
+            try testArgs(u256, i2, -1);
+            try testArgs(u256, i2, 0);
+            try testArgs(i512, i2, -1 << 1);
+            try testArgs(i512, i2, -1);
+            try testArgs(i512, i2, 0);
+            try testArgs(u512, i2, -1 << 1);
+            try testArgs(u512, i2, -1);
+            try testArgs(u512, i2, 0);
+            try testArgs(i1024, i2, -1 << 1);
+            try testArgs(i1024, i2, -1);
+            try testArgs(i1024, i2, 0);
+            try testArgs(u1024, i2, -1 << 1);
+            try testArgs(u1024, i2, -1);
+            try testArgs(u1024, i2, 0);
+            try testArgs(i8, u2, 0);
+            try testArgs(i8, u2, 1 << 0);
+            try testArgs(i8, u2, 1 << 1);
+            try testArgs(u8, u2, 0);
+            try testArgs(u8, u2, 1 << 0);
+            try testArgs(u8, u2, 1 << 1);
+            try testArgs(i16, u2, 0);
+            try testArgs(i16, u2, 1 << 0);
+            try testArgs(i16, u2, 1 << 1);
+            try testArgs(u16, u2, 0);
+            try testArgs(u16, u2, 1 << 0);
+            try testArgs(u16, u2, 1 << 1);
+            try testArgs(i32, u2, 0);
+            try testArgs(i32, u2, 1 << 0);
+            try testArgs(i32, u2, 1 << 1);
+            try testArgs(u32, u2, 0);
+            try testArgs(u32, u2, 1 << 0);
+            try testArgs(u32, u2, 1 << 1);
+            try testArgs(i64, u2, 0);
+            try testArgs(i64, u2, 1 << 0);
+            try testArgs(i64, u2, 1 << 1);
+            try testArgs(u64, u2, 0);
+            try testArgs(u64, u2, 1 << 0);
+            try testArgs(u64, u2, 1 << 1);
+            try testArgs(i128, u2, 0);
+            try testArgs(i128, u2, 1 << 0);
+            try testArgs(i128, u2, 1 << 1);
+            try testArgs(u128, u2, 0);
+            try testArgs(u128, u2, 1 << 0);
+            try testArgs(u128, u2, 1 << 1);
+            try testArgs(i256, u2, 0);
+            try testArgs(i256, u2, 1 << 0);
+            try testArgs(i256, u2, 1 << 1);
+            try testArgs(u256, u2, 0);
+            try testArgs(u256, u2, 1 << 0);
+            try testArgs(u256, u2, 1 << 1);
+            try testArgs(i512, u2, 0);
+            try testArgs(i512, u2, 1 << 0);
+            try testArgs(i512, u2, 1 << 1);
+            try testArgs(u512, u2, 0);
+            try testArgs(u512, u2, 1 << 0);
+            try testArgs(u512, u2, 1 << 1);
+            try testArgs(i1024, u2, 0);
+            try testArgs(i1024, u2, 1 << 0);
+            try testArgs(i1024, u2, 1 << 1);
+            try testArgs(u1024, u2, 0);
+            try testArgs(u1024, u2, 1 << 0);
+            try testArgs(u1024, u2, 1 << 1);
+
+            try testArgs(i8, i3, -1 << 2);
+            try testArgs(i8, i3, -1);
+            try testArgs(i8, i3, 0);
+            try testArgs(u8, i3, -1 << 2);
+            try testArgs(u8, i3, -1);
+            try testArgs(u8, i3, 0);
+            try testArgs(i16, i3, -1 << 2);
+            try testArgs(i16, i3, -1);
+            try testArgs(i16, i3, 0);
+            try testArgs(u16, i3, -1 << 2);
+            try testArgs(u16, i3, -1);
+            try testArgs(u16, i3, 0);
+            try testArgs(i32, i3, -1 << 2);
+            try testArgs(i32, i3, -1);
+            try testArgs(i32, i3, 0);
+            try testArgs(u32, i3, -1 << 2);
+            try testArgs(u32, i3, -1);
+            try testArgs(u32, i3, 0);
+            try testArgs(i64, i3, -1 << 2);
+            try testArgs(i64, i3, -1);
+            try testArgs(i64, i3, 0);
+            try testArgs(u64, i3, -1 << 2);
+            try testArgs(u64, i3, -1);
+            try testArgs(u64, i3, 0);
+            try testArgs(i128, i3, -1 << 2);
+            try testArgs(i128, i3, -1);
+            try testArgs(i128, i3, 0);
+            try testArgs(u128, i3, -1 << 2);
+            try testArgs(u128, i3, -1);
+            try testArgs(u128, i3, 0);
+            try testArgs(i256, i3, -1 << 2);
+            try testArgs(i256, i3, -1);
+            try testArgs(i256, i3, 0);
+            try testArgs(u256, i3, -1 << 2);
+            try testArgs(u256, i3, -1);
+            try testArgs(u256, i3, 0);
+            try testArgs(i512, i3, -1 << 2);
+            try testArgs(i512, i3, -1);
+            try testArgs(i512, i3, 0);
+            try testArgs(u512, i3, -1 << 2);
+            try testArgs(u512, i3, -1);
+            try testArgs(u512, i3, 0);
+            try testArgs(i1024, i3, -1 << 2);
+            try testArgs(i1024, i3, -1);
+            try testArgs(i1024, i3, 0);
+            try testArgs(u1024, i3, -1 << 2);
+            try testArgs(u1024, i3, -1);
+            try testArgs(u1024, i3, 0);
+            try testArgs(i8, u3, 0);
+            try testArgs(i8, u3, 1 << 0);
+            try testArgs(i8, u3, 1 << 2);
+            try testArgs(u8, u3, 0);
+            try testArgs(u8, u3, 1 << 0);
+            try testArgs(u8, u3, 1 << 2);
+            try testArgs(i16, u3, 0);
+            try testArgs(i16, u3, 1 << 0);
+            try testArgs(i16, u3, 1 << 2);
+            try testArgs(u16, u3, 0);
+            try testArgs(u16, u3, 1 << 0);
+            try testArgs(u16, u3, 1 << 2);
+            try testArgs(i32, u3, 0);
+            try testArgs(i32, u3, 1 << 0);
+            try testArgs(i32, u3, 1 << 2);
+            try testArgs(u32, u3, 0);
+            try testArgs(u32, u3, 1 << 0);
+            try testArgs(u32, u3, 1 << 2);
+            try testArgs(i64, u3, 0);
+            try testArgs(i64, u3, 1 << 0);
+            try testArgs(i64, u3, 1 << 2);
+            try testArgs(u64, u3, 0);
+            try testArgs(u64, u3, 1 << 0);
+            try testArgs(u64, u3, 1 << 2);
+            try testArgs(i128, u3, 0);
+            try testArgs(i128, u3, 1 << 0);
+            try testArgs(i128, u3, 1 << 2);
+            try testArgs(u128, u3, 0);
+            try testArgs(u128, u3, 1 << 0);
+            try testArgs(u128, u3, 1 << 2);
+            try testArgs(i256, u3, 0);
+            try testArgs(i256, u3, 1 << 0);
+            try testArgs(i256, u3, 1 << 2);
+            try testArgs(u256, u3, 0);
+            try testArgs(u256, u3, 1 << 0);
+            try testArgs(u256, u3, 1 << 2);
+            try testArgs(i512, u3, 0);
+            try testArgs(i512, u3, 1 << 0);
+            try testArgs(i512, u3, 1 << 2);
+            try testArgs(u512, u3, 0);
+            try testArgs(u512, u3, 1 << 0);
+            try testArgs(u512, u3, 1 << 2);
+            try testArgs(i1024, u3, 0);
+            try testArgs(i1024, u3, 1 << 0);
+            try testArgs(i1024, u3, 1 << 2);
+            try testArgs(u1024, u3, 0);
+            try testArgs(u1024, u3, 1 << 0);
+            try testArgs(u1024, u3, 1 << 2);
+
+            try testArgs(i8, i4, -1 << 3);
+            try testArgs(i8, i4, -1);
+            try testArgs(i8, i4, 0);
+            try testArgs(u8, i4, -1 << 3);
+            try testArgs(u8, i4, -1);
+            try testArgs(u8, i4, 0);
+            try testArgs(i16, i4, -1 << 3);
+            try testArgs(i16, i4, -1);
+            try testArgs(i16, i4, 0);
+            try testArgs(u16, i4, -1 << 3);
+            try testArgs(u16, i4, -1);
+            try testArgs(u16, i4, 0);
+            try testArgs(i32, i4, -1 << 3);
+            try testArgs(i32, i4, -1);
+            try testArgs(i32, i4, 0);
+            try testArgs(u32, i4, -1 << 3);
+            try testArgs(u32, i4, -1);
+            try testArgs(u32, i4, 0);
+            try testArgs(i64, i4, -1 << 3);
+            try testArgs(i64, i4, -1);
+            try testArgs(i64, i4, 0);
+            try testArgs(u64, i4, -1 << 3);
+            try testArgs(u64, i4, -1);
+            try testArgs(u64, i4, 0);
+            try testArgs(i128, i4, -1 << 3);
+            try testArgs(i128, i4, -1);
+            try testArgs(i128, i4, 0);
+            try testArgs(u128, i4, -1 << 3);
+            try testArgs(u128, i4, -1);
+            try testArgs(u128, i4, 0);
+            try testArgs(i256, i4, -1 << 3);
+            try testArgs(i256, i4, -1);
+            try testArgs(i256, i4, 0);
+            try testArgs(u256, i4, -1 << 3);
+            try testArgs(u256, i4, -1);
+            try testArgs(u256, i4, 0);
+            try testArgs(i512, i4, -1 << 3);
+            try testArgs(i512, i4, -1);
+            try testArgs(i512, i4, 0);
+            try testArgs(u512, i4, -1 << 3);
+            try testArgs(u512, i4, -1);
+            try testArgs(u512, i4, 0);
+            try testArgs(i1024, i4, -1 << 3);
+            try testArgs(i1024, i4, -1);
+            try testArgs(i1024, i4, 0);
+            try testArgs(u1024, i4, -1 << 3);
+            try testArgs(u1024, i4, -1);
+            try testArgs(u1024, i4, 0);
+            try testArgs(i8, u4, 0);
+            try testArgs(i8, u4, 1 << 0);
+            try testArgs(i8, u4, 1 << 3);
+            try testArgs(u8, u4, 0);
+            try testArgs(u8, u4, 1 << 0);
+            try testArgs(u8, u4, 1 << 3);
+            try testArgs(i16, u4, 0);
+            try testArgs(i16, u4, 1 << 0);
+            try testArgs(i16, u4, 1 << 3);
+            try testArgs(u16, u4, 0);
+            try testArgs(u16, u4, 1 << 0);
+            try testArgs(u16, u4, 1 << 3);
+            try testArgs(i32, u4, 0);
+            try testArgs(i32, u4, 1 << 0);
+            try testArgs(i32, u4, 1 << 3);
+            try testArgs(u32, u4, 0);
+            try testArgs(u32, u4, 1 << 0);
+            try testArgs(u32, u4, 1 << 3);
+            try testArgs(i64, u4, 0);
+            try testArgs(i64, u4, 1 << 0);
+            try testArgs(i64, u4, 1 << 3);
+            try testArgs(u64, u4, 0);
+            try testArgs(u64, u4, 1 << 0);
+            try testArgs(u64, u4, 1 << 3);
+            try testArgs(i128, u4, 0);
+            try testArgs(i128, u4, 1 << 0);
+            try testArgs(i128, u4, 1 << 3);
+            try testArgs(u128, u4, 0);
+            try testArgs(u128, u4, 1 << 0);
+            try testArgs(u128, u4, 1 << 3);
+            try testArgs(i256, u4, 0);
+            try testArgs(i256, u4, 1 << 0);
+            try testArgs(i256, u4, 1 << 3);
+            try testArgs(u256, u4, 0);
+            try testArgs(u256, u4, 1 << 0);
+            try testArgs(u256, u4, 1 << 3);
+            try testArgs(i512, u4, 0);
+            try testArgs(i512, u4, 1 << 0);
+            try testArgs(i512, u4, 1 << 3);
+            try testArgs(u512, u4, 0);
+            try testArgs(u512, u4, 1 << 0);
+            try testArgs(u512, u4, 1 << 3);
+            try testArgs(i1024, u4, 0);
+            try testArgs(i1024, u4, 1 << 0);
+            try testArgs(i1024, u4, 1 << 3);
+            try testArgs(u1024, u4, 0);
+            try testArgs(u1024, u4, 1 << 0);
+            try testArgs(u1024, u4, 1 << 3);
+
+            try testArgs(i8, i5, -1 << 4);
+            try testArgs(i8, i5, -1);
+            try testArgs(i8, i5, 0);
+            try testArgs(u8, i5, -1 << 4);
+            try testArgs(u8, i5, -1);
+            try testArgs(u8, i5, 0);
+            try testArgs(i16, i5, -1 << 4);
+            try testArgs(i16, i5, -1);
+            try testArgs(i16, i5, 0);
+            try testArgs(u16, i5, -1 << 4);
+            try testArgs(u16, i5, -1);
+            try testArgs(u16, i5, 0);
+            try testArgs(i32, i5, -1 << 4);
+            try testArgs(i32, i5, -1);
+            try testArgs(i32, i5, 0);
+            try testArgs(u32, i5, -1 << 4);
+            try testArgs(u32, i5, -1);
+            try testArgs(u32, i5, 0);
+            try testArgs(i64, i5, -1 << 4);
+            try testArgs(i64, i5, -1);
+            try testArgs(i64, i5, 0);
+            try testArgs(u64, i5, -1 << 4);
+            try testArgs(u64, i5, -1);
+            try testArgs(u64, i5, 0);
+            try testArgs(i128, i5, -1 << 4);
+            try testArgs(i128, i5, -1);
+            try testArgs(i128, i5, 0);
+            try testArgs(u128, i5, -1 << 4);
+            try testArgs(u128, i5, -1);
+            try testArgs(u128, i5, 0);
+            try testArgs(i256, i5, -1 << 4);
+            try testArgs(i256, i5, -1);
+            try testArgs(i256, i5, 0);
+            try testArgs(u256, i5, -1 << 4);
+            try testArgs(u256, i5, -1);
+            try testArgs(u256, i5, 0);
+            try testArgs(i512, i5, -1 << 4);
+            try testArgs(i512, i5, -1);
+            try testArgs(i512, i5, 0);
+            try testArgs(u512, i5, -1 << 4);
+            try testArgs(u512, i5, -1);
+            try testArgs(u512, i5, 0);
+            try testArgs(i1024, i5, -1 << 4);
+            try testArgs(i1024, i5, -1);
+            try testArgs(i1024, i5, 0);
+            try testArgs(u1024, i5, -1 << 4);
+            try testArgs(u1024, i5, -1);
+            try testArgs(u1024, i5, 0);
+            try testArgs(i8, u5, 0);
+            try testArgs(i8, u5, 1 << 0);
+            try testArgs(i8, u5, 1 << 4);
+            try testArgs(u8, u5, 0);
+            try testArgs(u8, u5, 1 << 0);
+            try testArgs(u8, u5, 1 << 4);
+            try testArgs(i16, u5, 0);
+            try testArgs(i16, u5, 1 << 0);
+            try testArgs(i16, u5, 1 << 4);
+            try testArgs(u16, u5, 0);
+            try testArgs(u16, u5, 1 << 0);
+            try testArgs(u16, u5, 1 << 4);
+            try testArgs(i32, u5, 0);
+            try testArgs(i32, u5, 1 << 0);
+            try testArgs(i32, u5, 1 << 4);
+            try testArgs(u32, u5, 0);
+            try testArgs(u32, u5, 1 << 0);
+            try testArgs(u32, u5, 1 << 4);
+            try testArgs(i64, u5, 0);
+            try testArgs(i64, u5, 1 << 0);
+            try testArgs(i64, u5, 1 << 4);
+            try testArgs(u64, u5, 0);
+            try testArgs(u64, u5, 1 << 0);
+            try testArgs(u64, u5, 1 << 4);
+            try testArgs(i128, u5, 0);
+            try testArgs(i128, u5, 1 << 0);
+            try testArgs(i128, u5, 1 << 4);
+            try testArgs(u128, u5, 0);
+            try testArgs(u128, u5, 1 << 0);
+            try testArgs(u128, u5, 1 << 4);
+            try testArgs(i256, u5, 0);
+            try testArgs(i256, u5, 1 << 0);
+            try testArgs(i256, u5, 1 << 4);
+            try testArgs(u256, u5, 0);
+            try testArgs(u256, u5, 1 << 0);
+            try testArgs(u256, u5, 1 << 4);
+            try testArgs(i512, u5, 0);
+            try testArgs(i512, u5, 1 << 0);
+            try testArgs(i512, u5, 1 << 4);
+            try testArgs(u512, u5, 0);
+            try testArgs(u512, u5, 1 << 0);
+            try testArgs(u512, u5, 1 << 4);
+            try testArgs(i1024, u5, 0);
+            try testArgs(i1024, u5, 1 << 0);
+            try testArgs(i1024, u5, 1 << 4);
+            try testArgs(u1024, u5, 0);
+            try testArgs(u1024, u5, 1 << 0);
+            try testArgs(u1024, u5, 1 << 4);
+
+            try testArgs(i8, i7, -1 << 6);
+            try testArgs(i8, i7, -1);
+            try testArgs(i8, i7, 0);
+            try testArgs(u8, i7, -1 << 6);
+            try testArgs(u8, i7, -1);
+            try testArgs(u8, i7, 0);
+            try testArgs(i16, i7, -1 << 6);
+            try testArgs(i16, i7, -1);
+            try testArgs(i16, i7, 0);
+            try testArgs(u16, i7, -1 << 6);
+            try testArgs(u16, i7, -1);
+            try testArgs(u16, i7, 0);
+            try testArgs(i32, i7, -1 << 6);
+            try testArgs(i32, i7, -1);
+            try testArgs(i32, i7, 0);
+            try testArgs(u32, i7, -1 << 6);
+            try testArgs(u32, i7, -1);
+            try testArgs(u32, i7, 0);
+            try testArgs(i64, i7, -1 << 6);
+            try testArgs(i64, i7, -1);
+            try testArgs(i64, i7, 0);
+            try testArgs(u64, i7, -1 << 6);
+            try testArgs(u64, i7, -1);
+            try testArgs(u64, i7, 0);
+            try testArgs(i128, i7, -1 << 6);
+            try testArgs(i128, i7, -1);
+            try testArgs(i128, i7, 0);
+            try testArgs(u128, i7, -1 << 6);
+            try testArgs(u128, i7, -1);
+            try testArgs(u128, i7, 0);
+            try testArgs(i256, i7, -1 << 6);
+            try testArgs(i256, i7, -1);
+            try testArgs(i256, i7, 0);
+            try testArgs(u256, i7, -1 << 6);
+            try testArgs(u256, i7, -1);
+            try testArgs(u256, i7, 0);
+            try testArgs(i512, i7, -1 << 6);
+            try testArgs(i512, i7, -1);
+            try testArgs(i512, i7, 0);
+            try testArgs(u512, i7, -1 << 6);
+            try testArgs(u512, i7, -1);
+            try testArgs(u512, i7, 0);
+            try testArgs(i1024, i7, -1 << 6);
+            try testArgs(i1024, i7, -1);
+            try testArgs(i1024, i7, 0);
+            try testArgs(u1024, i7, -1 << 6);
+            try testArgs(u1024, i7, -1);
+            try testArgs(u1024, i7, 0);
+            try testArgs(i8, u7, 0);
+            try testArgs(i8, u7, 1 << 0);
+            try testArgs(i8, u7, 1 << 6);
+            try testArgs(u8, u7, 0);
+            try testArgs(u8, u7, 1 << 0);
+            try testArgs(u8, u7, 1 << 6);
+            try testArgs(i16, u7, 0);
+            try testArgs(i16, u7, 1 << 0);
+            try testArgs(i16, u7, 1 << 6);
+            try testArgs(u16, u7, 0);
+            try testArgs(u16, u7, 1 << 0);
+            try testArgs(u16, u7, 1 << 6);
+            try testArgs(i32, u7, 0);
+            try testArgs(i32, u7, 1 << 0);
+            try testArgs(i32, u7, 1 << 6);
+            try testArgs(u32, u7, 0);
+            try testArgs(u32, u7, 1 << 0);
+            try testArgs(u32, u7, 1 << 6);
+            try testArgs(i64, u7, 0);
+            try testArgs(i64, u7, 1 << 0);
+            try testArgs(i64, u7, 1 << 6);
+            try testArgs(u64, u7, 0);
+            try testArgs(u64, u7, 1 << 0);
+            try testArgs(u64, u7, 1 << 6);
+            try testArgs(i128, u7, 0);
+            try testArgs(i128, u7, 1 << 0);
+            try testArgs(i128, u7, 1 << 6);
+            try testArgs(u128, u7, 0);
+            try testArgs(u128, u7, 1 << 0);
+            try testArgs(u128, u7, 1 << 6);
+            try testArgs(i256, u7, 0);
+            try testArgs(i256, u7, 1 << 0);
+            try testArgs(i256, u7, 1 << 6);
+            try testArgs(u256, u7, 0);
+            try testArgs(u256, u7, 1 << 0);
+            try testArgs(u256, u7, 1 << 6);
+            try testArgs(i512, u7, 0);
+            try testArgs(i512, u7, 1 << 0);
+            try testArgs(i512, u7, 1 << 6);
+            try testArgs(u512, u7, 0);
+            try testArgs(u512, u7, 1 << 0);
+            try testArgs(u512, u7, 1 << 6);
+            try testArgs(i1024, u7, 0);
+            try testArgs(i1024, u7, 1 << 0);
+            try testArgs(i1024, u7, 1 << 6);
+            try testArgs(u1024, u7, 0);
+            try testArgs(u1024, u7, 1 << 0);
+            try testArgs(u1024, u7, 1 << 6);
+
+            try testArgs(i8, i8, -1 << 7);
+            try testArgs(i8, i8, -1);
+            try testArgs(i8, i8, 0);
+            try testArgs(u8, i8, -1 << 7);
+            try testArgs(u8, i8, -1);
+            try testArgs(u8, i8, 0);
+            try testArgs(i16, i8, -1 << 7);
+            try testArgs(i16, i8, -1);
+            try testArgs(i16, i8, 0);
+            try testArgs(u16, i8, -1 << 7);
+            try testArgs(u16, i8, -1);
+            try testArgs(u16, i8, 0);
+            try testArgs(i32, i8, -1 << 7);
+            try testArgs(i32, i8, -1);
+            try testArgs(i32, i8, 0);
+            try testArgs(u32, i8, -1 << 7);
+            try testArgs(u32, i8, -1);
+            try testArgs(u32, i8, 0);
+            try testArgs(i64, i8, -1 << 7);
+            try testArgs(i64, i8, -1);
+            try testArgs(i64, i8, 0);
+            try testArgs(u64, i8, -1 << 7);
+            try testArgs(u64, i8, -1);
+            try testArgs(u64, i8, 0);
+            try testArgs(i128, i8, -1 << 7);
+            try testArgs(i128, i8, -1);
+            try testArgs(i128, i8, 0);
+            try testArgs(u128, i8, -1 << 7);
+            try testArgs(u128, i8, -1);
+            try testArgs(u128, i8, 0);
+            try testArgs(i256, i8, -1 << 7);
+            try testArgs(i256, i8, -1);
+            try testArgs(i256, i8, 0);
+            try testArgs(u256, i8, -1 << 7);
+            try testArgs(u256, i8, -1);
+            try testArgs(u256, i8, 0);
+            try testArgs(i512, i8, -1 << 7);
+            try testArgs(i512, i8, -1);
+            try testArgs(i512, i8, 0);
+            try testArgs(u512, i8, -1 << 7);
+            try testArgs(u512, i8, -1);
+            try testArgs(u512, i8, 0);
+            try testArgs(i1024, i8, -1 << 7);
+            try testArgs(i1024, i8, -1);
+            try testArgs(i1024, i8, 0);
+            try testArgs(u1024, i8, -1 << 7);
+            try testArgs(u1024, i8, -1);
+            try testArgs(u1024, i8, 0);
+            try testArgs(i8, u8, 0);
+            try testArgs(i8, u8, 1 << 0);
+            try testArgs(i8, u8, 1 << 7);
+            try testArgs(u8, u8, 0);
+            try testArgs(u8, u8, 1 << 0);
+            try testArgs(u8, u8, 1 << 7);
+            try testArgs(i16, u8, 0);
+            try testArgs(i16, u8, 1 << 0);
+            try testArgs(i16, u8, 1 << 7);
+            try testArgs(u16, u8, 0);
+            try testArgs(u16, u8, 1 << 0);
+            try testArgs(u16, u8, 1 << 7);
+            try testArgs(i32, u8, 0);
+            try testArgs(i32, u8, 1 << 0);
+            try testArgs(i32, u8, 1 << 7);
+            try testArgs(u32, u8, 0);
+            try testArgs(u32, u8, 1 << 0);
+            try testArgs(u32, u8, 1 << 7);
+            try testArgs(i64, u8, 0);
+            try testArgs(i64, u8, 1 << 0);
+            try testArgs(i64, u8, 1 << 7);
+            try testArgs(u64, u8, 0);
+            try testArgs(u64, u8, 1 << 0);
+            try testArgs(u64, u8, 1 << 7);
+            try testArgs(i128, u8, 0);
+            try testArgs(i128, u8, 1 << 0);
+            try testArgs(i128, u8, 1 << 7);
+            try testArgs(u128, u8, 0);
+            try testArgs(u128, u8, 1 << 0);
+            try testArgs(u128, u8, 1 << 7);
+            try testArgs(i256, u8, 0);
+            try testArgs(i256, u8, 1 << 0);
+            try testArgs(i256, u8, 1 << 7);
+            try testArgs(u256, u8, 0);
+            try testArgs(u256, u8, 1 << 0);
+            try testArgs(u256, u8, 1 << 7);
+            try testArgs(i512, u8, 0);
+            try testArgs(i512, u8, 1 << 0);
+            try testArgs(i512, u8, 1 << 7);
+            try testArgs(u512, u8, 0);
+            try testArgs(u512, u8, 1 << 0);
+            try testArgs(u512, u8, 1 << 7);
+            try testArgs(i1024, u8, 0);
+            try testArgs(i1024, u8, 1 << 0);
+            try testArgs(i1024, u8, 1 << 7);
+            try testArgs(u1024, u8, 0);
+            try testArgs(u1024, u8, 1 << 0);
+            try testArgs(u1024, u8, 1 << 7);
+
+            try testArgs(i8, i9, -1 << 8);
+            try testArgs(i8, i9, -1);
+            try testArgs(i8, i9, 0);
+            try testArgs(u8, i9, -1 << 8);
+            try testArgs(u8, i9, -1);
+            try testArgs(u8, i9, 0);
+            try testArgs(i16, i9, -1 << 8);
+            try testArgs(i16, i9, -1);
+            try testArgs(i16, i9, 0);
+            try testArgs(u16, i9, -1 << 8);
+            try testArgs(u16, i9, -1);
+            try testArgs(u16, i9, 0);
+            try testArgs(i32, i9, -1 << 8);
+            try testArgs(i32, i9, -1);
+            try testArgs(i32, i9, 0);
+            try testArgs(u32, i9, -1 << 8);
+            try testArgs(u32, i9, -1);
+            try testArgs(u32, i9, 0);
+            try testArgs(i64, i9, -1 << 8);
+            try testArgs(i64, i9, -1);
+            try testArgs(i64, i9, 0);
+            try testArgs(u64, i9, -1 << 8);
+            try testArgs(u64, i9, -1);
+            try testArgs(u64, i9, 0);
+            try testArgs(i128, i9, -1 << 8);
+            try testArgs(i128, i9, -1);
+            try testArgs(i128, i9, 0);
+            try testArgs(u128, i9, -1 << 8);
+            try testArgs(u128, i9, -1);
+            try testArgs(u128, i9, 0);
+            try testArgs(i256, i9, -1 << 8);
+            try testArgs(i256, i9, -1);
+            try testArgs(i256, i9, 0);
+            try testArgs(u256, i9, -1 << 8);
+            try testArgs(u256, i9, -1);
+            try testArgs(u256, i9, 0);
+            try testArgs(i512, i9, -1 << 8);
+            try testArgs(i512, i9, -1);
+            try testArgs(i512, i9, 0);
+            try testArgs(u512, i9, -1 << 8);
+            try testArgs(u512, i9, -1);
+            try testArgs(u512, i9, 0);
+            try testArgs(i1024, i9, -1 << 8);
+            try testArgs(i1024, i9, -1);
+            try testArgs(i1024, i9, 0);
+            try testArgs(u1024, i9, -1 << 8);
+            try testArgs(u1024, i9, -1);
+            try testArgs(u1024, i9, 0);
+            try testArgs(i8, u9, 0);
+            try testArgs(i8, u9, 1 << 0);
+            try testArgs(i8, u9, 1 << 8);
+            try testArgs(u8, u9, 0);
+            try testArgs(u8, u9, 1 << 0);
+            try testArgs(u8, u9, 1 << 8);
+            try testArgs(i16, u9, 0);
+            try testArgs(i16, u9, 1 << 0);
+            try testArgs(i16, u9, 1 << 8);
+            try testArgs(u16, u9, 0);
+            try testArgs(u16, u9, 1 << 0);
+            try testArgs(u16, u9, 1 << 8);
+            try testArgs(i32, u9, 0);
+            try testArgs(i32, u9, 1 << 0);
+            try testArgs(i32, u9, 1 << 8);
+            try testArgs(u32, u9, 0);
+            try testArgs(u32, u9, 1 << 0);
+            try testArgs(u32, u9, 1 << 8);
+            try testArgs(i64, u9, 0);
+            try testArgs(i64, u9, 1 << 0);
+            try testArgs(i64, u9, 1 << 8);
+            try testArgs(u64, u9, 0);
+            try testArgs(u64, u9, 1 << 0);
+            try testArgs(u64, u9, 1 << 8);
+            try testArgs(i128, u9, 0);
+            try testArgs(i128, u9, 1 << 0);
+            try testArgs(i128, u9, 1 << 8);
+            try testArgs(u128, u9, 0);
+            try testArgs(u128, u9, 1 << 0);
+            try testArgs(u128, u9, 1 << 8);
+            try testArgs(i256, u9, 0);
+            try testArgs(i256, u9, 1 << 0);
+            try testArgs(i256, u9, 1 << 8);
+            try testArgs(u256, u9, 0);
+            try testArgs(u256, u9, 1 << 0);
+            try testArgs(u256, u9, 1 << 8);
+            try testArgs(i512, u9, 0);
+            try testArgs(i512, u9, 1 << 0);
+            try testArgs(i512, u9, 1 << 8);
+            try testArgs(u512, u9, 0);
+            try testArgs(u512, u9, 1 << 0);
+            try testArgs(u512, u9, 1 << 8);
+            try testArgs(i1024, u9, 0);
+            try testArgs(i1024, u9, 1 << 0);
+            try testArgs(i1024, u9, 1 << 8);
+            try testArgs(u1024, u9, 0);
+            try testArgs(u1024, u9, 1 << 0);
+            try testArgs(u1024, u9, 1 << 8);
+
+            try testArgs(i8, i15, -1 << 14);
+            try testArgs(i8, i15, -1);
+            try testArgs(i8, i15, 0);
+            try testArgs(u8, i15, -1 << 14);
+            try testArgs(u8, i15, -1);
+            try testArgs(u8, i15, 0);
+            try testArgs(i16, i15, -1 << 14);
+            try testArgs(i16, i15, -1);
+            try testArgs(i16, i15, 0);
+            try testArgs(u16, i15, -1 << 14);
+            try testArgs(u16, i15, -1);
+            try testArgs(u16, i15, 0);
+            try testArgs(i32, i15, -1 << 14);
+            try testArgs(i32, i15, -1);
+            try testArgs(i32, i15, 0);
+            try testArgs(u32, i15, -1 << 14);
+            try testArgs(u32, i15, -1);
+            try testArgs(u32, i15, 0);
+            try testArgs(i64, i15, -1 << 14);
+            try testArgs(i64, i15, -1);
+            try testArgs(i64, i15, 0);
+            try testArgs(u64, i15, -1 << 14);
+            try testArgs(u64, i15, -1);
+            try testArgs(u64, i15, 0);
+            try testArgs(i128, i15, -1 << 14);
+            try testArgs(i128, i15, -1);
+            try testArgs(i128, i15, 0);
+            try testArgs(u128, i15, -1 << 14);
+            try testArgs(u128, i15, -1);
+            try testArgs(u128, i15, 0);
+            try testArgs(i256, i15, -1 << 14);
+            try testArgs(i256, i15, -1);
+            try testArgs(i256, i15, 0);
+            try testArgs(u256, i15, -1 << 14);
+            try testArgs(u256, i15, -1);
+            try testArgs(u256, i15, 0);
+            try testArgs(i512, i15, -1 << 14);
+            try testArgs(i512, i15, -1);
+            try testArgs(i512, i15, 0);
+            try testArgs(u512, i15, -1 << 14);
+            try testArgs(u512, i15, -1);
+            try testArgs(u512, i15, 0);
+            try testArgs(i1024, i15, -1 << 14);
+            try testArgs(i1024, i15, -1);
+            try testArgs(i1024, i15, 0);
+            try testArgs(u1024, i15, -1 << 14);
+            try testArgs(u1024, i15, -1);
+            try testArgs(u1024, i15, 0);
+            try testArgs(i8, u15, 0);
+            try testArgs(i8, u15, 1 << 0);
+            try testArgs(i8, u15, 1 << 14);
+            try testArgs(u8, u15, 0);
+            try testArgs(u8, u15, 1 << 0);
+            try testArgs(u8, u15, 1 << 14);
+            try testArgs(i16, u15, 0);
+            try testArgs(i16, u15, 1 << 0);
+            try testArgs(i16, u15, 1 << 14);
+            try testArgs(u16, u15, 0);
+            try testArgs(u16, u15, 1 << 0);
+            try testArgs(u16, u15, 1 << 14);
+            try testArgs(i32, u15, 0);
+            try testArgs(i32, u15, 1 << 0);
+            try testArgs(i32, u15, 1 << 14);
+            try testArgs(u32, u15, 0);
+            try testArgs(u32, u15, 1 << 0);
+            try testArgs(u32, u15, 1 << 14);
+            try testArgs(i64, u15, 0);
+            try testArgs(i64, u15, 1 << 0);
+            try testArgs(i64, u15, 1 << 14);
+            try testArgs(u64, u15, 0);
+            try testArgs(u64, u15, 1 << 0);
+            try testArgs(u64, u15, 1 << 14);
+            try testArgs(i128, u15, 0);
+            try testArgs(i128, u15, 1 << 0);
+            try testArgs(i128, u15, 1 << 14);
+            try testArgs(u128, u15, 0);
+            try testArgs(u128, u15, 1 << 0);
+            try testArgs(u128, u15, 1 << 14);
+            try testArgs(i256, u15, 0);
+            try testArgs(i256, u15, 1 << 0);
+            try testArgs(i256, u15, 1 << 14);
+            try testArgs(u256, u15, 0);
+            try testArgs(u256, u15, 1 << 0);
+            try testArgs(u256, u15, 1 << 14);
+            try testArgs(i512, u15, 0);
+            try testArgs(i512, u15, 1 << 0);
+            try testArgs(i512, u15, 1 << 14);
+            try testArgs(u512, u15, 0);
+            try testArgs(u512, u15, 1 << 0);
+            try testArgs(u512, u15, 1 << 14);
+            try testArgs(i1024, u15, 0);
+            try testArgs(i1024, u15, 1 << 0);
+            try testArgs(i1024, u15, 1 << 14);
+            try testArgs(u1024, u15, 0);
+            try testArgs(u1024, u15, 1 << 0);
+            try testArgs(u1024, u15, 1 << 14);
+
+            try testArgs(i8, i16, -1 << 15);
+            try testArgs(i8, i16, -1);
+            try testArgs(i8, i16, 0);
+            try testArgs(u8, i16, -1 << 15);
+            try testArgs(u8, i16, -1);
+            try testArgs(u8, i16, 0);
+            try testArgs(i16, i16, -1 << 15);
+            try testArgs(i16, i16, -1);
+            try testArgs(i16, i16, 0);
+            try testArgs(u16, i16, -1 << 15);
+            try testArgs(u16, i16, -1);
+            try testArgs(u16, i16, 0);
+            try testArgs(i32, i16, -1 << 15);
+            try testArgs(i32, i16, -1);
+            try testArgs(i32, i16, 0);
+            try testArgs(u32, i16, -1 << 15);
+            try testArgs(u32, i16, -1);
+            try testArgs(u32, i16, 0);
+            try testArgs(i64, i16, -1 << 15);
+            try testArgs(i64, i16, -1);
+            try testArgs(i64, i16, 0);
+            try testArgs(u64, i16, -1 << 15);
+            try testArgs(u64, i16, -1);
+            try testArgs(u64, i16, 0);
+            try testArgs(i128, i16, -1 << 15);
+            try testArgs(i128, i16, -1);
+            try testArgs(i128, i16, 0);
+            try testArgs(u128, i16, -1 << 15);
+            try testArgs(u128, i16, -1);
+            try testArgs(u128, i16, 0);
+            try testArgs(i256, i16, -1 << 15);
+            try testArgs(i256, i16, -1);
+            try testArgs(i256, i16, 0);
+            try testArgs(u256, i16, -1 << 15);
+            try testArgs(u256, i16, -1);
+            try testArgs(u256, i16, 0);
+            try testArgs(i512, i16, -1 << 15);
+            try testArgs(i512, i16, -1);
+            try testArgs(i512, i16, 0);
+            try testArgs(u512, i16, -1 << 15);
+            try testArgs(u512, i16, -1);
+            try testArgs(u512, i16, 0);
+            try testArgs(i1024, i16, -1 << 15);
+            try testArgs(i1024, i16, -1);
+            try testArgs(i1024, i16, 0);
+            try testArgs(u1024, i16, -1 << 15);
+            try testArgs(u1024, i16, -1);
+            try testArgs(u1024, i16, 0);
+            try testArgs(i8, u16, 0);
+            try testArgs(i8, u16, 1 << 0);
+            try testArgs(i8, u16, 1 << 15);
+            try testArgs(u8, u16, 0);
+            try testArgs(u8, u16, 1 << 0);
+            try testArgs(u8, u16, 1 << 15);
+            try testArgs(i16, u16, 0);
+            try testArgs(i16, u16, 1 << 0);
+            try testArgs(i16, u16, 1 << 15);
+            try testArgs(u16, u16, 0);
+            try testArgs(u16, u16, 1 << 0);
+            try testArgs(u16, u16, 1 << 15);
+            try testArgs(i32, u16, 0);
+            try testArgs(i32, u16, 1 << 0);
+            try testArgs(i32, u16, 1 << 15);
+            try testArgs(u32, u16, 0);
+            try testArgs(u32, u16, 1 << 0);
+            try testArgs(u32, u16, 1 << 15);
+            try testArgs(i64, u16, 0);
+            try testArgs(i64, u16, 1 << 0);
+            try testArgs(i64, u16, 1 << 15);
+            try testArgs(u64, u16, 0);
+            try testArgs(u64, u16, 1 << 0);
+            try testArgs(u64, u16, 1 << 15);
+            try testArgs(i128, u16, 0);
+            try testArgs(i128, u16, 1 << 0);
+            try testArgs(i128, u16, 1 << 15);
+            try testArgs(u128, u16, 0);
+            try testArgs(u128, u16, 1 << 0);
+            try testArgs(u128, u16, 1 << 15);
+            try testArgs(i256, u16, 0);
+            try testArgs(i256, u16, 1 << 0);
+            try testArgs(i256, u16, 1 << 15);
+            try testArgs(u256, u16, 0);
+            try testArgs(u256, u16, 1 << 0);
+            try testArgs(u256, u16, 1 << 15);
+            try testArgs(i512, u16, 0);
+            try testArgs(i512, u16, 1 << 0);
+            try testArgs(i512, u16, 1 << 15);
+            try testArgs(u512, u16, 0);
+            try testArgs(u512, u16, 1 << 0);
+            try testArgs(u512, u16, 1 << 15);
+            try testArgs(i1024, u16, 0);
+            try testArgs(i1024, u16, 1 << 0);
+            try testArgs(i1024, u16, 1 << 15);
+            try testArgs(u1024, u16, 0);
+            try testArgs(u1024, u16, 1 << 0);
+            try testArgs(u1024, u16, 1 << 15);
+
+            try testArgs(i8, i17, -1 << 16);
+            try testArgs(i8, i17, -1);
+            try testArgs(i8, i17, 0);
+            try testArgs(u8, i17, -1 << 16);
+            try testArgs(u8, i17, -1);
+            try testArgs(u8, i17, 0);
+            try testArgs(i16, i17, -1 << 16);
+            try testArgs(i16, i17, -1);
+            try testArgs(i16, i17, 0);
+            try testArgs(u16, i17, -1 << 16);
+            try testArgs(u16, i17, -1);
+            try testArgs(u16, i17, 0);
+            try testArgs(i32, i17, -1 << 16);
+            try testArgs(i32, i17, -1);
+            try testArgs(i32, i17, 0);
+            try testArgs(u32, i17, -1 << 16);
+            try testArgs(u32, i17, -1);
+            try testArgs(u32, i17, 0);
+            try testArgs(i64, i17, -1 << 16);
+            try testArgs(i64, i17, -1);
+            try testArgs(i64, i17, 0);
+            try testArgs(u64, i17, -1 << 16);
+            try testArgs(u64, i17, -1);
+            try testArgs(u64, i17, 0);
+            try testArgs(i128, i17, -1 << 16);
+            try testArgs(i128, i17, -1);
+            try testArgs(i128, i17, 0);
+            try testArgs(u128, i17, -1 << 16);
+            try testArgs(u128, i17, -1);
+            try testArgs(u128, i17, 0);
+            try testArgs(i256, i17, -1 << 16);
+            try testArgs(i256, i17, -1);
+            try testArgs(i256, i17, 0);
+            try testArgs(u256, i17, -1 << 16);
+            try testArgs(u256, i17, -1);
+            try testArgs(u256, i17, 0);
+            try testArgs(i512, i17, -1 << 16);
+            try testArgs(i512, i17, -1);
+            try testArgs(i512, i17, 0);
+            try testArgs(u512, i17, -1 << 16);
+            try testArgs(u512, i17, -1);
+            try testArgs(u512, i17, 0);
+            try testArgs(i1024, i17, -1 << 16);
+            try testArgs(i1024, i17, -1);
+            try testArgs(i1024, i17, 0);
+            try testArgs(u1024, i17, -1 << 16);
+            try testArgs(u1024, i17, -1);
+            try testArgs(u1024, i17, 0);
+            try testArgs(i8, u17, 0);
+            try testArgs(i8, u17, 1 << 0);
+            try testArgs(i8, u17, 1 << 16);
+            try testArgs(u8, u17, 0);
+            try testArgs(u8, u17, 1 << 0);
+            try testArgs(u8, u17, 1 << 16);
+            try testArgs(i16, u17, 0);
+            try testArgs(i16, u17, 1 << 0);
+            try testArgs(i16, u17, 1 << 16);
+            try testArgs(u16, u17, 0);
+            try testArgs(u16, u17, 1 << 0);
+            try testArgs(u16, u17, 1 << 16);
+            try testArgs(i32, u17, 0);
+            try testArgs(i32, u17, 1 << 0);
+            try testArgs(i32, u17, 1 << 16);
+            try testArgs(u32, u17, 0);
+            try testArgs(u32, u17, 1 << 0);
+            try testArgs(u32, u17, 1 << 16);
+            try testArgs(i64, u17, 0);
+            try testArgs(i64, u17, 1 << 0);
+            try testArgs(i64, u17, 1 << 16);
+            try testArgs(u64, u17, 0);
+            try testArgs(u64, u17, 1 << 0);
+            try testArgs(u64, u17, 1 << 16);
+            try testArgs(i128, u17, 0);
+            try testArgs(i128, u17, 1 << 0);
+            try testArgs(i128, u17, 1 << 16);
+            try testArgs(u128, u17, 0);
+            try testArgs(u128, u17, 1 << 0);
+            try testArgs(u128, u17, 1 << 16);
+            try testArgs(i256, u17, 0);
+            try testArgs(i256, u17, 1 << 0);
+            try testArgs(i256, u17, 1 << 16);
+            try testArgs(u256, u17, 0);
+            try testArgs(u256, u17, 1 << 0);
+            try testArgs(u256, u17, 1 << 16);
+            try testArgs(i512, u17, 0);
+            try testArgs(i512, u17, 1 << 0);
+            try testArgs(i512, u17, 1 << 16);
+            try testArgs(u512, u17, 0);
+            try testArgs(u512, u17, 1 << 0);
+            try testArgs(u512, u17, 1 << 16);
+            try testArgs(i1024, u17, 0);
+            try testArgs(i1024, u17, 1 << 0);
+            try testArgs(i1024, u17, 1 << 16);
+            try testArgs(u1024, u17, 0);
+            try testArgs(u1024, u17, 1 << 0);
+            try testArgs(u1024, u17, 1 << 16);
+
+            try testArgs(i8, i31, -1 << 30);
+            try testArgs(i8, i31, -1);
+            try testArgs(i8, i31, 0);
+            try testArgs(u8, i31, -1 << 30);
+            try testArgs(u8, i31, -1);
+            try testArgs(u8, i31, 0);
+            try testArgs(i16, i31, -1 << 30);
+            try testArgs(i16, i31, -1);
+            try testArgs(i16, i31, 0);
+            try testArgs(u16, i31, -1 << 30);
+            try testArgs(u16, i31, -1);
+            try testArgs(u16, i31, 0);
+            try testArgs(i32, i31, -1 << 30);
+            try testArgs(i32, i31, -1);
+            try testArgs(i32, i31, 0);
+            try testArgs(u32, i31, -1 << 30);
+            try testArgs(u32, i31, -1);
+            try testArgs(u32, i31, 0);
+            try testArgs(i64, i31, -1 << 30);
+            try testArgs(i64, i31, -1);
+            try testArgs(i64, i31, 0);
+            try testArgs(u64, i31, -1 << 30);
+            try testArgs(u64, i31, -1);
+            try testArgs(u64, i31, 0);
+            try testArgs(i128, i31, -1 << 30);
+            try testArgs(i128, i31, -1);
+            try testArgs(i128, i31, 0);
+            try testArgs(u128, i31, -1 << 30);
+            try testArgs(u128, i31, -1);
+            try testArgs(u128, i31, 0);
+            try testArgs(i256, i31, -1 << 30);
+            try testArgs(i256, i31, -1);
+            try testArgs(i256, i31, 0);
+            try testArgs(u256, i31, -1 << 30);
+            try testArgs(u256, i31, -1);
+            try testArgs(u256, i31, 0);
+            try testArgs(i512, i31, -1 << 30);
+            try testArgs(i512, i31, -1);
+            try testArgs(i512, i31, 0);
+            try testArgs(u512, i31, -1 << 30);
+            try testArgs(u512, i31, -1);
+            try testArgs(u512, i31, 0);
+            try testArgs(i1024, i31, -1 << 30);
+            try testArgs(i1024, i31, -1);
+            try testArgs(i1024, i31, 0);
+            try testArgs(u1024, i31, -1 << 30);
+            try testArgs(u1024, i31, -1);
+            try testArgs(u1024, i31, 0);
+            try testArgs(i8, u31, 0);
+            try testArgs(i8, u31, 1 << 0);
+            try testArgs(i8, u31, 1 << 30);
+            try testArgs(u8, u31, 0);
+            try testArgs(u8, u31, 1 << 0);
+            try testArgs(u8, u31, 1 << 30);
+            try testArgs(i16, u31, 0);
+            try testArgs(i16, u31, 1 << 0);
+            try testArgs(i16, u31, 1 << 30);
+            try testArgs(u16, u31, 0);
+            try testArgs(u16, u31, 1 << 0);
+            try testArgs(u16, u31, 1 << 30);
+            try testArgs(i32, u31, 0);
+            try testArgs(i32, u31, 1 << 0);
+            try testArgs(i32, u31, 1 << 30);
+            try testArgs(u32, u31, 0);
+            try testArgs(u32, u31, 1 << 0);
+            try testArgs(u32, u31, 1 << 30);
+            try testArgs(i64, u31, 0);
+            try testArgs(i64, u31, 1 << 0);
+            try testArgs(i64, u31, 1 << 30);
+            try testArgs(u64, u31, 0);
+            try testArgs(u64, u31, 1 << 0);
+            try testArgs(u64, u31, 1 << 30);
+            try testArgs(i128, u31, 0);
+            try testArgs(i128, u31, 1 << 0);
+            try testArgs(i128, u31, 1 << 30);
+            try testArgs(u128, u31, 0);
+            try testArgs(u128, u31, 1 << 0);
+            try testArgs(u128, u31, 1 << 30);
+            try testArgs(i256, u31, 0);
+            try testArgs(i256, u31, 1 << 0);
+            try testArgs(i256, u31, 1 << 30);
+            try testArgs(u256, u31, 0);
+            try testArgs(u256, u31, 1 << 0);
+            try testArgs(u256, u31, 1 << 30);
+            try testArgs(i512, u31, 0);
+            try testArgs(i512, u31, 1 << 0);
+            try testArgs(i512, u31, 1 << 30);
+            try testArgs(u512, u31, 0);
+            try testArgs(u512, u31, 1 << 0);
+            try testArgs(u512, u31, 1 << 30);
+            try testArgs(i1024, u31, 0);
+            try testArgs(i1024, u31, 1 << 0);
+            try testArgs(i1024, u31, 1 << 30);
+            try testArgs(u1024, u31, 0);
+            try testArgs(u1024, u31, 1 << 0);
+            try testArgs(u1024, u31, 1 << 30);
+
+            try testArgs(i8, i32, -1 << 31);
+            try testArgs(i8, i32, -1);
+            try testArgs(i8, i32, 0);
+            try testArgs(u8, i32, -1 << 31);
+            try testArgs(u8, i32, -1);
+            try testArgs(u8, i32, 0);
+            try testArgs(i16, i32, -1 << 31);
+            try testArgs(i16, i32, -1);
+            try testArgs(i16, i32, 0);
+            try testArgs(u16, i32, -1 << 31);
+            try testArgs(u16, i32, -1);
+            try testArgs(u16, i32, 0);
+            try testArgs(i32, i32, -1 << 31);
+            try testArgs(i32, i32, -1);
+            try testArgs(i32, i32, 0);
+            try testArgs(u32, i32, -1 << 31);
+            try testArgs(u32, i32, -1);
+            try testArgs(u32, i32, 0);
+            try testArgs(i64, i32, -1 << 31);
+            try testArgs(i64, i32, -1);
+            try testArgs(i64, i32, 0);
+            try testArgs(u64, i32, -1 << 31);
+            try testArgs(u64, i32, -1);
+            try testArgs(u64, i32, 0);
+            try testArgs(i128, i32, -1 << 31);
+            try testArgs(i128, i32, -1);
+            try testArgs(i128, i32, 0);
+            try testArgs(u128, i32, -1 << 31);
+            try testArgs(u128, i32, -1);
+            try testArgs(u128, i32, 0);
+            try testArgs(i256, i32, -1 << 31);
+            try testArgs(i256, i32, -1);
+            try testArgs(i256, i32, 0);
+            try testArgs(u256, i32, -1 << 31);
+            try testArgs(u256, i32, -1);
+            try testArgs(u256, i32, 0);
+            try testArgs(i512, i32, -1 << 31);
+            try testArgs(i512, i32, -1);
+            try testArgs(i512, i32, 0);
+            try testArgs(u512, i32, -1 << 31);
+            try testArgs(u512, i32, -1);
+            try testArgs(u512, i32, 0);
+            try testArgs(i1024, i32, -1 << 31);
+            try testArgs(i1024, i32, -1);
+            try testArgs(i1024, i32, 0);
+            try testArgs(u1024, i32, -1 << 31);
+            try testArgs(u1024, i32, -1);
+            try testArgs(u1024, i32, 0);
+            try testArgs(i8, u32, 0);
+            try testArgs(i8, u32, 1 << 0);
+            try testArgs(i8, u32, 1 << 31);
+            try testArgs(u8, u32, 0);
+            try testArgs(u8, u32, 1 << 0);
+            try testArgs(u8, u32, 1 << 31);
+            try testArgs(i16, u32, 0);
+            try testArgs(i16, u32, 1 << 0);
+            try testArgs(i16, u32, 1 << 31);
+            try testArgs(u16, u32, 0);
+            try testArgs(u16, u32, 1 << 0);
+            try testArgs(u16, u32, 1 << 31);
+            try testArgs(i32, u32, 0);
+            try testArgs(i32, u32, 1 << 0);
+            try testArgs(i32, u32, 1 << 31);
+            try testArgs(u32, u32, 0);
+            try testArgs(u32, u32, 1 << 0);
+            try testArgs(u32, u32, 1 << 31);
+            try testArgs(i64, u32, 0);
+            try testArgs(i64, u32, 1 << 0);
+            try testArgs(i64, u32, 1 << 31);
+            try testArgs(u64, u32, 0);
+            try testArgs(u64, u32, 1 << 0);
+            try testArgs(u64, u32, 1 << 31);
+            try testArgs(i128, u32, 0);
+            try testArgs(i128, u32, 1 << 0);
+            try testArgs(i128, u32, 1 << 31);
+            try testArgs(u128, u32, 0);
+            try testArgs(u128, u32, 1 << 0);
+            try testArgs(u128, u32, 1 << 31);
+            try testArgs(i256, u32, 0);
+            try testArgs(i256, u32, 1 << 0);
+            try testArgs(i256, u32, 1 << 31);
+            try testArgs(u256, u32, 0);
+            try testArgs(u256, u32, 1 << 0);
+            try testArgs(u256, u32, 1 << 31);
+            try testArgs(i512, u32, 0);
+            try testArgs(i512, u32, 1 << 0);
+            try testArgs(i512, u32, 1 << 31);
+            try testArgs(u512, u32, 0);
+            try testArgs(u512, u32, 1 << 0);
+            try testArgs(u512, u32, 1 << 31);
+            try testArgs(i1024, u32, 0);
+            try testArgs(i1024, u32, 1 << 0);
+            try testArgs(i1024, u32, 1 << 31);
+            try testArgs(u1024, u32, 0);
+            try testArgs(u1024, u32, 1 << 0);
+            try testArgs(u1024, u32, 1 << 31);
+
+            try testArgs(i8, i33, -1 << 32);
+            try testArgs(i8, i33, -1);
+            try testArgs(i8, i33, 0);
+            try testArgs(u8, i33, -1 << 32);
+            try testArgs(u8, i33, -1);
+            try testArgs(u8, i33, 0);
+            try testArgs(i16, i33, -1 << 32);
+            try testArgs(i16, i33, -1);
+            try testArgs(i16, i33, 0);
+            try testArgs(u16, i33, -1 << 32);
+            try testArgs(u16, i33, -1);
+            try testArgs(u16, i33, 0);
+            try testArgs(i32, i33, -1 << 32);
+            try testArgs(i32, i33, -1);
+            try testArgs(i32, i33, 0);
+            try testArgs(u32, i33, -1 << 32);
+            try testArgs(u32, i33, -1);
+            try testArgs(u32, i33, 0);
+            try testArgs(i64, i33, -1 << 32);
+            try testArgs(i64, i33, -1);
+            try testArgs(i64, i33, 0);
+            try testArgs(u64, i33, -1 << 32);
+            try testArgs(u64, i33, -1);
+            try testArgs(u64, i33, 0);
+            try testArgs(i128, i33, -1 << 32);
+            try testArgs(i128, i33, -1);
+            try testArgs(i128, i33, 0);
+            try testArgs(u128, i33, -1 << 32);
+            try testArgs(u128, i33, -1);
+            try testArgs(u128, i33, 0);
+            try testArgs(i256, i33, -1 << 32);
+            try testArgs(i256, i33, -1);
+            try testArgs(i256, i33, 0);
+            try testArgs(u256, i33, -1 << 32);
+            try testArgs(u256, i33, -1);
+            try testArgs(u256, i33, 0);
+            try testArgs(i512, i33, -1 << 32);
+            try testArgs(i512, i33, -1);
+            try testArgs(i512, i33, 0);
+            try testArgs(u512, i33, -1 << 32);
+            try testArgs(u512, i33, -1);
+            try testArgs(u512, i33, 0);
+            try testArgs(i1024, i33, -1 << 32);
+            try testArgs(i1024, i33, -1);
+            try testArgs(i1024, i33, 0);
+            try testArgs(u1024, i33, -1 << 32);
+            try testArgs(u1024, i33, -1);
+            try testArgs(u1024, i33, 0);
+            try testArgs(i8, u33, 0);
+            try testArgs(i8, u33, 1 << 0);
+            try testArgs(i8, u33, 1 << 32);
+            try testArgs(u8, u33, 0);
+            try testArgs(u8, u33, 1 << 0);
+            try testArgs(u8, u33, 1 << 32);
+            try testArgs(i16, u33, 0);
+            try testArgs(i16, u33, 1 << 0);
+            try testArgs(i16, u33, 1 << 32);
+            try testArgs(u16, u33, 0);
+            try testArgs(u16, u33, 1 << 0);
+            try testArgs(u16, u33, 1 << 32);
+            try testArgs(i32, u33, 0);
+            try testArgs(i32, u33, 1 << 0);
+            try testArgs(i32, u33, 1 << 32);
+            try testArgs(u32, u33, 0);
+            try testArgs(u32, u33, 1 << 0);
+            try testArgs(u32, u33, 1 << 32);
+            try testArgs(i64, u33, 0);
+            try testArgs(i64, u33, 1 << 0);
+            try testArgs(i64, u33, 1 << 32);
+            try testArgs(u64, u33, 0);
+            try testArgs(u64, u33, 1 << 0);
+            try testArgs(u64, u33, 1 << 32);
+            try testArgs(i128, u33, 0);
+            try testArgs(i128, u33, 1 << 0);
+            try testArgs(i128, u33, 1 << 32);
+            try testArgs(u128, u33, 0);
+            try testArgs(u128, u33, 1 << 0);
+            try testArgs(u128, u33, 1 << 32);
+            try testArgs(i256, u33, 0);
+            try testArgs(i256, u33, 1 << 0);
+            try testArgs(i256, u33, 1 << 32);
+            try testArgs(u256, u33, 0);
+            try testArgs(u256, u33, 1 << 0);
+            try testArgs(u256, u33, 1 << 32);
+            try testArgs(i512, u33, 0);
+            try testArgs(i512, u33, 1 << 0);
+            try testArgs(i512, u33, 1 << 32);
+            try testArgs(u512, u33, 0);
+            try testArgs(u512, u33, 1 << 0);
+            try testArgs(u512, u33, 1 << 32);
+            try testArgs(i1024, u33, 0);
+            try testArgs(i1024, u33, 1 << 0);
+            try testArgs(i1024, u33, 1 << 32);
+            try testArgs(u1024, u33, 0);
+            try testArgs(u1024, u33, 1 << 0);
+            try testArgs(u1024, u33, 1 << 32);
+
+            try testArgs(i8, i63, -1 << 62);
+            try testArgs(i8, i63, -1);
+            try testArgs(i8, i63, 0);
+            try testArgs(u8, i63, -1 << 62);
+            try testArgs(u8, i63, -1);
+            try testArgs(u8, i63, 0);
+            try testArgs(i16, i63, -1 << 62);
+            try testArgs(i16, i63, -1);
+            try testArgs(i16, i63, 0);
+            try testArgs(u16, i63, -1 << 62);
+            try testArgs(u16, i63, -1);
+            try testArgs(u16, i63, 0);
+            try testArgs(i32, i63, -1 << 62);
+            try testArgs(i32, i63, -1);
+            try testArgs(i32, i63, 0);
+            try testArgs(u32, i63, -1 << 62);
+            try testArgs(u32, i63, -1);
+            try testArgs(u32, i63, 0);
+            try testArgs(i64, i63, -1 << 62);
+            try testArgs(i64, i63, -1);
+            try testArgs(i64, i63, 0);
+            try testArgs(u64, i63, -1 << 62);
+            try testArgs(u64, i63, -1);
+            try testArgs(u64, i63, 0);
+            try testArgs(i128, i63, -1 << 62);
+            try testArgs(i128, i63, -1);
+            try testArgs(i128, i63, 0);
+            try testArgs(u128, i63, -1 << 62);
+            try testArgs(u128, i63, -1);
+            try testArgs(u128, i63, 0);
+            try testArgs(i256, i63, -1 << 62);
+            try testArgs(i256, i63, -1);
+            try testArgs(i256, i63, 0);
+            try testArgs(u256, i63, -1 << 62);
+            try testArgs(u256, i63, -1);
+            try testArgs(u256, i63, 0);
+            try testArgs(i512, i63, -1 << 62);
+            try testArgs(i512, i63, -1);
+            try testArgs(i512, i63, 0);
+            try testArgs(u512, i63, -1 << 62);
+            try testArgs(u512, i63, -1);
+            try testArgs(u512, i63, 0);
+            try testArgs(i1024, i63, -1 << 62);
+            try testArgs(i1024, i63, -1);
+            try testArgs(i1024, i63, 0);
+            try testArgs(u1024, i63, -1 << 62);
+            try testArgs(u1024, i63, -1);
+            try testArgs(u1024, i63, 0);
+            try testArgs(i8, u63, 0);
+            try testArgs(i8, u63, 1 << 0);
+            try testArgs(i8, u63, 1 << 62);
+            try testArgs(u8, u63, 0);
+            try testArgs(u8, u63, 1 << 0);
+            try testArgs(u8, u63, 1 << 62);
+            try testArgs(i16, u63, 0);
+            try testArgs(i16, u63, 1 << 0);
+            try testArgs(i16, u63, 1 << 62);
+            try testArgs(u16, u63, 0);
+            try testArgs(u16, u63, 1 << 0);
+            try testArgs(u16, u63, 1 << 62);
+            try testArgs(i32, u63, 0);
+            try testArgs(i32, u63, 1 << 0);
+            try testArgs(i32, u63, 1 << 62);
+            try testArgs(u32, u63, 0);
+            try testArgs(u32, u63, 1 << 0);
+            try testArgs(u32, u63, 1 << 62);
+            try testArgs(i64, u63, 0);
+            try testArgs(i64, u63, 1 << 0);
+            try testArgs(i64, u63, 1 << 62);
+            try testArgs(u64, u63, 0);
+            try testArgs(u64, u63, 1 << 0);
+            try testArgs(u64, u63, 1 << 62);
+            try testArgs(i128, u63, 0);
+            try testArgs(i128, u63, 1 << 0);
+            try testArgs(i128, u63, 1 << 62);
+            try testArgs(u128, u63, 0);
+            try testArgs(u128, u63, 1 << 0);
+            try testArgs(u128, u63, 1 << 62);
+            try testArgs(i256, u63, 0);
+            try testArgs(i256, u63, 1 << 0);
+            try testArgs(i256, u63, 1 << 62);
+            try testArgs(u256, u63, 0);
+            try testArgs(u256, u63, 1 << 0);
+            try testArgs(u256, u63, 1 << 62);
+            try testArgs(i512, u63, 0);
+            try testArgs(i512, u63, 1 << 0);
+            try testArgs(i512, u63, 1 << 62);
+            try testArgs(u512, u63, 0);
+            try testArgs(u512, u63, 1 << 0);
+            try testArgs(u512, u63, 1 << 62);
+            try testArgs(i1024, u63, 0);
+            try testArgs(i1024, u63, 1 << 0);
+            try testArgs(i1024, u63, 1 << 62);
+            try testArgs(u1024, u63, 0);
+            try testArgs(u1024, u63, 1 << 0);
+            try testArgs(u1024, u63, 1 << 62);
+
+            try testArgs(i8, i64, -1 << 63);
+            try testArgs(i8, i64, -1);
+            try testArgs(i8, i64, 0);
+            try testArgs(u8, i64, -1 << 63);
+            try testArgs(u8, i64, -1);
+            try testArgs(u8, i64, 0);
+            try testArgs(i16, i64, -1 << 63);
+            try testArgs(i16, i64, -1);
+            try testArgs(i16, i64, 0);
+            try testArgs(u16, i64, -1 << 63);
+            try testArgs(u16, i64, -1);
+            try testArgs(u16, i64, 0);
+            try testArgs(i32, i64, -1 << 63);
+            try testArgs(i32, i64, -1);
+            try testArgs(i32, i64, 0);
+            try testArgs(u32, i64, -1 << 63);
+            try testArgs(u32, i64, -1);
+            try testArgs(u32, i64, 0);
+            try testArgs(i64, i64, -1 << 63);
+            try testArgs(i64, i64, -1);
+            try testArgs(i64, i64, 0);
+            try testArgs(u64, i64, -1 << 63);
+            try testArgs(u64, i64, -1);
+            try testArgs(u64, i64, 0);
+            try testArgs(i128, i64, -1 << 63);
+            try testArgs(i128, i64, -1);
+            try testArgs(i128, i64, 0);
+            try testArgs(u128, i64, -1 << 63);
+            try testArgs(u128, i64, -1);
+            try testArgs(u128, i64, 0);
+            try testArgs(i256, i64, -1 << 63);
+            try testArgs(i256, i64, -1);
+            try testArgs(i256, i64, 0);
+            try testArgs(u256, i64, -1 << 63);
+            try testArgs(u256, i64, -1);
+            try testArgs(u256, i64, 0);
+            try testArgs(i512, i64, -1 << 63);
+            try testArgs(i512, i64, -1);
+            try testArgs(i512, i64, 0);
+            try testArgs(u512, i64, -1 << 63);
+            try testArgs(u512, i64, -1);
+            try testArgs(u512, i64, 0);
+            try testArgs(i1024, i64, -1 << 63);
+            try testArgs(i1024, i64, -1);
+            try testArgs(i1024, i64, 0);
+            try testArgs(u1024, i64, -1 << 63);
+            try testArgs(u1024, i64, -1);
+            try testArgs(u1024, i64, 0);
+            try testArgs(i8, u64, 0);
+            try testArgs(i8, u64, 1 << 0);
+            try testArgs(i8, u64, 1 << 63);
+            try testArgs(u8, u64, 0);
+            try testArgs(u8, u64, 1 << 0);
+            try testArgs(u8, u64, 1 << 63);
+            try testArgs(i16, u64, 0);
+            try testArgs(i16, u64, 1 << 0);
+            try testArgs(i16, u64, 1 << 63);
+            try testArgs(u16, u64, 0);
+            try testArgs(u16, u64, 1 << 0);
+            try testArgs(u16, u64, 1 << 63);
+            try testArgs(i32, u64, 0);
+            try testArgs(i32, u64, 1 << 0);
+            try testArgs(i32, u64, 1 << 63);
+            try testArgs(u32, u64, 0);
+            try testArgs(u32, u64, 1 << 0);
+            try testArgs(u32, u64, 1 << 63);
+            try testArgs(i64, u64, 0);
+            try testArgs(i64, u64, 1 << 0);
+            try testArgs(i64, u64, 1 << 63);
+            try testArgs(u64, u64, 0);
+            try testArgs(u64, u64, 1 << 0);
+            try testArgs(u64, u64, 1 << 63);
+            try testArgs(i128, u64, 0);
+            try testArgs(i128, u64, 1 << 0);
+            try testArgs(i128, u64, 1 << 63);
+            try testArgs(u128, u64, 0);
+            try testArgs(u128, u64, 1 << 0);
+            try testArgs(u128, u64, 1 << 63);
+            try testArgs(i256, u64, 0);
+            try testArgs(i256, u64, 1 << 0);
+            try testArgs(i256, u64, 1 << 63);
+            try testArgs(u256, u64, 0);
+            try testArgs(u256, u64, 1 << 0);
+            try testArgs(u256, u64, 1 << 63);
+            try testArgs(i512, u64, 0);
+            try testArgs(i512, u64, 1 << 0);
+            try testArgs(i512, u64, 1 << 63);
+            try testArgs(u512, u64, 0);
+            try testArgs(u512, u64, 1 << 0);
+            try testArgs(u512, u64, 1 << 63);
+            try testArgs(i1024, u64, 0);
+            try testArgs(i1024, u64, 1 << 0);
+            try testArgs(i1024, u64, 1 << 63);
+            try testArgs(u1024, u64, 0);
+            try testArgs(u1024, u64, 1 << 0);
+            try testArgs(u1024, u64, 1 << 63);
+
+            try testArgs(i8, i65, -1 << 64);
+            try testArgs(i8, i65, -1);
+            try testArgs(i8, i65, 0);
+            try testArgs(u8, i65, -1 << 64);
+            try testArgs(u8, i65, -1);
+            try testArgs(u8, i65, 0);
+            try testArgs(i16, i65, -1 << 64);
+            try testArgs(i16, i65, -1);
+            try testArgs(i16, i65, 0);
+            try testArgs(u16, i65, -1 << 64);
+            try testArgs(u16, i65, -1);
+            try testArgs(u16, i65, 0);
+            try testArgs(i32, i65, -1 << 64);
+            try testArgs(i32, i65, -1);
+            try testArgs(i32, i65, 0);
+            try testArgs(u32, i65, -1 << 64);
+            try testArgs(u32, i65, -1);
+            try testArgs(u32, i65, 0);
+            try testArgs(i64, i65, -1 << 64);
+            try testArgs(i64, i65, -1);
+            try testArgs(i64, i65, 0);
+            try testArgs(u64, i65, -1 << 64);
+            try testArgs(u64, i65, -1);
+            try testArgs(u64, i65, 0);
+            try testArgs(i128, i65, -1 << 64);
+            try testArgs(i128, i65, -1);
+            try testArgs(i128, i65, 0);
+            try testArgs(u128, i65, -1 << 64);
+            try testArgs(u128, i65, -1);
+            try testArgs(u128, i65, 0);
+            try testArgs(i256, i65, -1 << 64);
+            try testArgs(i256, i65, -1);
+            try testArgs(i256, i65, 0);
+            try testArgs(u256, i65, -1 << 64);
+            try testArgs(u256, i65, -1);
+            try testArgs(u256, i65, 0);
+            try testArgs(i512, i65, -1 << 64);
+            try testArgs(i512, i65, -1);
+            try testArgs(i512, i65, 0);
+            try testArgs(u512, i65, -1 << 64);
+            try testArgs(u512, i65, -1);
+            try testArgs(u512, i65, 0);
+            try testArgs(i1024, i65, -1 << 64);
+            try testArgs(i1024, i65, -1);
+            try testArgs(i1024, i65, 0);
+            try testArgs(u1024, i65, -1 << 64);
+            try testArgs(u1024, i65, -1);
+            try testArgs(u1024, i65, 0);
+            try testArgs(i8, u65, 0);
+            try testArgs(i8, u65, 1 << 0);
+            try testArgs(i8, u65, 1 << 64);
+            try testArgs(u8, u65, 0);
+            try testArgs(u8, u65, 1 << 0);
+            try testArgs(u8, u65, 1 << 64);
+            try testArgs(i16, u65, 0);
+            try testArgs(i16, u65, 1 << 0);
+            try testArgs(i16, u65, 1 << 64);
+            try testArgs(u16, u65, 0);
+            try testArgs(u16, u65, 1 << 0);
+            try testArgs(u16, u65, 1 << 64);
+            try testArgs(i32, u65, 0);
+            try testArgs(i32, u65, 1 << 0);
+            try testArgs(i32, u65, 1 << 64);
+            try testArgs(u32, u65, 0);
+            try testArgs(u32, u65, 1 << 0);
+            try testArgs(u32, u65, 1 << 64);
+            try testArgs(i64, u65, 0);
+            try testArgs(i64, u65, 1 << 0);
+            try testArgs(i64, u65, 1 << 64);
+            try testArgs(u64, u65, 0);
+            try testArgs(u64, u65, 1 << 0);
+            try testArgs(u64, u65, 1 << 64);
+            try testArgs(i128, u65, 0);
+            try testArgs(i128, u65, 1 << 0);
+            try testArgs(i128, u65, 1 << 64);
+            try testArgs(u128, u65, 0);
+            try testArgs(u128, u65, 1 << 0);
+            try testArgs(u128, u65, 1 << 64);
+            try testArgs(i256, u65, 0);
+            try testArgs(i256, u65, 1 << 0);
+            try testArgs(i256, u65, 1 << 64);
+            try testArgs(u256, u65, 0);
+            try testArgs(u256, u65, 1 << 0);
+            try testArgs(u256, u65, 1 << 64);
+            try testArgs(i512, u65, 0);
+            try testArgs(i512, u65, 1 << 0);
+            try testArgs(i512, u65, 1 << 64);
+            try testArgs(u512, u65, 0);
+            try testArgs(u512, u65, 1 << 0);
+            try testArgs(u512, u65, 1 << 64);
+            try testArgs(i1024, u65, 0);
+            try testArgs(i1024, u65, 1 << 0);
+            try testArgs(i1024, u65, 1 << 64);
+            try testArgs(u1024, u65, 0);
+            try testArgs(u1024, u65, 1 << 0);
+            try testArgs(u1024, u65, 1 << 64);
+
+            try testArgs(i8, i95, -1 << 94);
+            try testArgs(i8, i95, -1);
+            try testArgs(i8, i95, 0);
+            try testArgs(u8, i95, -1 << 94);
+            try testArgs(u8, i95, -1);
+            try testArgs(u8, i95, 0);
+            try testArgs(i16, i95, -1 << 94);
+            try testArgs(i16, i95, -1);
+            try testArgs(i16, i95, 0);
+            try testArgs(u16, i95, -1 << 94);
+            try testArgs(u16, i95, -1);
+            try testArgs(u16, i95, 0);
+            try testArgs(i32, i95, -1 << 94);
+            try testArgs(i32, i95, -1);
+            try testArgs(i32, i95, 0);
+            try testArgs(u32, i95, -1 << 94);
+            try testArgs(u32, i95, -1);
+            try testArgs(u32, i95, 0);
+            try testArgs(i64, i95, -1 << 94);
+            try testArgs(i64, i95, -1);
+            try testArgs(i64, i95, 0);
+            try testArgs(u64, i95, -1 << 94);
+            try testArgs(u64, i95, -1);
+            try testArgs(u64, i95, 0);
+            try testArgs(i128, i95, -1 << 94);
+            try testArgs(i128, i95, -1);
+            try testArgs(i128, i95, 0);
+            try testArgs(u128, i95, -1 << 94);
+            try testArgs(u128, i95, -1);
+            try testArgs(u128, i95, 0);
+            try testArgs(i256, i95, -1 << 94);
+            try testArgs(i256, i95, -1);
+            try testArgs(i256, i95, 0);
+            try testArgs(u256, i95, -1 << 94);
+            try testArgs(u256, i95, -1);
+            try testArgs(u256, i95, 0);
+            try testArgs(i512, i95, -1 << 94);
+            try testArgs(i512, i95, -1);
+            try testArgs(i512, i95, 0);
+            try testArgs(u512, i95, -1 << 94);
+            try testArgs(u512, i95, -1);
+            try testArgs(u512, i95, 0);
+            try testArgs(i1024, i95, -1 << 94);
+            try testArgs(i1024, i95, -1);
+            try testArgs(i1024, i95, 0);
+            try testArgs(u1024, i95, -1 << 94);
+            try testArgs(u1024, i95, -1);
+            try testArgs(u1024, i95, 0);
+            try testArgs(i8, u95, 0);
+            try testArgs(i8, u95, 1 << 0);
+            try testArgs(i8, u95, 1 << 94);
+            try testArgs(u8, u95, 0);
+            try testArgs(u8, u95, 1 << 0);
+            try testArgs(u8, u95, 1 << 94);
+            try testArgs(i16, u95, 0);
+            try testArgs(i16, u95, 1 << 0);
+            try testArgs(i16, u95, 1 << 94);
+            try testArgs(u16, u95, 0);
+            try testArgs(u16, u95, 1 << 0);
+            try testArgs(u16, u95, 1 << 94);
+            try testArgs(i32, u95, 0);
+            try testArgs(i32, u95, 1 << 0);
+            try testArgs(i32, u95, 1 << 94);
+            try testArgs(u32, u95, 0);
+            try testArgs(u32, u95, 1 << 0);
+            try testArgs(u32, u95, 1 << 94);
+            try testArgs(i64, u95, 0);
+            try testArgs(i64, u95, 1 << 0);
+            try testArgs(i64, u95, 1 << 94);
+            try testArgs(u64, u95, 0);
+            try testArgs(u64, u95, 1 << 0);
+            try testArgs(u64, u95, 1 << 94);
+            try testArgs(i128, u95, 0);
+            try testArgs(i128, u95, 1 << 0);
+            try testArgs(i128, u95, 1 << 94);
+            try testArgs(u128, u95, 0);
+            try testArgs(u128, u95, 1 << 0);
+            try testArgs(u128, u95, 1 << 94);
+            try testArgs(i256, u95, 0);
+            try testArgs(i256, u95, 1 << 0);
+            try testArgs(i256, u95, 1 << 94);
+            try testArgs(u256, u95, 0);
+            try testArgs(u256, u95, 1 << 0);
+            try testArgs(u256, u95, 1 << 94);
+            try testArgs(i512, u95, 0);
+            try testArgs(i512, u95, 1 << 0);
+            try testArgs(i512, u95, 1 << 94);
+            try testArgs(u512, u95, 0);
+            try testArgs(u512, u95, 1 << 0);
+            try testArgs(u512, u95, 1 << 94);
+            try testArgs(i1024, u95, 0);
+            try testArgs(i1024, u95, 1 << 0);
+            try testArgs(i1024, u95, 1 << 94);
+            try testArgs(u1024, u95, 0);
+            try testArgs(u1024, u95, 1 << 0);
+            try testArgs(u1024, u95, 1 << 94);
+
+            try testArgs(i8, i96, -1 << 95);
+            try testArgs(i8, i96, -1);
+            try testArgs(i8, i96, 0);
+            try testArgs(u8, i96, -1 << 95);
+            try testArgs(u8, i96, -1);
+            try testArgs(u8, i96, 0);
+            try testArgs(i16, i96, -1 << 95);
+            try testArgs(i16, i96, -1);
+            try testArgs(i16, i96, 0);
+            try testArgs(u16, i96, -1 << 95);
+            try testArgs(u16, i96, -1);
+            try testArgs(u16, i96, 0);
+            try testArgs(i32, i96, -1 << 95);
+            try testArgs(i32, i96, -1);
+            try testArgs(i32, i96, 0);
+            try testArgs(u32, i96, -1 << 95);
+            try testArgs(u32, i96, -1);
+            try testArgs(u32, i96, 0);
+            try testArgs(i64, i96, -1 << 95);
+            try testArgs(i64, i96, -1);
+            try testArgs(i64, i96, 0);
+            try testArgs(u64, i96, -1 << 95);
+            try testArgs(u64, i96, -1);
+            try testArgs(u64, i96, 0);
+            try testArgs(i128, i96, -1 << 95);
+            try testArgs(i128, i96, -1);
+            try testArgs(i128, i96, 0);
+            try testArgs(u128, i96, -1 << 95);
+            try testArgs(u128, i96, -1);
+            try testArgs(u128, i96, 0);
+            try testArgs(i256, i96, -1 << 95);
+            try testArgs(i256, i96, -1);
+            try testArgs(i256, i96, 0);
+            try testArgs(u256, i96, -1 << 95);
+            try testArgs(u256, i96, -1);
+            try testArgs(u256, i96, 0);
+            try testArgs(i512, i96, -1 << 95);
+            try testArgs(i512, i96, -1);
+            try testArgs(i512, i96, 0);
+            try testArgs(u512, i96, -1 << 95);
+            try testArgs(u512, i96, -1);
+            try testArgs(u512, i96, 0);
+            try testArgs(i1024, i96, -1 << 95);
+            try testArgs(i1024, i96, -1);
+            try testArgs(i1024, i96, 0);
+            try testArgs(u1024, i96, -1 << 95);
+            try testArgs(u1024, i96, -1);
+            try testArgs(u1024, i96, 0);
+            try testArgs(i8, u96, 0);
+            try testArgs(i8, u96, 1 << 0);
+            try testArgs(i8, u96, 1 << 95);
+            try testArgs(u8, u96, 0);
+            try testArgs(u8, u96, 1 << 0);
+            try testArgs(u8, u96, 1 << 95);
+            try testArgs(i16, u96, 0);
+            try testArgs(i16, u96, 1 << 0);
+            try testArgs(i16, u96, 1 << 95);
+            try testArgs(u16, u96, 0);
+            try testArgs(u16, u96, 1 << 0);
+            try testArgs(u16, u96, 1 << 95);
+            try testArgs(i32, u96, 0);
+            try testArgs(i32, u96, 1 << 0);
+            try testArgs(i32, u96, 1 << 95);
+            try testArgs(u32, u96, 0);
+            try testArgs(u32, u96, 1 << 0);
+            try testArgs(u32, u96, 1 << 95);
+            try testArgs(i64, u96, 0);
+            try testArgs(i64, u96, 1 << 0);
+            try testArgs(i64, u96, 1 << 95);
+            try testArgs(u64, u96, 0);
+            try testArgs(u64, u96, 1 << 0);
+            try testArgs(u64, u96, 1 << 95);
+            try testArgs(i128, u96, 0);
+            try testArgs(i128, u96, 1 << 0);
+            try testArgs(i128, u96, 1 << 95);
+            try testArgs(u128, u96, 0);
+            try testArgs(u128, u96, 1 << 0);
+            try testArgs(u128, u96, 1 << 95);
+            try testArgs(i256, u96, 0);
+            try testArgs(i256, u96, 1 << 0);
+            try testArgs(i256, u96, 1 << 95);
+            try testArgs(u256, u96, 0);
+            try testArgs(u256, u96, 1 << 0);
+            try testArgs(u256, u96, 1 << 95);
+            try testArgs(i512, u96, 0);
+            try testArgs(i512, u96, 1 << 0);
+            try testArgs(i512, u96, 1 << 95);
+            try testArgs(u512, u96, 0);
+            try testArgs(u512, u96, 1 << 0);
+            try testArgs(u512, u96, 1 << 95);
+            try testArgs(i1024, u96, 0);
+            try testArgs(i1024, u96, 1 << 0);
+            try testArgs(i1024, u96, 1 << 95);
+            try testArgs(u1024, u96, 0);
+            try testArgs(u1024, u96, 1 << 0);
+            try testArgs(u1024, u96, 1 << 95);
+
+            try testArgs(i8, i97, -1 << 96);
+            try testArgs(i8, i97, -1);
+            try testArgs(i8, i97, 0);
+            try testArgs(u8, i97, -1 << 96);
+            try testArgs(u8, i97, -1);
+            try testArgs(u8, i97, 0);
+            try testArgs(i16, i97, -1 << 96);
+            try testArgs(i16, i97, -1);
+            try testArgs(i16, i97, 0);
+            try testArgs(u16, i97, -1 << 96);
+            try testArgs(u16, i97, -1);
+            try testArgs(u16, i97, 0);
+            try testArgs(i32, i97, -1 << 96);
+            try testArgs(i32, i97, -1);
+            try testArgs(i32, i97, 0);
+            try testArgs(u32, i97, -1 << 96);
+            try testArgs(u32, i97, -1);
+            try testArgs(u32, i97, 0);
+            try testArgs(i64, i97, -1 << 96);
+            try testArgs(i64, i97, -1);
+            try testArgs(i64, i97, 0);
+            try testArgs(u64, i97, -1 << 96);
+            try testArgs(u64, i97, -1);
+            try testArgs(u64, i97, 0);
+            try testArgs(i128, i97, -1 << 96);
+            try testArgs(i128, i97, -1);
+            try testArgs(i128, i97, 0);
+            try testArgs(u128, i97, -1 << 96);
+            try testArgs(u128, i97, -1);
+            try testArgs(u128, i97, 0);
+            try testArgs(i256, i97, -1 << 96);
+            try testArgs(i256, i97, -1);
+            try testArgs(i256, i97, 0);
+            try testArgs(u256, i97, -1 << 96);
+            try testArgs(u256, i97, -1);
+            try testArgs(u256, i97, 0);
+            try testArgs(i512, i97, -1 << 96);
+            try testArgs(i512, i97, -1);
+            try testArgs(i512, i97, 0);
+            try testArgs(u512, i97, -1 << 96);
+            try testArgs(u512, i97, -1);
+            try testArgs(u512, i97, 0);
+            try testArgs(i1024, i97, -1 << 96);
+            try testArgs(i1024, i97, -1);
+            try testArgs(i1024, i97, 0);
+            try testArgs(u1024, i97, -1 << 96);
+            try testArgs(u1024, i97, -1);
+            try testArgs(u1024, i97, 0);
+            try testArgs(i8, u97, 0);
+            try testArgs(i8, u97, 1 << 0);
+            try testArgs(i8, u97, 1 << 96);
+            try testArgs(u8, u97, 0);
+            try testArgs(u8, u97, 1 << 0);
+            try testArgs(u8, u97, 1 << 96);
+            try testArgs(i16, u97, 0);
+            try testArgs(i16, u97, 1 << 0);
+            try testArgs(i16, u97, 1 << 96);
+            try testArgs(u16, u97, 0);
+            try testArgs(u16, u97, 1 << 0);
+            try testArgs(u16, u97, 1 << 96);
+            try testArgs(i32, u97, 0);
+            try testArgs(i32, u97, 1 << 0);
+            try testArgs(i32, u97, 1 << 96);
+            try testArgs(u32, u97, 0);
+            try testArgs(u32, u97, 1 << 0);
+            try testArgs(u32, u97, 1 << 96);
+            try testArgs(i64, u97, 0);
+            try testArgs(i64, u97, 1 << 0);
+            try testArgs(i64, u97, 1 << 96);
+            try testArgs(u64, u97, 0);
+            try testArgs(u64, u97, 1 << 0);
+            try testArgs(u64, u97, 1 << 96);
+            try testArgs(i128, u97, 0);
+            try testArgs(i128, u97, 1 << 0);
+            try testArgs(i128, u97, 1 << 96);
+            try testArgs(u128, u97, 0);
+            try testArgs(u128, u97, 1 << 0);
+            try testArgs(u128, u97, 1 << 96);
+            try testArgs(i256, u97, 0);
+            try testArgs(i256, u97, 1 << 0);
+            try testArgs(i256, u97, 1 << 96);
+            try testArgs(u256, u97, 0);
+            try testArgs(u256, u97, 1 << 0);
+            try testArgs(u256, u97, 1 << 96);
+            try testArgs(i512, u97, 0);
+            try testArgs(i512, u97, 1 << 0);
+            try testArgs(i512, u97, 1 << 96);
+            try testArgs(u512, u97, 0);
+            try testArgs(u512, u97, 1 << 0);
+            try testArgs(u512, u97, 1 << 96);
+            try testArgs(i1024, u97, 0);
+            try testArgs(i1024, u97, 1 << 0);
+            try testArgs(i1024, u97, 1 << 96);
+            try testArgs(u1024, u97, 0);
+            try testArgs(u1024, u97, 1 << 0);
+            try testArgs(u1024, u97, 1 << 96);
+
+            try testArgs(i8, i127, -1 << 126);
+            try testArgs(i8, i127, -1);
+            try testArgs(i8, i127, 0);
+            try testArgs(u8, i127, -1 << 126);
+            try testArgs(u8, i127, -1);
+            try testArgs(u8, i127, 0);
+            try testArgs(i16, i127, -1 << 126);
+            try testArgs(i16, i127, -1);
+            try testArgs(i16, i127, 0);
+            try testArgs(u16, i127, -1 << 126);
+            try testArgs(u16, i127, -1);
+            try testArgs(u16, i127, 0);
+            try testArgs(i32, i127, -1 << 126);
+            try testArgs(i32, i127, -1);
+            try testArgs(i32, i127, 0);
+            try testArgs(u32, i127, -1 << 126);
+            try testArgs(u32, i127, -1);
+            try testArgs(u32, i127, 0);
+            try testArgs(i64, i127, -1 << 126);
+            try testArgs(i64, i127, -1);
+            try testArgs(i64, i127, 0);
+            try testArgs(u64, i127, -1 << 126);
+            try testArgs(u64, i127, -1);
+            try testArgs(u64, i127, 0);
+            try testArgs(i128, i127, -1 << 126);
+            try testArgs(i128, i127, -1);
+            try testArgs(i128, i127, 0);
+            try testArgs(u128, i127, -1 << 126);
+            try testArgs(u128, i127, -1);
+            try testArgs(u128, i127, 0);
+            try testArgs(i256, i127, -1 << 126);
+            try testArgs(i256, i127, -1);
+            try testArgs(i256, i127, 0);
+            try testArgs(u256, i127, -1 << 126);
+            try testArgs(u256, i127, -1);
+            try testArgs(u256, i127, 0);
+            try testArgs(i512, i127, -1 << 126);
+            try testArgs(i512, i127, -1);
+            try testArgs(i512, i127, 0);
+            try testArgs(u512, i127, -1 << 126);
+            try testArgs(u512, i127, -1);
+            try testArgs(u512, i127, 0);
+            try testArgs(i1024, i127, -1 << 126);
+            try testArgs(i1024, i127, -1);
+            try testArgs(i1024, i127, 0);
+            try testArgs(u1024, i127, -1 << 126);
+            try testArgs(u1024, i127, -1);
+            try testArgs(u1024, i127, 0);
+            try testArgs(i8, u127, 0);
+            try testArgs(i8, u127, 1 << 0);
+            try testArgs(i8, u127, 1 << 126);
+            try testArgs(u8, u127, 0);
+            try testArgs(u8, u127, 1 << 0);
+            try testArgs(u8, u127, 1 << 126);
+            try testArgs(i16, u127, 0);
+            try testArgs(i16, u127, 1 << 0);
+            try testArgs(i16, u127, 1 << 126);
+            try testArgs(u16, u127, 0);
+            try testArgs(u16, u127, 1 << 0);
+            try testArgs(u16, u127, 1 << 126);
+            try testArgs(i32, u127, 0);
+            try testArgs(i32, u127, 1 << 0);
+            try testArgs(i32, u127, 1 << 126);
+            try testArgs(u32, u127, 0);
+            try testArgs(u32, u127, 1 << 0);
+            try testArgs(u32, u127, 1 << 126);
+            try testArgs(i64, u127, 0);
+            try testArgs(i64, u127, 1 << 0);
+            try testArgs(i64, u127, 1 << 126);
+            try testArgs(u64, u127, 0);
+            try testArgs(u64, u127, 1 << 0);
+            try testArgs(u64, u127, 1 << 126);
+            try testArgs(i128, u127, 0);
+            try testArgs(i128, u127, 1 << 0);
+            try testArgs(i128, u127, 1 << 126);
+            try testArgs(u128, u127, 0);
+            try testArgs(u128, u127, 1 << 0);
+            try testArgs(u128, u127, 1 << 126);
+            try testArgs(i256, u127, 0);
+            try testArgs(i256, u127, 1 << 0);
+            try testArgs(i256, u127, 1 << 126);
+            try testArgs(u256, u127, 0);
+            try testArgs(u256, u127, 1 << 0);
+            try testArgs(u256, u127, 1 << 126);
+            try testArgs(i512, u127, 0);
+            try testArgs(i512, u127, 1 << 0);
+            try testArgs(i512, u127, 1 << 126);
+            try testArgs(u512, u127, 0);
+            try testArgs(u512, u127, 1 << 0);
+            try testArgs(u512, u127, 1 << 126);
+            try testArgs(i1024, u127, 0);
+            try testArgs(i1024, u127, 1 << 0);
+            try testArgs(i1024, u127, 1 << 126);
+            try testArgs(u1024, u127, 0);
+            try testArgs(u1024, u127, 1 << 0);
+            try testArgs(u1024, u127, 1 << 126);
+
+            try testArgs(i8, i128, -1 << 127);
+            try testArgs(i8, i128, -1);
+            try testArgs(i8, i128, 0);
+            try testArgs(u8, i128, -1 << 127);
+            try testArgs(u8, i128, -1);
+            try testArgs(u8, i128, 0);
+            try testArgs(i16, i128, -1 << 127);
+            try testArgs(i16, i128, -1);
+            try testArgs(i16, i128, 0);
+            try testArgs(u16, i128, -1 << 127);
+            try testArgs(u16, i128, -1);
+            try testArgs(u16, i128, 0);
+            try testArgs(i32, i128, -1 << 127);
+            try testArgs(i32, i128, -1);
+            try testArgs(i32, i128, 0);
+            try testArgs(u32, i128, -1 << 127);
+            try testArgs(u32, i128, -1);
+            try testArgs(u32, i128, 0);
+            try testArgs(i64, i128, -1 << 127);
+            try testArgs(i64, i128, -1);
+            try testArgs(i64, i128, 0);
+            try testArgs(u64, i128, -1 << 127);
+            try testArgs(u64, i128, -1);
+            try testArgs(u64, i128, 0);
+            try testArgs(i128, i128, -1 << 127);
+            try testArgs(i128, i128, -1);
+            try testArgs(i128, i128, 0);
+            try testArgs(u128, i128, -1 << 127);
+            try testArgs(u128, i128, -1);
+            try testArgs(u128, i128, 0);
+            try testArgs(i256, i128, -1 << 127);
+            try testArgs(i256, i128, -1);
+            try testArgs(i256, i128, 0);
+            try testArgs(u256, i128, -1 << 127);
+            try testArgs(u256, i128, -1);
+            try testArgs(u256, i128, 0);
+            try testArgs(i512, i128, -1 << 127);
+            try testArgs(i512, i128, -1);
+            try testArgs(i512, i128, 0);
+            try testArgs(u512, i128, -1 << 127);
+            try testArgs(u512, i128, -1);
+            try testArgs(u512, i128, 0);
+            try testArgs(i1024, i128, -1 << 127);
+            try testArgs(i1024, i128, -1);
+            try testArgs(i1024, i128, 0);
+            try testArgs(u1024, i128, -1 << 127);
+            try testArgs(u1024, i128, -1);
+            try testArgs(u1024, i128, 0);
+            try testArgs(i8, u128, 0);
+            try testArgs(i8, u128, 1 << 0);
+            try testArgs(i8, u128, 1 << 127);
+            try testArgs(u8, u128, 0);
+            try testArgs(u8, u128, 1 << 0);
+            try testArgs(u8, u128, 1 << 127);
+            try testArgs(i16, u128, 0);
+            try testArgs(i16, u128, 1 << 0);
+            try testArgs(i16, u128, 1 << 127);
+            try testArgs(u16, u128, 0);
+            try testArgs(u16, u128, 1 << 0);
+            try testArgs(u16, u128, 1 << 127);
+            try testArgs(i32, u128, 0);
+            try testArgs(i32, u128, 1 << 0);
+            try testArgs(i32, u128, 1 << 127);
+            try testArgs(u32, u128, 0);
+            try testArgs(u32, u128, 1 << 0);
+            try testArgs(u32, u128, 1 << 127);
+            try testArgs(i64, u128, 0);
+            try testArgs(i64, u128, 1 << 0);
+            try testArgs(i64, u128, 1 << 127);
+            try testArgs(u64, u128, 0);
+            try testArgs(u64, u128, 1 << 0);
+            try testArgs(u64, u128, 1 << 127);
+            try testArgs(i128, u128, 0);
+            try testArgs(i128, u128, 1 << 0);
+            try testArgs(i128, u128, 1 << 127);
+            try testArgs(u128, u128, 0);
+            try testArgs(u128, u128, 1 << 0);
+            try testArgs(u128, u128, 1 << 127);
+            try testArgs(i256, u128, 0);
+            try testArgs(i256, u128, 1 << 0);
+            try testArgs(i256, u128, 1 << 127);
+            try testArgs(u256, u128, 0);
+            try testArgs(u256, u128, 1 << 0);
+            try testArgs(u256, u128, 1 << 127);
+            try testArgs(i512, u128, 0);
+            try testArgs(i512, u128, 1 << 0);
+            try testArgs(i512, u128, 1 << 127);
+            try testArgs(u512, u128, 0);
+            try testArgs(u512, u128, 1 << 0);
+            try testArgs(u512, u128, 1 << 127);
+            try testArgs(i1024, u128, 0);
+            try testArgs(i1024, u128, 1 << 0);
+            try testArgs(i1024, u128, 1 << 127);
+            try testArgs(u1024, u128, 0);
+            try testArgs(u1024, u128, 1 << 0);
+            try testArgs(u1024, u128, 1 << 127);
+
+            try testArgs(i8, i129, -1 << 128);
+            try testArgs(i8, i129, -1);
+            try testArgs(i8, i129, 0);
+            try testArgs(u8, i129, -1 << 128);
+            try testArgs(u8, i129, -1);
+            try testArgs(u8, i129, 0);
+            try testArgs(i16, i129, -1 << 128);
+            try testArgs(i16, i129, -1);
+            try testArgs(i16, i129, 0);
+            try testArgs(u16, i129, -1 << 128);
+            try testArgs(u16, i129, -1);
+            try testArgs(u16, i129, 0);
+            try testArgs(i32, i129, -1 << 128);
+            try testArgs(i32, i129, -1);
+            try testArgs(i32, i129, 0);
+            try testArgs(u32, i129, -1 << 128);
+            try testArgs(u32, i129, -1);
+            try testArgs(u32, i129, 0);
+            try testArgs(i64, i129, -1 << 128);
+            try testArgs(i64, i129, -1);
+            try testArgs(i64, i129, 0);
+            try testArgs(u64, i129, -1 << 128);
+            try testArgs(u64, i129, -1);
+            try testArgs(u64, i129, 0);
+            try testArgs(i128, i129, -1 << 128);
+            try testArgs(i128, i129, -1);
+            try testArgs(i128, i129, 0);
+            try testArgs(u128, i129, -1 << 128);
+            try testArgs(u128, i129, -1);
+            try testArgs(u128, i129, 0);
+            try testArgs(i256, i129, -1 << 128);
+            try testArgs(i256, i129, -1);
+            try testArgs(i256, i129, 0);
+            try testArgs(u256, i129, -1 << 128);
+            try testArgs(u256, i129, -1);
+            try testArgs(u256, i129, 0);
+            try testArgs(i512, i129, -1 << 128);
+            try testArgs(i512, i129, -1);
+            try testArgs(i512, i129, 0);
+            try testArgs(u512, i129, -1 << 128);
+            try testArgs(u512, i129, -1);
+            try testArgs(u512, i129, 0);
+            try testArgs(i1024, i129, -1 << 128);
+            try testArgs(i1024, i129, -1);
+            try testArgs(i1024, i129, 0);
+            try testArgs(u1024, i129, -1 << 128);
+            try testArgs(u1024, i129, -1);
+            try testArgs(u1024, i129, 0);
+            try testArgs(i8, u129, 0);
+            try testArgs(i8, u129, 1 << 0);
+            try testArgs(i8, u129, 1 << 128);
+            try testArgs(u8, u129, 0);
+            try testArgs(u8, u129, 1 << 0);
+            try testArgs(u8, u129, 1 << 128);
+            try testArgs(i16, u129, 0);
+            try testArgs(i16, u129, 1 << 0);
+            try testArgs(i16, u129, 1 << 128);
+            try testArgs(u16, u129, 0);
+            try testArgs(u16, u129, 1 << 0);
+            try testArgs(u16, u129, 1 << 128);
+            try testArgs(i32, u129, 0);
+            try testArgs(i32, u129, 1 << 0);
+            try testArgs(i32, u129, 1 << 128);
+            try testArgs(u32, u129, 0);
+            try testArgs(u32, u129, 1 << 0);
+            try testArgs(u32, u129, 1 << 128);
+            try testArgs(i64, u129, 0);
+            try testArgs(i64, u129, 1 << 0);
+            try testArgs(i64, u129, 1 << 128);
+            try testArgs(u64, u129, 0);
+            try testArgs(u64, u129, 1 << 0);
+            try testArgs(u64, u129, 1 << 128);
+            try testArgs(i128, u129, 0);
+            try testArgs(i128, u129, 1 << 0);
+            try testArgs(i128, u129, 1 << 128);
+            try testArgs(u128, u129, 0);
+            try testArgs(u128, u129, 1 << 0);
+            try testArgs(u128, u129, 1 << 128);
+            try testArgs(i256, u129, 0);
+            try testArgs(i256, u129, 1 << 0);
+            try testArgs(i256, u129, 1 << 128);
+            try testArgs(u256, u129, 0);
+            try testArgs(u256, u129, 1 << 0);
+            try testArgs(u256, u129, 1 << 128);
+            try testArgs(i512, u129, 0);
+            try testArgs(i512, u129, 1 << 0);
+            try testArgs(i512, u129, 1 << 128);
+            try testArgs(u512, u129, 0);
+            try testArgs(u512, u129, 1 << 0);
+            try testArgs(u512, u129, 1 << 128);
+            try testArgs(i1024, u129, 0);
+            try testArgs(i1024, u129, 1 << 0);
+            try testArgs(i1024, u129, 1 << 128);
+            try testArgs(u1024, u129, 0);
+            try testArgs(u1024, u129, 1 << 0);
+            try testArgs(u1024, u129, 1 << 128);
+
+            try testArgs(i8, i159, -1 << 158);
+            try testArgs(i8, i159, -1);
+            try testArgs(i8, i159, 0);
+            try testArgs(u8, i159, -1 << 158);
+            try testArgs(u8, i159, -1);
+            try testArgs(u8, i159, 0);
+            try testArgs(i16, i159, -1 << 158);
+            try testArgs(i16, i159, -1);
+            try testArgs(i16, i159, 0);
+            try testArgs(u16, i159, -1 << 158);
+            try testArgs(u16, i159, -1);
+            try testArgs(u16, i159, 0);
+            try testArgs(i32, i159, -1 << 158);
+            try testArgs(i32, i159, -1);
+            try testArgs(i32, i159, 0);
+            try testArgs(u32, i159, -1 << 158);
+            try testArgs(u32, i159, -1);
+            try testArgs(u32, i159, 0);
+            try testArgs(i64, i159, -1 << 158);
+            try testArgs(i64, i159, -1);
+            try testArgs(i64, i159, 0);
+            try testArgs(u64, i159, -1 << 158);
+            try testArgs(u64, i159, -1);
+            try testArgs(u64, i159, 0);
+            try testArgs(i128, i159, -1 << 158);
+            try testArgs(i128, i159, -1);
+            try testArgs(i128, i159, 0);
+            try testArgs(u128, i159, -1 << 158);
+            try testArgs(u128, i159, -1);
+            try testArgs(u128, i159, 0);
+            try testArgs(i256, i159, -1 << 158);
+            try testArgs(i256, i159, -1);
+            try testArgs(i256, i159, 0);
+            try testArgs(u256, i159, -1 << 158);
+            try testArgs(u256, i159, -1);
+            try testArgs(u256, i159, 0);
+            try testArgs(i512, i159, -1 << 158);
+            try testArgs(i512, i159, -1);
+            try testArgs(i512, i159, 0);
+            try testArgs(u512, i159, -1 << 158);
+            try testArgs(u512, i159, -1);
+            try testArgs(u512, i159, 0);
+            try testArgs(i1024, i159, -1 << 158);
+            try testArgs(i1024, i159, -1);
+            try testArgs(i1024, i159, 0);
+            try testArgs(u1024, i159, -1 << 158);
+            try testArgs(u1024, i159, -1);
+            try testArgs(u1024, i159, 0);
+            try testArgs(i8, u159, 0);
+            try testArgs(i8, u159, 1 << 0);
+            try testArgs(i8, u159, 1 << 158);
+            try testArgs(u8, u159, 0);
+            try testArgs(u8, u159, 1 << 0);
+            try testArgs(u8, u159, 1 << 158);
+            try testArgs(i16, u159, 0);
+            try testArgs(i16, u159, 1 << 0);
+            try testArgs(i16, u159, 1 << 158);
+            try testArgs(u16, u159, 0);
+            try testArgs(u16, u159, 1 << 0);
+            try testArgs(u16, u159, 1 << 158);
+            try testArgs(i32, u159, 0);
+            try testArgs(i32, u159, 1 << 0);
+            try testArgs(i32, u159, 1 << 158);
+            try testArgs(u32, u159, 0);
+            try testArgs(u32, u159, 1 << 0);
+            try testArgs(u32, u159, 1 << 158);
+            try testArgs(i64, u159, 0);
+            try testArgs(i64, u159, 1 << 0);
+            try testArgs(i64, u159, 1 << 158);
+            try testArgs(u64, u159, 0);
+            try testArgs(u64, u159, 1 << 0);
+            try testArgs(u64, u159, 1 << 158);
+            try testArgs(i128, u159, 0);
+            try testArgs(i128, u159, 1 << 0);
+            try testArgs(i128, u159, 1 << 158);
+            try testArgs(u128, u159, 0);
+            try testArgs(u128, u159, 1 << 0);
+            try testArgs(u128, u159, 1 << 158);
+            try testArgs(i256, u159, 0);
+            try testArgs(i256, u159, 1 << 0);
+            try testArgs(i256, u159, 1 << 158);
+            try testArgs(u256, u159, 0);
+            try testArgs(u256, u159, 1 << 0);
+            try testArgs(u256, u159, 1 << 158);
+            try testArgs(i512, u159, 0);
+            try testArgs(i512, u159, 1 << 0);
+            try testArgs(i512, u159, 1 << 158);
+            try testArgs(u512, u159, 0);
+            try testArgs(u512, u159, 1 << 0);
+            try testArgs(u512, u159, 1 << 158);
+            try testArgs(i1024, u159, 0);
+            try testArgs(i1024, u159, 1 << 0);
+            try testArgs(i1024, u159, 1 << 158);
+            try testArgs(u1024, u159, 0);
+            try testArgs(u1024, u159, 1 << 0);
+            try testArgs(u1024, u159, 1 << 158);
+
+            try testArgs(i8, i160, -1 << 159);
+            try testArgs(i8, i160, -1);
+            try testArgs(i8, i160, 0);
+            try testArgs(u8, i160, -1 << 159);
+            try testArgs(u8, i160, -1);
+            try testArgs(u8, i160, 0);
+            try testArgs(i16, i160, -1 << 159);
+            try testArgs(i16, i160, -1);
+            try testArgs(i16, i160, 0);
+            try testArgs(u16, i160, -1 << 159);
+            try testArgs(u16, i160, -1);
+            try testArgs(u16, i160, 0);
+            try testArgs(i32, i160, -1 << 159);
+            try testArgs(i32, i160, -1);
+            try testArgs(i32, i160, 0);
+            try testArgs(u32, i160, -1 << 159);
+            try testArgs(u32, i160, -1);
+            try testArgs(u32, i160, 0);
+            try testArgs(i64, i160, -1 << 159);
+            try testArgs(i64, i160, -1);
+            try testArgs(i64, i160, 0);
+            try testArgs(u64, i160, -1 << 159);
+            try testArgs(u64, i160, -1);
+            try testArgs(u64, i160, 0);
+            try testArgs(i128, i160, -1 << 159);
+            try testArgs(i128, i160, -1);
+            try testArgs(i128, i160, 0);
+            try testArgs(u128, i160, -1 << 159);
+            try testArgs(u128, i160, -1);
+            try testArgs(u128, i160, 0);
+            try testArgs(i256, i160, -1 << 159);
+            try testArgs(i256, i160, -1);
+            try testArgs(i256, i160, 0);
+            try testArgs(u256, i160, -1 << 159);
+            try testArgs(u256, i160, -1);
+            try testArgs(u256, i160, 0);
+            try testArgs(i512, i160, -1 << 159);
+            try testArgs(i512, i160, -1);
+            try testArgs(i512, i160, 0);
+            try testArgs(u512, i160, -1 << 159);
+            try testArgs(u512, i160, -1);
+            try testArgs(u512, i160, 0);
+            try testArgs(i1024, i160, -1 << 159);
+            try testArgs(i1024, i160, -1);
+            try testArgs(i1024, i160, 0);
+            try testArgs(u1024, i160, -1 << 159);
+            try testArgs(u1024, i160, -1);
+            try testArgs(u1024, i160, 0);
+            try testArgs(i8, u160, 0);
+            try testArgs(i8, u160, 1 << 0);
+            try testArgs(i8, u160, 1 << 159);
+            try testArgs(u8, u160, 0);
+            try testArgs(u8, u160, 1 << 0);
+            try testArgs(u8, u160, 1 << 159);
+            try testArgs(i16, u160, 0);
+            try testArgs(i16, u160, 1 << 0);
+            try testArgs(i16, u160, 1 << 159);
+            try testArgs(u16, u160, 0);
+            try testArgs(u16, u160, 1 << 0);
+            try testArgs(u16, u160, 1 << 159);
+            try testArgs(i32, u160, 0);
+            try testArgs(i32, u160, 1 << 0);
+            try testArgs(i32, u160, 1 << 159);
+            try testArgs(u32, u160, 0);
+            try testArgs(u32, u160, 1 << 0);
+            try testArgs(u32, u160, 1 << 159);
+            try testArgs(i64, u160, 0);
+            try testArgs(i64, u160, 1 << 0);
+            try testArgs(i64, u160, 1 << 159);
+            try testArgs(u64, u160, 0);
+            try testArgs(u64, u160, 1 << 0);
+            try testArgs(u64, u160, 1 << 159);
+            try testArgs(i128, u160, 0);
+            try testArgs(i128, u160, 1 << 0);
+            try testArgs(i128, u160, 1 << 159);
+            try testArgs(u128, u160, 0);
+            try testArgs(u128, u160, 1 << 0);
+            try testArgs(u128, u160, 1 << 159);
+            try testArgs(i256, u160, 0);
+            try testArgs(i256, u160, 1 << 0);
+            try testArgs(i256, u160, 1 << 159);
+            try testArgs(u256, u160, 0);
+            try testArgs(u256, u160, 1 << 0);
+            try testArgs(u256, u160, 1 << 159);
+            try testArgs(i512, u160, 0);
+            try testArgs(i512, u160, 1 << 0);
+            try testArgs(i512, u160, 1 << 159);
+            try testArgs(u512, u160, 0);
+            try testArgs(u512, u160, 1 << 0);
+            try testArgs(u512, u160, 1 << 159);
+            try testArgs(i1024, u160, 0);
+            try testArgs(i1024, u160, 1 << 0);
+            try testArgs(i1024, u160, 1 << 159);
+            try testArgs(u1024, u160, 0);
+            try testArgs(u1024, u160, 1 << 0);
+            try testArgs(u1024, u160, 1 << 159);
+
+            try testArgs(i8, i161, -1 << 160);
+            try testArgs(i8, i161, -1);
+            try testArgs(i8, i161, 0);
+            try testArgs(u8, i161, -1 << 160);
+            try testArgs(u8, i161, -1);
+            try testArgs(u8, i161, 0);
+            try testArgs(i16, i161, -1 << 160);
+            try testArgs(i16, i161, -1);
+            try testArgs(i16, i161, 0);
+            try testArgs(u16, i161, -1 << 160);
+            try testArgs(u16, i161, -1);
+            try testArgs(u16, i161, 0);
+            try testArgs(i32, i161, -1 << 160);
+            try testArgs(i32, i161, -1);
+            try testArgs(i32, i161, 0);
+            try testArgs(u32, i161, -1 << 160);
+            try testArgs(u32, i161, -1);
+            try testArgs(u32, i161, 0);
+            try testArgs(i64, i161, -1 << 160);
+            try testArgs(i64, i161, -1);
+            try testArgs(i64, i161, 0);
+            try testArgs(u64, i161, -1 << 160);
+            try testArgs(u64, i161, -1);
+            try testArgs(u64, i161, 0);
+            try testArgs(i128, i161, -1 << 160);
+            try testArgs(i128, i161, -1);
+            try testArgs(i128, i161, 0);
+            try testArgs(u128, i161, -1 << 160);
+            try testArgs(u128, i161, -1);
+            try testArgs(u128, i161, 0);
+            try testArgs(i256, i161, -1 << 160);
+            try testArgs(i256, i161, -1);
+            try testArgs(i256, i161, 0);
+            try testArgs(u256, i161, -1 << 160);
+            try testArgs(u256, i161, -1);
+            try testArgs(u256, i161, 0);
+            try testArgs(i512, i161, -1 << 160);
+            try testArgs(i512, i161, -1);
+            try testArgs(i512, i161, 0);
+            try testArgs(u512, i161, -1 << 160);
+            try testArgs(u512, i161, -1);
+            try testArgs(u512, i161, 0);
+            try testArgs(i1024, i161, -1 << 160);
+            try testArgs(i1024, i161, -1);
+            try testArgs(i1024, i161, 0);
+            try testArgs(u1024, i161, -1 << 160);
+            try testArgs(u1024, i161, -1);
+            try testArgs(u1024, i161, 0);
+            try testArgs(i8, u161, 0);
+            try testArgs(i8, u161, 1 << 0);
+            try testArgs(i8, u161, 1 << 160);
+            try testArgs(u8, u161, 0);
+            try testArgs(u8, u161, 1 << 0);
+            try testArgs(u8, u161, 1 << 160);
+            try testArgs(i16, u161, 0);
+            try testArgs(i16, u161, 1 << 0);
+            try testArgs(i16, u161, 1 << 160);
+            try testArgs(u16, u161, 0);
+            try testArgs(u16, u161, 1 << 0);
+            try testArgs(u16, u161, 1 << 160);
+            try testArgs(i32, u161, 0);
+            try testArgs(i32, u161, 1 << 0);
+            try testArgs(i32, u161, 1 << 160);
+            try testArgs(u32, u161, 0);
+            try testArgs(u32, u161, 1 << 0);
+            try testArgs(u32, u161, 1 << 160);
+            try testArgs(i64, u161, 0);
+            try testArgs(i64, u161, 1 << 0);
+            try testArgs(i64, u161, 1 << 160);
+            try testArgs(u64, u161, 0);
+            try testArgs(u64, u161, 1 << 0);
+            try testArgs(u64, u161, 1 << 160);
+            try testArgs(i128, u161, 0);
+            try testArgs(i128, u161, 1 << 0);
+            try testArgs(i128, u161, 1 << 160);
+            try testArgs(u128, u161, 0);
+            try testArgs(u128, u161, 1 << 0);
+            try testArgs(u128, u161, 1 << 160);
+            try testArgs(i256, u161, 0);
+            try testArgs(i256, u161, 1 << 0);
+            try testArgs(i256, u161, 1 << 160);
+            try testArgs(u256, u161, 0);
+            try testArgs(u256, u161, 1 << 0);
+            try testArgs(u256, u161, 1 << 160);
+            try testArgs(i512, u161, 0);
+            try testArgs(i512, u161, 1 << 0);
+            try testArgs(i512, u161, 1 << 160);
+            try testArgs(u512, u161, 0);
+            try testArgs(u512, u161, 1 << 0);
+            try testArgs(u512, u161, 1 << 160);
+            try testArgs(i1024, u161, 0);
+            try testArgs(i1024, u161, 1 << 0);
+            try testArgs(i1024, u161, 1 << 160);
+            try testArgs(u1024, u161, 0);
+            try testArgs(u1024, u161, 1 << 0);
+            try testArgs(u1024, u161, 1 << 160);
+
+            try testArgs(i8, i191, -1 << 190);
+            try testArgs(i8, i191, -1);
+            try testArgs(i8, i191, 0);
+            try testArgs(u8, i191, -1 << 190);
+            try testArgs(u8, i191, -1);
+            try testArgs(u8, i191, 0);
+            try testArgs(i16, i191, -1 << 190);
+            try testArgs(i16, i191, -1);
+            try testArgs(i16, i191, 0);
+            try testArgs(u16, i191, -1 << 190);
+            try testArgs(u16, i191, -1);
+            try testArgs(u16, i191, 0);
+            try testArgs(i32, i191, -1 << 190);
+            try testArgs(i32, i191, -1);
+            try testArgs(i32, i191, 0);
+            try testArgs(u32, i191, -1 << 190);
+            try testArgs(u32, i191, -1);
+            try testArgs(u32, i191, 0);
+            try testArgs(i64, i191, -1 << 190);
+            try testArgs(i64, i191, -1);
+            try testArgs(i64, i191, 0);
+            try testArgs(u64, i191, -1 << 190);
+            try testArgs(u64, i191, -1);
+            try testArgs(u64, i191, 0);
+            try testArgs(i128, i191, -1 << 190);
+            try testArgs(i128, i191, -1);
+            try testArgs(i128, i191, 0);
+            try testArgs(u128, i191, -1 << 190);
+            try testArgs(u128, i191, -1);
+            try testArgs(u128, i191, 0);
+            try testArgs(i256, i191, -1 << 190);
+            try testArgs(i256, i191, -1);
+            try testArgs(i256, i191, 0);
+            try testArgs(u256, i191, -1 << 190);
+            try testArgs(u256, i191, -1);
+            try testArgs(u256, i191, 0);
+            try testArgs(i512, i191, -1 << 190);
+            try testArgs(i512, i191, -1);
+            try testArgs(i512, i191, 0);
+            try testArgs(u512, i191, -1 << 190);
+            try testArgs(u512, i191, -1);
+            try testArgs(u512, i191, 0);
+            try testArgs(i1024, i191, -1 << 190);
+            try testArgs(i1024, i191, -1);
+            try testArgs(i1024, i191, 0);
+            try testArgs(u1024, i191, -1 << 190);
+            try testArgs(u1024, i191, -1);
+            try testArgs(u1024, i191, 0);
+            try testArgs(i8, u191, 0);
+            try testArgs(i8, u191, 1 << 0);
+            try testArgs(i8, u191, 1 << 190);
+            try testArgs(u8, u191, 0);
+            try testArgs(u8, u191, 1 << 0);
+            try testArgs(u8, u191, 1 << 190);
+            try testArgs(i16, u191, 0);
+            try testArgs(i16, u191, 1 << 0);
+            try testArgs(i16, u191, 1 << 190);
+            try testArgs(u16, u191, 0);
+            try testArgs(u16, u191, 1 << 0);
+            try testArgs(u16, u191, 1 << 190);
+            try testArgs(i32, u191, 0);
+            try testArgs(i32, u191, 1 << 0);
+            try testArgs(i32, u191, 1 << 190);
+            try testArgs(u32, u191, 0);
+            try testArgs(u32, u191, 1 << 0);
+            try testArgs(u32, u191, 1 << 190);
+            try testArgs(i64, u191, 0);
+            try testArgs(i64, u191, 1 << 0);
+            try testArgs(i64, u191, 1 << 190);
+            try testArgs(u64, u191, 0);
+            try testArgs(u64, u191, 1 << 0);
+            try testArgs(u64, u191, 1 << 190);
+            try testArgs(i128, u191, 0);
+            try testArgs(i128, u191, 1 << 0);
+            try testArgs(i128, u191, 1 << 190);
+            try testArgs(u128, u191, 0);
+            try testArgs(u128, u191, 1 << 0);
+            try testArgs(u128, u191, 1 << 190);
+            try testArgs(i256, u191, 0);
+            try testArgs(i256, u191, 1 << 0);
+            try testArgs(i256, u191, 1 << 190);
+            try testArgs(u256, u191, 0);
+            try testArgs(u256, u191, 1 << 0);
+            try testArgs(u256, u191, 1 << 190);
+            try testArgs(i512, u191, 0);
+            try testArgs(i512, u191, 1 << 0);
+            try testArgs(i512, u191, 1 << 190);
+            try testArgs(u512, u191, 0);
+            try testArgs(u512, u191, 1 << 0);
+            try testArgs(u512, u191, 1 << 190);
+            try testArgs(i1024, u191, 0);
+            try testArgs(i1024, u191, 1 << 0);
+            try testArgs(i1024, u191, 1 << 190);
+            try testArgs(u1024, u191, 0);
+            try testArgs(u1024, u191, 1 << 0);
+            try testArgs(u1024, u191, 1 << 190);
+
+            try testArgs(i8, i192, -1 << 191);
+            try testArgs(i8, i192, -1);
+            try testArgs(i8, i192, 0);
+            try testArgs(u8, i192, -1 << 191);
+            try testArgs(u8, i192, -1);
+            try testArgs(u8, i192, 0);
+            try testArgs(i16, i192, -1 << 191);
+            try testArgs(i16, i192, -1);
+            try testArgs(i16, i192, 0);
+            try testArgs(u16, i192, -1 << 191);
+            try testArgs(u16, i192, -1);
+            try testArgs(u16, i192, 0);
+            try testArgs(i32, i192, -1 << 191);
+            try testArgs(i32, i192, -1);
+            try testArgs(i32, i192, 0);
+            try testArgs(u32, i192, -1 << 191);
+            try testArgs(u32, i192, -1);
+            try testArgs(u32, i192, 0);
+            try testArgs(i64, i192, -1 << 191);
+            try testArgs(i64, i192, -1);
+            try testArgs(i64, i192, 0);
+            try testArgs(u64, i192, -1 << 191);
+            try testArgs(u64, i192, -1);
+            try testArgs(u64, i192, 0);
+            try testArgs(i128, i192, -1 << 191);
+            try testArgs(i128, i192, -1);
+            try testArgs(i128, i192, 0);
+            try testArgs(u128, i192, -1 << 191);
+            try testArgs(u128, i192, -1);
+            try testArgs(u128, i192, 0);
+            try testArgs(i256, i192, -1 << 191);
+            try testArgs(i256, i192, -1);
+            try testArgs(i256, i192, 0);
+            try testArgs(u256, i192, -1 << 191);
+            try testArgs(u256, i192, -1);
+            try testArgs(u256, i192, 0);
+            try testArgs(i512, i192, -1 << 191);
+            try testArgs(i512, i192, -1);
+            try testArgs(i512, i192, 0);
+            try testArgs(u512, i192, -1 << 191);
+            try testArgs(u512, i192, -1);
+            try testArgs(u512, i192, 0);
+            try testArgs(i1024, i192, -1 << 191);
+            try testArgs(i1024, i192, -1);
+            try testArgs(i1024, i192, 0);
+            try testArgs(u1024, i192, -1 << 191);
+            try testArgs(u1024, i192, -1);
+            try testArgs(u1024, i192, 0);
+            try testArgs(i8, u192, 0);
+            try testArgs(i8, u192, 1 << 0);
+            try testArgs(i8, u192, 1 << 191);
+            try testArgs(u8, u192, 0);
+            try testArgs(u8, u192, 1 << 0);
+            try testArgs(u8, u192, 1 << 191);
+            try testArgs(i16, u192, 0);
+            try testArgs(i16, u192, 1 << 0);
+            try testArgs(i16, u192, 1 << 191);
+            try testArgs(u16, u192, 0);
+            try testArgs(u16, u192, 1 << 0);
+            try testArgs(u16, u192, 1 << 191);
+            try testArgs(i32, u192, 0);
+            try testArgs(i32, u192, 1 << 0);
+            try testArgs(i32, u192, 1 << 191);
+            try testArgs(u32, u192, 0);
+            try testArgs(u32, u192, 1 << 0);
+            try testArgs(u32, u192, 1 << 191);
+            try testArgs(i64, u192, 0);
+            try testArgs(i64, u192, 1 << 0);
+            try testArgs(i64, u192, 1 << 191);
+            try testArgs(u64, u192, 0);
+            try testArgs(u64, u192, 1 << 0);
+            try testArgs(u64, u192, 1 << 191);
+            try testArgs(i128, u192, 0);
+            try testArgs(i128, u192, 1 << 0);
+            try testArgs(i128, u192, 1 << 191);
+            try testArgs(u128, u192, 0);
+            try testArgs(u128, u192, 1 << 0);
+            try testArgs(u128, u192, 1 << 191);
+            try testArgs(i256, u192, 0);
+            try testArgs(i256, u192, 1 << 0);
+            try testArgs(i256, u192, 1 << 191);
+            try testArgs(u256, u192, 0);
+            try testArgs(u256, u192, 1 << 0);
+            try testArgs(u256, u192, 1 << 191);
+            try testArgs(i512, u192, 0);
+            try testArgs(i512, u192, 1 << 0);
+            try testArgs(i512, u192, 1 << 191);
+            try testArgs(u512, u192, 0);
+            try testArgs(u512, u192, 1 << 0);
+            try testArgs(u512, u192, 1 << 191);
+            try testArgs(i1024, u192, 0);
+            try testArgs(i1024, u192, 1 << 0);
+            try testArgs(i1024, u192, 1 << 191);
+            try testArgs(u1024, u192, 0);
+            try testArgs(u1024, u192, 1 << 0);
+            try testArgs(u1024, u192, 1 << 191);
+
+            try testArgs(i8, i193, -1 << 192);
+            try testArgs(i8, i193, -1);
+            try testArgs(i8, i193, 0);
+            try testArgs(u8, i193, -1 << 192);
+            try testArgs(u8, i193, -1);
+            try testArgs(u8, i193, 0);
+            try testArgs(i16, i193, -1 << 192);
+            try testArgs(i16, i193, -1);
+            try testArgs(i16, i193, 0);
+            try testArgs(u16, i193, -1 << 192);
+            try testArgs(u16, i193, -1);
+            try testArgs(u16, i193, 0);
+            try testArgs(i32, i193, -1 << 192);
+            try testArgs(i32, i193, -1);
+            try testArgs(i32, i193, 0);
+            try testArgs(u32, i193, -1 << 192);
+            try testArgs(u32, i193, -1);
+            try testArgs(u32, i193, 0);
+            try testArgs(i64, i193, -1 << 192);
+            try testArgs(i64, i193, -1);
+            try testArgs(i64, i193, 0);
+            try testArgs(u64, i193, -1 << 192);
+            try testArgs(u64, i193, -1);
+            try testArgs(u64, i193, 0);
+            try testArgs(i128, i193, -1 << 192);
+            try testArgs(i128, i193, -1);
+            try testArgs(i128, i193, 0);
+            try testArgs(u128, i193, -1 << 192);
+            try testArgs(u128, i193, -1);
+            try testArgs(u128, i193, 0);
+            try testArgs(i256, i193, -1 << 192);
+            try testArgs(i256, i193, -1);
+            try testArgs(i256, i193, 0);
+            try testArgs(u256, i193, -1 << 192);
+            try testArgs(u256, i193, -1);
+            try testArgs(u256, i193, 0);
+            try testArgs(i512, i193, -1 << 192);
+            try testArgs(i512, i193, -1);
+            try testArgs(i512, i193, 0);
+            try testArgs(u512, i193, -1 << 192);
+            try testArgs(u512, i193, -1);
+            try testArgs(u512, i193, 0);
+            try testArgs(i1024, i193, -1 << 192);
+            try testArgs(i1024, i193, -1);
+            try testArgs(i1024, i193, 0);
+            try testArgs(u1024, i193, -1 << 192);
+            try testArgs(u1024, i193, -1);
+            try testArgs(u1024, i193, 0);
+            try testArgs(i8, u193, 0);
+            try testArgs(i8, u193, 1 << 0);
+            try testArgs(i8, u193, 1 << 192);
+            try testArgs(u8, u193, 0);
+            try testArgs(u8, u193, 1 << 0);
+            try testArgs(u8, u193, 1 << 192);
+            try testArgs(i16, u193, 0);
+            try testArgs(i16, u193, 1 << 0);
+            try testArgs(i16, u193, 1 << 192);
+            try testArgs(u16, u193, 0);
+            try testArgs(u16, u193, 1 << 0);
+            try testArgs(u16, u193, 1 << 192);
+            try testArgs(i32, u193, 0);
+            try testArgs(i32, u193, 1 << 0);
+            try testArgs(i32, u193, 1 << 192);
+            try testArgs(u32, u193, 0);
+            try testArgs(u32, u193, 1 << 0);
+            try testArgs(u32, u193, 1 << 192);
+            try testArgs(i64, u193, 0);
+            try testArgs(i64, u193, 1 << 0);
+            try testArgs(i64, u193, 1 << 192);
+            try testArgs(u64, u193, 0);
+            try testArgs(u64, u193, 1 << 0);
+            try testArgs(u64, u193, 1 << 192);
+            try testArgs(i128, u193, 0);
+            try testArgs(i128, u193, 1 << 0);
+            try testArgs(i128, u193, 1 << 192);
+            try testArgs(u128, u193, 0);
+            try testArgs(u128, u193, 1 << 0);
+            try testArgs(u128, u193, 1 << 192);
+            try testArgs(i256, u193, 0);
+            try testArgs(i256, u193, 1 << 0);
+            try testArgs(i256, u193, 1 << 192);
+            try testArgs(u256, u193, 0);
+            try testArgs(u256, u193, 1 << 0);
+            try testArgs(u256, u193, 1 << 192);
+            try testArgs(i512, u193, 0);
+            try testArgs(i512, u193, 1 << 0);
+            try testArgs(i512, u193, 1 << 192);
+            try testArgs(u512, u193, 0);
+            try testArgs(u512, u193, 1 << 0);
+            try testArgs(u512, u193, 1 << 192);
+            try testArgs(i1024, u193, 0);
+            try testArgs(i1024, u193, 1 << 0);
+            try testArgs(i1024, u193, 1 << 192);
+            try testArgs(u1024, u193, 0);
+            try testArgs(u1024, u193, 1 << 0);
+            try testArgs(u1024, u193, 1 << 192);
+
+            try testArgs(i8, i223, -1 << 222);
+            try testArgs(i8, i223, -1);
+            try testArgs(i8, i223, 0);
+            try testArgs(u8, i223, -1 << 222);
+            try testArgs(u8, i223, -1);
+            try testArgs(u8, i223, 0);
+            try testArgs(i16, i223, -1 << 222);
+            try testArgs(i16, i223, -1);
+            try testArgs(i16, i223, 0);
+            try testArgs(u16, i223, -1 << 222);
+            try testArgs(u16, i223, -1);
+            try testArgs(u16, i223, 0);
+            try testArgs(i32, i223, -1 << 222);
+            try testArgs(i32, i223, -1);
+            try testArgs(i32, i223, 0);
+            try testArgs(u32, i223, -1 << 222);
+            try testArgs(u32, i223, -1);
+            try testArgs(u32, i223, 0);
+            try testArgs(i64, i223, -1 << 222);
+            try testArgs(i64, i223, -1);
+            try testArgs(i64, i223, 0);
+            try testArgs(u64, i223, -1 << 222);
+            try testArgs(u64, i223, -1);
+            try testArgs(u64, i223, 0);
+            try testArgs(i128, i223, -1 << 222);
+            try testArgs(i128, i223, -1);
+            try testArgs(i128, i223, 0);
+            try testArgs(u128, i223, -1 << 222);
+            try testArgs(u128, i223, -1);
+            try testArgs(u128, i223, 0);
+            try testArgs(i256, i223, -1 << 222);
+            try testArgs(i256, i223, -1);
+            try testArgs(i256, i223, 0);
+            try testArgs(u256, i223, -1 << 222);
+            try testArgs(u256, i223, -1);
+            try testArgs(u256, i223, 0);
+            try testArgs(i512, i223, -1 << 222);
+            try testArgs(i512, i223, -1);
+            try testArgs(i512, i223, 0);
+            try testArgs(u512, i223, -1 << 222);
+            try testArgs(u512, i223, -1);
+            try testArgs(u512, i223, 0);
+            try testArgs(i1024, i223, -1 << 222);
+            try testArgs(i1024, i223, -1);
+            try testArgs(i1024, i223, 0);
+            try testArgs(u1024, i223, -1 << 222);
+            try testArgs(u1024, i223, -1);
+            try testArgs(u1024, i223, 0);
+            try testArgs(i8, u223, 0);
+            try testArgs(i8, u223, 1 << 0);
+            try testArgs(i8, u223, 1 << 222);
+            try testArgs(u8, u223, 0);
+            try testArgs(u8, u223, 1 << 0);
+            try testArgs(u8, u223, 1 << 222);
+            try testArgs(i16, u223, 0);
+            try testArgs(i16, u223, 1 << 0);
+            try testArgs(i16, u223, 1 << 222);
+            try testArgs(u16, u223, 0);
+            try testArgs(u16, u223, 1 << 0);
+            try testArgs(u16, u223, 1 << 222);
+            try testArgs(i32, u223, 0);
+            try testArgs(i32, u223, 1 << 0);
+            try testArgs(i32, u223, 1 << 222);
+            try testArgs(u32, u223, 0);
+            try testArgs(u32, u223, 1 << 0);
+            try testArgs(u32, u223, 1 << 222);
+            try testArgs(i64, u223, 0);
+            try testArgs(i64, u223, 1 << 0);
+            try testArgs(i64, u223, 1 << 222);
+            try testArgs(u64, u223, 0);
+            try testArgs(u64, u223, 1 << 0);
+            try testArgs(u64, u223, 1 << 222);
+            try testArgs(i128, u223, 0);
+            try testArgs(i128, u223, 1 << 0);
+            try testArgs(i128, u223, 1 << 222);
+            try testArgs(u128, u223, 0);
+            try testArgs(u128, u223, 1 << 0);
+            try testArgs(u128, u223, 1 << 222);
+            try testArgs(i256, u223, 0);
+            try testArgs(i256, u223, 1 << 0);
+            try testArgs(i256, u223, 1 << 222);
+            try testArgs(u256, u223, 0);
+            try testArgs(u256, u223, 1 << 0);
+            try testArgs(u256, u223, 1 << 222);
+            try testArgs(i512, u223, 0);
+            try testArgs(i512, u223, 1 << 0);
+            try testArgs(i512, u223, 1 << 222);
+            try testArgs(u512, u223, 0);
+            try testArgs(u512, u223, 1 << 0);
+            try testArgs(u512, u223, 1 << 222);
+            try testArgs(i1024, u223, 0);
+            try testArgs(i1024, u223, 1 << 0);
+            try testArgs(i1024, u223, 1 << 222);
+            try testArgs(u1024, u223, 0);
+            try testArgs(u1024, u223, 1 << 0);
+            try testArgs(u1024, u223, 1 << 222);
+
+            try testArgs(i8, i224, -1 << 223);
+            try testArgs(i8, i224, -1);
+            try testArgs(i8, i224, 0);
+            try testArgs(u8, i224, -1 << 223);
+            try testArgs(u8, i224, -1);
+            try testArgs(u8, i224, 0);
+            try testArgs(i16, i224, -1 << 223);
+            try testArgs(i16, i224, -1);
+            try testArgs(i16, i224, 0);
+            try testArgs(u16, i224, -1 << 223);
+            try testArgs(u16, i224, -1);
+            try testArgs(u16, i224, 0);
+            try testArgs(i32, i224, -1 << 223);
+            try testArgs(i32, i224, -1);
+            try testArgs(i32, i224, 0);
+            try testArgs(u32, i224, -1 << 223);
+            try testArgs(u32, i224, -1);
+            try testArgs(u32, i224, 0);
+            try testArgs(i64, i224, -1 << 223);
+            try testArgs(i64, i224, -1);
+            try testArgs(i64, i224, 0);
+            try testArgs(u64, i224, -1 << 223);
+            try testArgs(u64, i224, -1);
+            try testArgs(u64, i224, 0);
+            try testArgs(i128, i224, -1 << 223);
+            try testArgs(i128, i224, -1);
+            try testArgs(i128, i224, 0);
+            try testArgs(u128, i224, -1 << 223);
+            try testArgs(u128, i224, -1);
+            try testArgs(u128, i224, 0);
+            try testArgs(i256, i224, -1 << 223);
+            try testArgs(i256, i224, -1);
+            try testArgs(i256, i224, 0);
+            try testArgs(u256, i224, -1 << 223);
+            try testArgs(u256, i224, -1);
+            try testArgs(u256, i224, 0);
+            try testArgs(i512, i224, -1 << 223);
+            try testArgs(i512, i224, -1);
+            try testArgs(i512, i224, 0);
+            try testArgs(u512, i224, -1 << 223);
+            try testArgs(u512, i224, -1);
+            try testArgs(u512, i224, 0);
+            try testArgs(i1024, i224, -1 << 223);
+            try testArgs(i1024, i224, -1);
+            try testArgs(i1024, i224, 0);
+            try testArgs(u1024, i224, -1 << 223);
+            try testArgs(u1024, i224, -1);
+            try testArgs(u1024, i224, 0);
+            try testArgs(i8, u224, 0);
+            try testArgs(i8, u224, 1 << 0);
+            try testArgs(i8, u224, 1 << 223);
+            try testArgs(u8, u224, 0);
+            try testArgs(u8, u224, 1 << 0);
+            try testArgs(u8, u224, 1 << 223);
+            try testArgs(i16, u224, 0);
+            try testArgs(i16, u224, 1 << 0);
+            try testArgs(i16, u224, 1 << 223);
+            try testArgs(u16, u224, 0);
+            try testArgs(u16, u224, 1 << 0);
+            try testArgs(u16, u224, 1 << 223);
+            try testArgs(i32, u224, 0);
+            try testArgs(i32, u224, 1 << 0);
+            try testArgs(i32, u224, 1 << 223);
+            try testArgs(u32, u224, 0);
+            try testArgs(u32, u224, 1 << 0);
+            try testArgs(u32, u224, 1 << 223);
+            try testArgs(i64, u224, 0);
+            try testArgs(i64, u224, 1 << 0);
+            try testArgs(i64, u224, 1 << 223);
+            try testArgs(u64, u224, 0);
+            try testArgs(u64, u224, 1 << 0);
+            try testArgs(u64, u224, 1 << 223);
+            try testArgs(i128, u224, 0);
+            try testArgs(i128, u224, 1 << 0);
+            try testArgs(i128, u224, 1 << 223);
+            try testArgs(u128, u224, 0);
+            try testArgs(u128, u224, 1 << 0);
+            try testArgs(u128, u224, 1 << 223);
+            try testArgs(i256, u224, 0);
+            try testArgs(i256, u224, 1 << 0);
+            try testArgs(i256, u224, 1 << 223);
+            try testArgs(u256, u224, 0);
+            try testArgs(u256, u224, 1 << 0);
+            try testArgs(u256, u224, 1 << 223);
+            try testArgs(i512, u224, 0);
+            try testArgs(i512, u224, 1 << 0);
+            try testArgs(i512, u224, 1 << 223);
+            try testArgs(u512, u224, 0);
+            try testArgs(u512, u224, 1 << 0);
+            try testArgs(u512, u224, 1 << 223);
+            try testArgs(i1024, u224, 0);
+            try testArgs(i1024, u224, 1 << 0);
+            try testArgs(i1024, u224, 1 << 223);
+            try testArgs(u1024, u224, 0);
+            try testArgs(u1024, u224, 1 << 0);
+            try testArgs(u1024, u224, 1 << 223);
+
+            try testArgs(i8, i225, -1 << 224);
+            try testArgs(i8, i225, -1);
+            try testArgs(i8, i225, 0);
+            try testArgs(u8, i225, -1 << 224);
+            try testArgs(u8, i225, -1);
+            try testArgs(u8, i225, 0);
+            try testArgs(i16, i225, -1 << 224);
+            try testArgs(i16, i225, -1);
+            try testArgs(i16, i225, 0);
+            try testArgs(u16, i225, -1 << 224);
+            try testArgs(u16, i225, -1);
+            try testArgs(u16, i225, 0);
+            try testArgs(i32, i225, -1 << 224);
+            try testArgs(i32, i225, -1);
+            try testArgs(i32, i225, 0);
+            try testArgs(u32, i225, -1 << 224);
+            try testArgs(u32, i225, -1);
+            try testArgs(u32, i225, 0);
+            try testArgs(i64, i225, -1 << 224);
+            try testArgs(i64, i225, -1);
+            try testArgs(i64, i225, 0);
+            try testArgs(u64, i225, -1 << 224);
+            try testArgs(u64, i225, -1);
+            try testArgs(u64, i225, 0);
+            try testArgs(i128, i225, -1 << 224);
+            try testArgs(i128, i225, -1);
+            try testArgs(i128, i225, 0);
+            try testArgs(u128, i225, -1 << 224);
+            try testArgs(u128, i225, -1);
+            try testArgs(u128, i225, 0);
+            try testArgs(i256, i225, -1 << 224);
+            try testArgs(i256, i225, -1);
+            try testArgs(i256, i225, 0);
+            try testArgs(u256, i225, -1 << 224);
+            try testArgs(u256, i225, -1);
+            try testArgs(u256, i225, 0);
+            try testArgs(i512, i225, -1 << 224);
+            try testArgs(i512, i225, -1);
+            try testArgs(i512, i225, 0);
+            try testArgs(u512, i225, -1 << 224);
+            try testArgs(u512, i225, -1);
+            try testArgs(u512, i225, 0);
+            try testArgs(i1024, i225, -1 << 224);
+            try testArgs(i1024, i225, -1);
+            try testArgs(i1024, i225, 0);
+            try testArgs(u1024, i225, -1 << 224);
+            try testArgs(u1024, i225, -1);
+            try testArgs(u1024, i225, 0);
+            try testArgs(i8, u225, 0);
+            try testArgs(i8, u225, 1 << 0);
+            try testArgs(i8, u225, 1 << 224);
+            try testArgs(u8, u225, 0);
+            try testArgs(u8, u225, 1 << 0);
+            try testArgs(u8, u225, 1 << 224);
+            try testArgs(i16, u225, 0);
+            try testArgs(i16, u225, 1 << 0);
+            try testArgs(i16, u225, 1 << 224);
+            try testArgs(u16, u225, 0);
+            try testArgs(u16, u225, 1 << 0);
+            try testArgs(u16, u225, 1 << 224);
+            try testArgs(i32, u225, 0);
+            try testArgs(i32, u225, 1 << 0);
+            try testArgs(i32, u225, 1 << 224);
+            try testArgs(u32, u225, 0);
+            try testArgs(u32, u225, 1 << 0);
+            try testArgs(u32, u225, 1 << 224);
+            try testArgs(i64, u225, 0);
+            try testArgs(i64, u225, 1 << 0);
+            try testArgs(i64, u225, 1 << 224);
+            try testArgs(u64, u225, 0);
+            try testArgs(u64, u225, 1 << 0);
+            try testArgs(u64, u225, 1 << 224);
+            try testArgs(i128, u225, 0);
+            try testArgs(i128, u225, 1 << 0);
+            try testArgs(i128, u225, 1 << 224);
+            try testArgs(u128, u225, 0);
+            try testArgs(u128, u225, 1 << 0);
+            try testArgs(u128, u225, 1 << 224);
+            try testArgs(i256, u225, 0);
+            try testArgs(i256, u225, 1 << 0);
+            try testArgs(i256, u225, 1 << 224);
+            try testArgs(u256, u225, 0);
+            try testArgs(u256, u225, 1 << 0);
+            try testArgs(u256, u225, 1 << 224);
+            try testArgs(i512, u225, 0);
+            try testArgs(i512, u225, 1 << 0);
+            try testArgs(i512, u225, 1 << 224);
+            try testArgs(u512, u225, 0);
+            try testArgs(u512, u225, 1 << 0);
+            try testArgs(u512, u225, 1 << 224);
+            try testArgs(i1024, u225, 0);
+            try testArgs(i1024, u225, 1 << 0);
+            try testArgs(i1024, u225, 1 << 224);
+            try testArgs(u1024, u225, 0);
+            try testArgs(u1024, u225, 1 << 0);
+            try testArgs(u1024, u225, 1 << 224);
+
+            try testArgs(i8, i255, -1 << 254);
+            try testArgs(i8, i255, -1);
+            try testArgs(i8, i255, 0);
+            try testArgs(u8, i255, -1 << 254);
+            try testArgs(u8, i255, -1);
+            try testArgs(u8, i255, 0);
+            try testArgs(i16, i255, -1 << 254);
+            try testArgs(i16, i255, -1);
+            try testArgs(i16, i255, 0);
+            try testArgs(u16, i255, -1 << 254);
+            try testArgs(u16, i255, -1);
+            try testArgs(u16, i255, 0);
+            try testArgs(i32, i255, -1 << 254);
+            try testArgs(i32, i255, -1);
+            try testArgs(i32, i255, 0);
+            try testArgs(u32, i255, -1 << 254);
+            try testArgs(u32, i255, -1);
+            try testArgs(u32, i255, 0);
+            try testArgs(i64, i255, -1 << 254);
+            try testArgs(i64, i255, -1);
+            try testArgs(i64, i255, 0);
+            try testArgs(u64, i255, -1 << 254);
+            try testArgs(u64, i255, -1);
+            try testArgs(u64, i255, 0);
+            try testArgs(i128, i255, -1 << 254);
+            try testArgs(i128, i255, -1);
+            try testArgs(i128, i255, 0);
+            try testArgs(u128, i255, -1 << 254);
+            try testArgs(u128, i255, -1);
+            try testArgs(u128, i255, 0);
+            try testArgs(i256, i255, -1 << 254);
+            try testArgs(i256, i255, -1);
+            try testArgs(i256, i255, 0);
+            try testArgs(u256, i255, -1 << 254);
+            try testArgs(u256, i255, -1);
+            try testArgs(u256, i255, 0);
+            try testArgs(i512, i255, -1 << 254);
+            try testArgs(i512, i255, -1);
+            try testArgs(i512, i255, 0);
+            try testArgs(u512, i255, -1 << 254);
+            try testArgs(u512, i255, -1);
+            try testArgs(u512, i255, 0);
+            try testArgs(i1024, i255, -1 << 254);
+            try testArgs(i1024, i255, -1);
+            try testArgs(i1024, i255, 0);
+            try testArgs(u1024, i255, -1 << 254);
+            try testArgs(u1024, i255, -1);
+            try testArgs(u1024, i255, 0);
+            try testArgs(i8, u255, 0);
+            try testArgs(i8, u255, 1 << 0);
+            try testArgs(i8, u255, 1 << 254);
+            try testArgs(u8, u255, 0);
+            try testArgs(u8, u255, 1 << 0);
+            try testArgs(u8, u255, 1 << 254);
+            try testArgs(i16, u255, 0);
+            try testArgs(i16, u255, 1 << 0);
+            try testArgs(i16, u255, 1 << 254);
+            try testArgs(u16, u255, 0);
+            try testArgs(u16, u255, 1 << 0);
+            try testArgs(u16, u255, 1 << 254);
+            try testArgs(i32, u255, 0);
+            try testArgs(i32, u255, 1 << 0);
+            try testArgs(i32, u255, 1 << 254);
+            try testArgs(u32, u255, 0);
+            try testArgs(u32, u255, 1 << 0);
+            try testArgs(u32, u255, 1 << 254);
+            try testArgs(i64, u255, 0);
+            try testArgs(i64, u255, 1 << 0);
+            try testArgs(i64, u255, 1 << 254);
+            try testArgs(u64, u255, 0);
+            try testArgs(u64, u255, 1 << 0);
+            try testArgs(u64, u255, 1 << 254);
+            try testArgs(i128, u255, 0);
+            try testArgs(i128, u255, 1 << 0);
+            try testArgs(i128, u255, 1 << 254);
+            try testArgs(u128, u255, 0);
+            try testArgs(u128, u255, 1 << 0);
+            try testArgs(u128, u255, 1 << 254);
+            try testArgs(i256, u255, 0);
+            try testArgs(i256, u255, 1 << 0);
+            try testArgs(i256, u255, 1 << 254);
+            try testArgs(u256, u255, 0);
+            try testArgs(u256, u255, 1 << 0);
+            try testArgs(u256, u255, 1 << 254);
+            try testArgs(i512, u255, 0);
+            try testArgs(i512, u255, 1 << 0);
+            try testArgs(i512, u255, 1 << 254);
+            try testArgs(u512, u255, 0);
+            try testArgs(u512, u255, 1 << 0);
+            try testArgs(u512, u255, 1 << 254);
+            try testArgs(i1024, u255, 0);
+            try testArgs(i1024, u255, 1 << 0);
+            try testArgs(i1024, u255, 1 << 254);
+            try testArgs(u1024, u255, 0);
+            try testArgs(u1024, u255, 1 << 0);
+            try testArgs(u1024, u255, 1 << 254);
+
+            try testArgs(i8, i256, -1 << 255);
+            try testArgs(i8, i256, -1);
+            try testArgs(i8, i256, 0);
+            try testArgs(u8, i256, -1 << 255);
+            try testArgs(u8, i256, -1);
+            try testArgs(u8, i256, 0);
+            try testArgs(i16, i256, -1 << 255);
+            try testArgs(i16, i256, -1);
+            try testArgs(i16, i256, 0);
+            try testArgs(u16, i256, -1 << 255);
+            try testArgs(u16, i256, -1);
+            try testArgs(u16, i256, 0);
+            try testArgs(i32, i256, -1 << 255);
+            try testArgs(i32, i256, -1);
+            try testArgs(i32, i256, 0);
+            try testArgs(u32, i256, -1 << 255);
+            try testArgs(u32, i256, -1);
+            try testArgs(u32, i256, 0);
+            try testArgs(i64, i256, -1 << 255);
+            try testArgs(i64, i256, -1);
+            try testArgs(i64, i256, 0);
+            try testArgs(u64, i256, -1 << 255);
+            try testArgs(u64, i256, -1);
+            try testArgs(u64, i256, 0);
+            try testArgs(i128, i256, -1 << 255);
+            try testArgs(i128, i256, -1);
+            try testArgs(i128, i256, 0);
+            try testArgs(u128, i256, -1 << 255);
+            try testArgs(u128, i256, -1);
+            try testArgs(u128, i256, 0);
+            try testArgs(i256, i256, -1 << 255);
+            try testArgs(i256, i256, -1);
+            try testArgs(i256, i256, 0);
+            try testArgs(u256, i256, -1 << 255);
+            try testArgs(u256, i256, -1);
+            try testArgs(u256, i256, 0);
+            try testArgs(i512, i256, -1 << 255);
+            try testArgs(i512, i256, -1);
+            try testArgs(i512, i256, 0);
+            try testArgs(u512, i256, -1 << 255);
+            try testArgs(u512, i256, -1);
+            try testArgs(u512, i256, 0);
+            try testArgs(i1024, i256, -1 << 255);
+            try testArgs(i1024, i256, -1);
+            try testArgs(i1024, i256, 0);
+            try testArgs(u1024, i256, -1 << 255);
+            try testArgs(u1024, i256, -1);
+            try testArgs(u1024, i256, 0);
+            try testArgs(i8, u256, 0);
+            try testArgs(i8, u256, 1 << 0);
+            try testArgs(i8, u256, 1 << 255);
+            try testArgs(u8, u256, 0);
+            try testArgs(u8, u256, 1 << 0);
+            try testArgs(u8, u256, 1 << 255);
+            try testArgs(i16, u256, 0);
+            try testArgs(i16, u256, 1 << 0);
+            try testArgs(i16, u256, 1 << 255);
+            try testArgs(u16, u256, 0);
+            try testArgs(u16, u256, 1 << 0);
+            try testArgs(u16, u256, 1 << 255);
+            try testArgs(i32, u256, 0);
+            try testArgs(i32, u256, 1 << 0);
+            try testArgs(i32, u256, 1 << 255);
+            try testArgs(u32, u256, 0);
+            try testArgs(u32, u256, 1 << 0);
+            try testArgs(u32, u256, 1 << 255);
+            try testArgs(i64, u256, 0);
+            try testArgs(i64, u256, 1 << 0);
+            try testArgs(i64, u256, 1 << 255);
+            try testArgs(u64, u256, 0);
+            try testArgs(u64, u256, 1 << 0);
+            try testArgs(u64, u256, 1 << 255);
+            try testArgs(i128, u256, 0);
+            try testArgs(i128, u256, 1 << 0);
+            try testArgs(i128, u256, 1 << 255);
+            try testArgs(u128, u256, 0);
+            try testArgs(u128, u256, 1 << 0);
+            try testArgs(u128, u256, 1 << 255);
+            try testArgs(i256, u256, 0);
+            try testArgs(i256, u256, 1 << 0);
+            try testArgs(i256, u256, 1 << 255);
+            try testArgs(u256, u256, 0);
+            try testArgs(u256, u256, 1 << 0);
+            try testArgs(u256, u256, 1 << 255);
+            try testArgs(i512, u256, 0);
+            try testArgs(i512, u256, 1 << 0);
+            try testArgs(i512, u256, 1 << 255);
+            try testArgs(u512, u256, 0);
+            try testArgs(u512, u256, 1 << 0);
+            try testArgs(u512, u256, 1 << 255);
+            try testArgs(i1024, u256, 0);
+            try testArgs(i1024, u256, 1 << 0);
+            try testArgs(i1024, u256, 1 << 255);
+            try testArgs(u1024, u256, 0);
+            try testArgs(u1024, u256, 1 << 0);
+            try testArgs(u1024, u256, 1 << 255);
+
+            try testArgs(i8, i257, -1 << 256);
+            try testArgs(i8, i257, -1);
+            try testArgs(i8, i257, 0);
+            try testArgs(u8, i257, -1 << 256);
+            try testArgs(u8, i257, -1);
+            try testArgs(u8, i257, 0);
+            try testArgs(i16, i257, -1 << 256);
+            try testArgs(i16, i257, -1);
+            try testArgs(i16, i257, 0);
+            try testArgs(u16, i257, -1 << 256);
+            try testArgs(u16, i257, -1);
+            try testArgs(u16, i257, 0);
+            try testArgs(i32, i257, -1 << 256);
+            try testArgs(i32, i257, -1);
+            try testArgs(i32, i257, 0);
+            try testArgs(u32, i257, -1 << 256);
+            try testArgs(u32, i257, -1);
+            try testArgs(u32, i257, 0);
+            try testArgs(i64, i257, -1 << 256);
+            try testArgs(i64, i257, -1);
+            try testArgs(i64, i257, 0);
+            try testArgs(u64, i257, -1 << 256);
+            try testArgs(u64, i257, -1);
+            try testArgs(u64, i257, 0);
+            try testArgs(i128, i257, -1 << 256);
+            try testArgs(i128, i257, -1);
+            try testArgs(i128, i257, 0);
+            try testArgs(u128, i257, -1 << 256);
+            try testArgs(u128, i257, -1);
+            try testArgs(u128, i257, 0);
+            try testArgs(i256, i257, -1 << 256);
+            try testArgs(i256, i257, -1);
+            try testArgs(i256, i257, 0);
+            try testArgs(u256, i257, -1 << 256);
+            try testArgs(u256, i257, -1);
+            try testArgs(u256, i257, 0);
+            try testArgs(i512, i257, -1 << 256);
+            try testArgs(i512, i257, -1);
+            try testArgs(i512, i257, 0);
+            try testArgs(u512, i257, -1 << 256);
+            try testArgs(u512, i257, -1);
+            try testArgs(u512, i257, 0);
+            try testArgs(i1024, i257, -1 << 256);
+            try testArgs(i1024, i257, -1);
+            try testArgs(i1024, i257, 0);
+            try testArgs(u1024, i257, -1 << 256);
+            try testArgs(u1024, i257, -1);
+            try testArgs(u1024, i257, 0);
+            try testArgs(i8, u257, 0);
+            try testArgs(i8, u257, 1 << 0);
+            try testArgs(i8, u257, 1 << 256);
+            try testArgs(u8, u257, 0);
+            try testArgs(u8, u257, 1 << 0);
+            try testArgs(u8, u257, 1 << 256);
+            try testArgs(i16, u257, 0);
+            try testArgs(i16, u257, 1 << 0);
+            try testArgs(i16, u257, 1 << 256);
+            try testArgs(u16, u257, 0);
+            try testArgs(u16, u257, 1 << 0);
+            try testArgs(u16, u257, 1 << 256);
+            try testArgs(i32, u257, 0);
+            try testArgs(i32, u257, 1 << 0);
+            try testArgs(i32, u257, 1 << 256);
+            try testArgs(u32, u257, 0);
+            try testArgs(u32, u257, 1 << 0);
+            try testArgs(u32, u257, 1 << 256);
+            try testArgs(i64, u257, 0);
+            try testArgs(i64, u257, 1 << 0);
+            try testArgs(i64, u257, 1 << 256);
+            try testArgs(u64, u257, 0);
+            try testArgs(u64, u257, 1 << 0);
+            try testArgs(u64, u257, 1 << 256);
+            try testArgs(i128, u257, 0);
+            try testArgs(i128, u257, 1 << 0);
+            try testArgs(i128, u257, 1 << 256);
+            try testArgs(u128, u257, 0);
+            try testArgs(u128, u257, 1 << 0);
+            try testArgs(u128, u257, 1 << 256);
+            try testArgs(i256, u257, 0);
+            try testArgs(i256, u257, 1 << 0);
+            try testArgs(i256, u257, 1 << 256);
+            try testArgs(u256, u257, 0);
+            try testArgs(u256, u257, 1 << 0);
+            try testArgs(u256, u257, 1 << 256);
+            try testArgs(i512, u257, 0);
+            try testArgs(i512, u257, 1 << 0);
+            try testArgs(i512, u257, 1 << 256);
+            try testArgs(u512, u257, 0);
+            try testArgs(u512, u257, 1 << 0);
+            try testArgs(u512, u257, 1 << 256);
+            try testArgs(i1024, u257, 0);
+            try testArgs(i1024, u257, 1 << 0);
+            try testArgs(i1024, u257, 1 << 256);
+            try testArgs(u1024, u257, 0);
+            try testArgs(u1024, u257, 1 << 0);
+            try testArgs(u1024, u257, 1 << 256);
+
+            try testArgs(i8, i511, -1 << 510);
+            try testArgs(i8, i511, -1);
+            try testArgs(i8, i511, 0);
+            try testArgs(u8, i511, -1 << 510);
+            try testArgs(u8, i511, -1);
+            try testArgs(u8, i511, 0);
+            try testArgs(i16, i511, -1 << 510);
+            try testArgs(i16, i511, -1);
+            try testArgs(i16, i511, 0);
+            try testArgs(u16, i511, -1 << 510);
+            try testArgs(u16, i511, -1);
+            try testArgs(u16, i511, 0);
+            try testArgs(i32, i511, -1 << 510);
+            try testArgs(i32, i511, -1);
+            try testArgs(i32, i511, 0);
+            try testArgs(u32, i511, -1 << 510);
+            try testArgs(u32, i511, -1);
+            try testArgs(u32, i511, 0);
+            try testArgs(i64, i511, -1 << 510);
+            try testArgs(i64, i511, -1);
+            try testArgs(i64, i511, 0);
+            try testArgs(u64, i511, -1 << 510);
+            try testArgs(u64, i511, -1);
+            try testArgs(u64, i511, 0);
+            try testArgs(i128, i511, -1 << 510);
+            try testArgs(i128, i511, -1);
+            try testArgs(i128, i511, 0);
+            try testArgs(u128, i511, -1 << 510);
+            try testArgs(u128, i511, -1);
+            try testArgs(u128, i511, 0);
+            try testArgs(i256, i511, -1 << 510);
+            try testArgs(i256, i511, -1);
+            try testArgs(i256, i511, 0);
+            try testArgs(u256, i511, -1 << 510);
+            try testArgs(u256, i511, -1);
+            try testArgs(u256, i511, 0);
+            try testArgs(i512, i511, -1 << 510);
+            try testArgs(i512, i511, -1);
+            try testArgs(i512, i511, 0);
+            try testArgs(u512, i511, -1 << 510);
+            try testArgs(u512, i511, -1);
+            try testArgs(u512, i511, 0);
+            try testArgs(i1024, i511, -1 << 510);
+            try testArgs(i1024, i511, -1);
+            try testArgs(i1024, i511, 0);
+            try testArgs(u1024, i511, -1 << 510);
+            try testArgs(u1024, i511, -1);
+            try testArgs(u1024, i511, 0);
+            try testArgs(i8, u511, 0);
+            try testArgs(i8, u511, 1 << 0);
+            try testArgs(i8, u511, 1 << 510);
+            try testArgs(u8, u511, 0);
+            try testArgs(u8, u511, 1 << 0);
+            try testArgs(u8, u511, 1 << 510);
+            try testArgs(i16, u511, 0);
+            try testArgs(i16, u511, 1 << 0);
+            try testArgs(i16, u511, 1 << 510);
+            try testArgs(u16, u511, 0);
+            try testArgs(u16, u511, 1 << 0);
+            try testArgs(u16, u511, 1 << 510);
+            try testArgs(i32, u511, 0);
+            try testArgs(i32, u511, 1 << 0);
+            try testArgs(i32, u511, 1 << 510);
+            try testArgs(u32, u511, 0);
+            try testArgs(u32, u511, 1 << 0);
+            try testArgs(u32, u511, 1 << 510);
+            try testArgs(i64, u511, 0);
+            try testArgs(i64, u511, 1 << 0);
+            try testArgs(i64, u511, 1 << 510);
+            try testArgs(u64, u511, 0);
+            try testArgs(u64, u511, 1 << 0);
+            try testArgs(u64, u511, 1 << 510);
+            try testArgs(i128, u511, 0);
+            try testArgs(i128, u511, 1 << 0);
+            try testArgs(i128, u511, 1 << 510);
+            try testArgs(u128, u511, 0);
+            try testArgs(u128, u511, 1 << 0);
+            try testArgs(u128, u511, 1 << 510);
+            try testArgs(i256, u511, 0);
+            try testArgs(i256, u511, 1 << 0);
+            try testArgs(i256, u511, 1 << 510);
+            try testArgs(u256, u511, 0);
+            try testArgs(u256, u511, 1 << 0);
+            try testArgs(u256, u511, 1 << 510);
+            try testArgs(i512, u511, 0);
+            try testArgs(i512, u511, 1 << 0);
+            try testArgs(i512, u511, 1 << 510);
+            try testArgs(u512, u511, 0);
+            try testArgs(u512, u511, 1 << 0);
+            try testArgs(u512, u511, 1 << 510);
+            try testArgs(i1024, u511, 0);
+            try testArgs(i1024, u511, 1 << 0);
+            try testArgs(i1024, u511, 1 << 510);
+            try testArgs(u1024, u511, 0);
+            try testArgs(u1024, u511, 1 << 0);
+            try testArgs(u1024, u511, 1 << 510);
+
+            try testArgs(i8, i512, -1 << 511);
+            try testArgs(i8, i512, -1);
+            try testArgs(i8, i512, 0);
+            try testArgs(u8, i512, -1 << 511);
+            try testArgs(u8, i512, -1);
+            try testArgs(u8, i512, 0);
+            try testArgs(i16, i512, -1 << 511);
+            try testArgs(i16, i512, -1);
+            try testArgs(i16, i512, 0);
+            try testArgs(u16, i512, -1 << 511);
+            try testArgs(u16, i512, -1);
+            try testArgs(u16, i512, 0);
+            try testArgs(i32, i512, -1 << 511);
+            try testArgs(i32, i512, -1);
+            try testArgs(i32, i512, 0);
+            try testArgs(u32, i512, -1 << 511);
+            try testArgs(u32, i512, -1);
+            try testArgs(u32, i512, 0);
+            try testArgs(i64, i512, -1 << 511);
+            try testArgs(i64, i512, -1);
+            try testArgs(i64, i512, 0);
+            try testArgs(u64, i512, -1 << 511);
+            try testArgs(u64, i512, -1);
+            try testArgs(u64, i512, 0);
+            try testArgs(i128, i512, -1 << 511);
+            try testArgs(i128, i512, -1);
+            try testArgs(i128, i512, 0);
+            try testArgs(u128, i512, -1 << 511);
+            try testArgs(u128, i512, -1);
+            try testArgs(u128, i512, 0);
+            try testArgs(i256, i512, -1 << 511);
+            try testArgs(i256, i512, -1);
+            try testArgs(i256, i512, 0);
+            try testArgs(u256, i512, -1 << 511);
+            try testArgs(u256, i512, -1);
+            try testArgs(u256, i512, 0);
+            try testArgs(i512, i512, -1 << 511);
+            try testArgs(i512, i512, -1);
+            try testArgs(i512, i512, 0);
+            try testArgs(u512, i512, -1 << 511);
+            try testArgs(u512, i512, -1);
+            try testArgs(u512, i512, 0);
+            try testArgs(i1024, i512, -1 << 511);
+            try testArgs(i1024, i512, -1);
+            try testArgs(i1024, i512, 0);
+            try testArgs(u1024, i512, -1 << 511);
+            try testArgs(u1024, i512, -1);
+            try testArgs(u1024, i512, 0);
+            try testArgs(i8, u512, 0);
+            try testArgs(i8, u512, 1 << 0);
+            try testArgs(i8, u512, 1 << 511);
+            try testArgs(u8, u512, 0);
+            try testArgs(u8, u512, 1 << 0);
+            try testArgs(u8, u512, 1 << 511);
+            try testArgs(i16, u512, 0);
+            try testArgs(i16, u512, 1 << 0);
+            try testArgs(i16, u512, 1 << 511);
+            try testArgs(u16, u512, 0);
+            try testArgs(u16, u512, 1 << 0);
+            try testArgs(u16, u512, 1 << 511);
+            try testArgs(i32, u512, 0);
+            try testArgs(i32, u512, 1 << 0);
+            try testArgs(i32, u512, 1 << 511);
+            try testArgs(u32, u512, 0);
+            try testArgs(u32, u512, 1 << 0);
+            try testArgs(u32, u512, 1 << 511);
+            try testArgs(i64, u512, 0);
+            try testArgs(i64, u512, 1 << 0);
+            try testArgs(i64, u512, 1 << 511);
+            try testArgs(u64, u512, 0);
+            try testArgs(u64, u512, 1 << 0);
+            try testArgs(u64, u512, 1 << 511);
+            try testArgs(i128, u512, 0);
+            try testArgs(i128, u512, 1 << 0);
+            try testArgs(i128, u512, 1 << 511);
+            try testArgs(u128, u512, 0);
+            try testArgs(u128, u512, 1 << 0);
+            try testArgs(u128, u512, 1 << 511);
+            try testArgs(i256, u512, 0);
+            try testArgs(i256, u512, 1 << 0);
+            try testArgs(i256, u512, 1 << 511);
+            try testArgs(u256, u512, 0);
+            try testArgs(u256, u512, 1 << 0);
+            try testArgs(u256, u512, 1 << 511);
+            try testArgs(i512, u512, 0);
+            try testArgs(i512, u512, 1 << 0);
+            try testArgs(i512, u512, 1 << 511);
+            try testArgs(u512, u512, 0);
+            try testArgs(u512, u512, 1 << 0);
+            try testArgs(u512, u512, 1 << 511);
+            try testArgs(i1024, u512, 0);
+            try testArgs(i1024, u512, 1 << 0);
+            try testArgs(i1024, u512, 1 << 511);
+            try testArgs(u1024, u512, 0);
+            try testArgs(u1024, u512, 1 << 0);
+            try testArgs(u1024, u512, 1 << 511);
+
+            try testArgs(i8, i513, -1 << 512);
+            try testArgs(i8, i513, -1);
+            try testArgs(i8, i513, 0);
+            try testArgs(u8, i513, -1 << 512);
+            try testArgs(u8, i513, -1);
+            try testArgs(u8, i513, 0);
+            try testArgs(i16, i513, -1 << 512);
+            try testArgs(i16, i513, -1);
+            try testArgs(i16, i513, 0);
+            try testArgs(u16, i513, -1 << 512);
+            try testArgs(u16, i513, -1);
+            try testArgs(u16, i513, 0);
+            try testArgs(i32, i513, -1 << 512);
+            try testArgs(i32, i513, -1);
+            try testArgs(i32, i513, 0);
+            try testArgs(u32, i513, -1 << 512);
+            try testArgs(u32, i513, -1);
+            try testArgs(u32, i513, 0);
+            try testArgs(i64, i513, -1 << 512);
+            try testArgs(i64, i513, -1);
+            try testArgs(i64, i513, 0);
+            try testArgs(u64, i513, -1 << 512);
+            try testArgs(u64, i513, -1);
+            try testArgs(u64, i513, 0);
+            try testArgs(i128, i513, -1 << 512);
+            try testArgs(i128, i513, -1);
+            try testArgs(i128, i513, 0);
+            try testArgs(u128, i513, -1 << 512);
+            try testArgs(u128, i513, -1);
+            try testArgs(u128, i513, 0);
+            try testArgs(i256, i513, -1 << 512);
+            try testArgs(i256, i513, -1);
+            try testArgs(i256, i513, 0);
+            try testArgs(u256, i513, -1 << 512);
+            try testArgs(u256, i513, -1);
+            try testArgs(u256, i513, 0);
+            try testArgs(i512, i513, -1 << 512);
+            try testArgs(i512, i513, -1);
+            try testArgs(i512, i513, 0);
+            try testArgs(u512, i513, -1 << 512);
+            try testArgs(u512, i513, -1);
+            try testArgs(u512, i513, 0);
+            try testArgs(i1024, i513, -1 << 512);
+            try testArgs(i1024, i513, -1);
+            try testArgs(i1024, i513, 0);
+            try testArgs(u1024, i513, -1 << 512);
+            try testArgs(u1024, i513, -1);
+            try testArgs(u1024, i513, 0);
+            try testArgs(i8, u513, 0);
+            try testArgs(i8, u513, 1 << 0);
+            try testArgs(i8, u513, 1 << 512);
+            try testArgs(u8, u513, 0);
+            try testArgs(u8, u513, 1 << 0);
+            try testArgs(u8, u513, 1 << 512);
+            try testArgs(i16, u513, 0);
+            try testArgs(i16, u513, 1 << 0);
+            try testArgs(i16, u513, 1 << 512);
+            try testArgs(u16, u513, 0);
+            try testArgs(u16, u513, 1 << 0);
+            try testArgs(u16, u513, 1 << 512);
+            try testArgs(i32, u513, 0);
+            try testArgs(i32, u513, 1 << 0);
+            try testArgs(i32, u513, 1 << 512);
+            try testArgs(u32, u513, 0);
+            try testArgs(u32, u513, 1 << 0);
+            try testArgs(u32, u513, 1 << 512);
+            try testArgs(i64, u513, 0);
+            try testArgs(i64, u513, 1 << 0);
+            try testArgs(i64, u513, 1 << 512);
+            try testArgs(u64, u513, 0);
+            try testArgs(u64, u513, 1 << 0);
+            try testArgs(u64, u513, 1 << 512);
+            try testArgs(i128, u513, 0);
+            try testArgs(i128, u513, 1 << 0);
+            try testArgs(i128, u513, 1 << 512);
+            try testArgs(u128, u513, 0);
+            try testArgs(u128, u513, 1 << 0);
+            try testArgs(u128, u513, 1 << 512);
+            try testArgs(i256, u513, 0);
+            try testArgs(i256, u513, 1 << 0);
+            try testArgs(i256, u513, 1 << 512);
+            try testArgs(u256, u513, 0);
+            try testArgs(u256, u513, 1 << 0);
+            try testArgs(u256, u513, 1 << 512);
+            try testArgs(i512, u513, 0);
+            try testArgs(i512, u513, 1 << 0);
+            try testArgs(i512, u513, 1 << 512);
+            try testArgs(u512, u513, 0);
+            try testArgs(u512, u513, 1 << 0);
+            try testArgs(u512, u513, 1 << 512);
+            try testArgs(i1024, u513, 0);
+            try testArgs(i1024, u513, 1 << 0);
+            try testArgs(i1024, u513, 1 << 512);
+            try testArgs(u1024, u513, 0);
+            try testArgs(u1024, u513, 1 << 0);
+            try testArgs(u1024, u513, 1 << 512);
+
+            try testArgs(i8, i1023, -1 << 1022);
+            try testArgs(i8, i1023, -1);
+            try testArgs(i8, i1023, 0);
+            try testArgs(u8, i1023, -1 << 1022);
+            try testArgs(u8, i1023, -1);
+            try testArgs(u8, i1023, 0);
+            try testArgs(i16, i1023, -1 << 1022);
+            try testArgs(i16, i1023, -1);
+            try testArgs(i16, i1023, 0);
+            try testArgs(u16, i1023, -1 << 1022);
+            try testArgs(u16, i1023, -1);
+            try testArgs(u16, i1023, 0);
+            try testArgs(i32, i1023, -1 << 1022);
+            try testArgs(i32, i1023, -1);
+            try testArgs(i32, i1023, 0);
+            try testArgs(u32, i1023, -1 << 1022);
+            try testArgs(u32, i1023, -1);
+            try testArgs(u32, i1023, 0);
+            try testArgs(i64, i1023, -1 << 1022);
+            try testArgs(i64, i1023, -1);
+            try testArgs(i64, i1023, 0);
+            try testArgs(u64, i1023, -1 << 1022);
+            try testArgs(u64, i1023, -1);
+            try testArgs(u64, i1023, 0);
+            try testArgs(i128, i1023, -1 << 1022);
+            try testArgs(i128, i1023, -1);
+            try testArgs(i128, i1023, 0);
+            try testArgs(u128, i1023, -1 << 1022);
+            try testArgs(u128, i1023, -1);
+            try testArgs(u128, i1023, 0);
+            try testArgs(i256, i1023, -1 << 1022);
+            try testArgs(i256, i1023, -1);
+            try testArgs(i256, i1023, 0);
+            try testArgs(u256, i1023, -1 << 1022);
+            try testArgs(u256, i1023, -1);
+            try testArgs(u256, i1023, 0);
+            try testArgs(i512, i1023, -1 << 1022);
+            try testArgs(i512, i1023, -1);
+            try testArgs(i512, i1023, 0);
+            try testArgs(u512, i1023, -1 << 1022);
+            try testArgs(u512, i1023, -1);
+            try testArgs(u512, i1023, 0);
+            try testArgs(i1024, i1023, -1 << 1022);
+            try testArgs(i1024, i1023, -1);
+            try testArgs(i1024, i1023, 0);
+            try testArgs(u1024, i1023, -1 << 1022);
+            try testArgs(u1024, i1023, -1);
+            try testArgs(u1024, i1023, 0);
+            try testArgs(i8, u1023, 0);
+            try testArgs(i8, u1023, 1 << 0);
+            try testArgs(i8, u1023, 1 << 1022);
+            try testArgs(u8, u1023, 0);
+            try testArgs(u8, u1023, 1 << 0);
+            try testArgs(u8, u1023, 1 << 1022);
+            try testArgs(i16, u1023, 0);
+            try testArgs(i16, u1023, 1 << 0);
+            try testArgs(i16, u1023, 1 << 1022);
+            try testArgs(u16, u1023, 0);
+            try testArgs(u16, u1023, 1 << 0);
+            try testArgs(u16, u1023, 1 << 1022);
+            try testArgs(i32, u1023, 0);
+            try testArgs(i32, u1023, 1 << 0);
+            try testArgs(i32, u1023, 1 << 1022);
+            try testArgs(u32, u1023, 0);
+            try testArgs(u32, u1023, 1 << 0);
+            try testArgs(u32, u1023, 1 << 1022);
+            try testArgs(i64, u1023, 0);
+            try testArgs(i64, u1023, 1 << 0);
+            try testArgs(i64, u1023, 1 << 1022);
+            try testArgs(u64, u1023, 0);
+            try testArgs(u64, u1023, 1 << 0);
+            try testArgs(u64, u1023, 1 << 1022);
+            try testArgs(i128, u1023, 0);
+            try testArgs(i128, u1023, 1 << 0);
+            try testArgs(i128, u1023, 1 << 1022);
+            try testArgs(u128, u1023, 0);
+            try testArgs(u128, u1023, 1 << 0);
+            try testArgs(u128, u1023, 1 << 1022);
+            try testArgs(i256, u1023, 0);
+            try testArgs(i256, u1023, 1 << 0);
+            try testArgs(i256, u1023, 1 << 1022);
+            try testArgs(u256, u1023, 0);
+            try testArgs(u256, u1023, 1 << 0);
+            try testArgs(u256, u1023, 1 << 1022);
+            try testArgs(i512, u1023, 0);
+            try testArgs(i512, u1023, 1 << 0);
+            try testArgs(i512, u1023, 1 << 1022);
+            try testArgs(u512, u1023, 0);
+            try testArgs(u512, u1023, 1 << 0);
+            try testArgs(u512, u1023, 1 << 1022);
+            try testArgs(i1024, u1023, 0);
+            try testArgs(i1024, u1023, 1 << 0);
+            try testArgs(i1024, u1023, 1 << 1022);
+            try testArgs(u1024, u1023, 0);
+            try testArgs(u1024, u1023, 1 << 0);
+            try testArgs(u1024, u1023, 1 << 1022);
+
+            try testArgs(i8, i1024, -1 << 1023);
+            try testArgs(i8, i1024, -1);
+            try testArgs(i8, i1024, 0);
+            try testArgs(u8, i1024, -1 << 1023);
+            try testArgs(u8, i1024, -1);
+            try testArgs(u8, i1024, 0);
+            try testArgs(i16, i1024, -1 << 1023);
+            try testArgs(i16, i1024, -1);
+            try testArgs(i16, i1024, 0);
+            try testArgs(u16, i1024, -1 << 1023);
+            try testArgs(u16, i1024, -1);
+            try testArgs(u16, i1024, 0);
+            try testArgs(i32, i1024, -1 << 1023);
+            try testArgs(i32, i1024, -1);
+            try testArgs(i32, i1024, 0);
+            try testArgs(u32, i1024, -1 << 1023);
+            try testArgs(u32, i1024, -1);
+            try testArgs(u32, i1024, 0);
+            try testArgs(i64, i1024, -1 << 1023);
+            try testArgs(i64, i1024, -1);
+            try testArgs(i64, i1024, 0);
+            try testArgs(u64, i1024, -1 << 1023);
+            try testArgs(u64, i1024, -1);
+            try testArgs(u64, i1024, 0);
+            try testArgs(i128, i1024, -1 << 1023);
+            try testArgs(i128, i1024, -1);
+            try testArgs(i128, i1024, 0);
+            try testArgs(u128, i1024, -1 << 1023);
+            try testArgs(u128, i1024, -1);
+            try testArgs(u128, i1024, 0);
+            try testArgs(i256, i1024, -1 << 1023);
+            try testArgs(i256, i1024, -1);
+            try testArgs(i256, i1024, 0);
+            try testArgs(u256, i1024, -1 << 1023);
+            try testArgs(u256, i1024, -1);
+            try testArgs(u256, i1024, 0);
+            try testArgs(i512, i1024, -1 << 1023);
+            try testArgs(i512, i1024, -1);
+            try testArgs(i512, i1024, 0);
+            try testArgs(u512, i1024, -1 << 1023);
+            try testArgs(u512, i1024, -1);
+            try testArgs(u512, i1024, 0);
+            try testArgs(i1024, i1024, -1 << 1023);
+            try testArgs(i1024, i1024, -1);
+            try testArgs(i1024, i1024, 0);
+            try testArgs(u1024, i1024, -1 << 1023);
+            try testArgs(u1024, i1024, -1);
+            try testArgs(u1024, i1024, 0);
+            try testArgs(i8, u1024, 0);
+            try testArgs(i8, u1024, 1 << 0);
+            try testArgs(i8, u1024, 1 << 1023);
+            try testArgs(u8, u1024, 0);
+            try testArgs(u8, u1024, 1 << 0);
+            try testArgs(u8, u1024, 1 << 1023);
+            try testArgs(i16, u1024, 0);
+            try testArgs(i16, u1024, 1 << 0);
+            try testArgs(i16, u1024, 1 << 1023);
+            try testArgs(u16, u1024, 0);
+            try testArgs(u16, u1024, 1 << 0);
+            try testArgs(u16, u1024, 1 << 1023);
+            try testArgs(i32, u1024, 0);
+            try testArgs(i32, u1024, 1 << 0);
+            try testArgs(i32, u1024, 1 << 1023);
+            try testArgs(u32, u1024, 0);
+            try testArgs(u32, u1024, 1 << 0);
+            try testArgs(u32, u1024, 1 << 1023);
+            try testArgs(i64, u1024, 0);
+            try testArgs(i64, u1024, 1 << 0);
+            try testArgs(i64, u1024, 1 << 1023);
+            try testArgs(u64, u1024, 0);
+            try testArgs(u64, u1024, 1 << 0);
+            try testArgs(u64, u1024, 1 << 1023);
+            try testArgs(i128, u1024, 0);
+            try testArgs(i128, u1024, 1 << 0);
+            try testArgs(i128, u1024, 1 << 1023);
+            try testArgs(u128, u1024, 0);
+            try testArgs(u128, u1024, 1 << 0);
+            try testArgs(u128, u1024, 1 << 1023);
+            try testArgs(i256, u1024, 0);
+            try testArgs(i256, u1024, 1 << 0);
+            try testArgs(i256, u1024, 1 << 1023);
+            try testArgs(u256, u1024, 0);
+            try testArgs(u256, u1024, 1 << 0);
+            try testArgs(u256, u1024, 1 << 1023);
+            try testArgs(i512, u1024, 0);
+            try testArgs(i512, u1024, 1 << 0);
+            try testArgs(i512, u1024, 1 << 1023);
+            try testArgs(u512, u1024, 0);
+            try testArgs(u512, u1024, 1 << 0);
+            try testArgs(u512, u1024, 1 << 1023);
+            try testArgs(i1024, u1024, 0);
+            try testArgs(i1024, u1024, 1 << 0);
+            try testArgs(i1024, u1024, 1 << 1023);
+            try testArgs(u1024, u1024, 0);
+            try testArgs(u1024, u1024, 1 << 0);
+            try testArgs(u1024, u1024, 1 << 1023);
+
+            try testArgs(i8, i1025, -1 << 1024);
+            try testArgs(i8, i1025, -1);
+            try testArgs(i8, i1025, 0);
+            try testArgs(u8, i1025, -1 << 1024);
+            try testArgs(u8, i1025, -1);
+            try testArgs(u8, i1025, 0);
+            try testArgs(i16, i1025, -1 << 1024);
+            try testArgs(i16, i1025, -1);
+            try testArgs(i16, i1025, 0);
+            try testArgs(u16, i1025, -1 << 1024);
+            try testArgs(u16, i1025, -1);
+            try testArgs(u16, i1025, 0);
+            try testArgs(i32, i1025, -1 << 1024);
+            try testArgs(i32, i1025, -1);
+            try testArgs(i32, i1025, 0);
+            try testArgs(u32, i1025, -1 << 1024);
+            try testArgs(u32, i1025, -1);
+            try testArgs(u32, i1025, 0);
+            try testArgs(i64, i1025, -1 << 1024);
+            try testArgs(i64, i1025, -1);
+            try testArgs(i64, i1025, 0);
+            try testArgs(u64, i1025, -1 << 1024);
+            try testArgs(u64, i1025, -1);
+            try testArgs(u64, i1025, 0);
+            try testArgs(i128, i1025, -1 << 1024);
+            try testArgs(i128, i1025, -1);
+            try testArgs(i128, i1025, 0);
+            try testArgs(u128, i1025, -1 << 1024);
+            try testArgs(u128, i1025, -1);
+            try testArgs(u128, i1025, 0);
+            try testArgs(i256, i1025, -1 << 1024);
+            try testArgs(i256, i1025, -1);
+            try testArgs(i256, i1025, 0);
+            try testArgs(u256, i1025, -1 << 1024);
+            try testArgs(u256, i1025, -1);
+            try testArgs(u256, i1025, 0);
+            try testArgs(i512, i1025, -1 << 1024);
+            try testArgs(i512, i1025, -1);
+            try testArgs(i512, i1025, 0);
+            try testArgs(u512, i1025, -1 << 1024);
+            try testArgs(u512, i1025, -1);
+            try testArgs(u512, i1025, 0);
+            try testArgs(i1024, i1025, -1 << 1024);
+            try testArgs(i1024, i1025, -1);
+            try testArgs(i1024, i1025, 0);
+            try testArgs(u1024, i1025, -1 << 1024);
+            try testArgs(u1024, i1025, -1);
+            try testArgs(u1024, i1025, 0);
+            try testArgs(i8, u1025, 0);
+            try testArgs(i8, u1025, 1 << 0);
+            try testArgs(i8, u1025, 1 << 1024);
+            try testArgs(u8, u1025, 0);
+            try testArgs(u8, u1025, 1 << 0);
+            try testArgs(u8, u1025, 1 << 1024);
+            try testArgs(i16, u1025, 0);
+            try testArgs(i16, u1025, 1 << 0);
+            try testArgs(i16, u1025, 1 << 1024);
+            try testArgs(u16, u1025, 0);
+            try testArgs(u16, u1025, 1 << 0);
+            try testArgs(u16, u1025, 1 << 1024);
+            try testArgs(i32, u1025, 0);
+            try testArgs(i32, u1025, 1 << 0);
+            try testArgs(i32, u1025, 1 << 1024);
+            try testArgs(u32, u1025, 0);
+            try testArgs(u32, u1025, 1 << 0);
+            try testArgs(u32, u1025, 1 << 1024);
+            try testArgs(i64, u1025, 0);
+            try testArgs(i64, u1025, 1 << 0);
+            try testArgs(i64, u1025, 1 << 1024);
+            try testArgs(u64, u1025, 0);
+            try testArgs(u64, u1025, 1 << 0);
+            try testArgs(u64, u1025, 1 << 1024);
+            try testArgs(i128, u1025, 0);
+            try testArgs(i128, u1025, 1 << 0);
+            try testArgs(i128, u1025, 1 << 1024);
+            try testArgs(u128, u1025, 0);
+            try testArgs(u128, u1025, 1 << 0);
+            try testArgs(u128, u1025, 1 << 1024);
+            try testArgs(i256, u1025, 0);
+            try testArgs(i256, u1025, 1 << 0);
+            try testArgs(i256, u1025, 1 << 1024);
+            try testArgs(u256, u1025, 0);
+            try testArgs(u256, u1025, 1 << 0);
+            try testArgs(u256, u1025, 1 << 1024);
+            try testArgs(i512, u1025, 0);
+            try testArgs(i512, u1025, 1 << 0);
+            try testArgs(i512, u1025, 1 << 1024);
+            try testArgs(u512, u1025, 0);
+            try testArgs(u512, u1025, 1 << 0);
+            try testArgs(u512, u1025, 1 << 1024);
+            try testArgs(i1024, u1025, 0);
+            try testArgs(i1024, u1025, 1 << 0);
+            try testArgs(i1024, u1025, 1 << 1024);
+            try testArgs(u1024, u1025, 0);
+            try testArgs(u1024, u1025, 1 << 0);
+            try testArgs(u1024, u1025, 1 << 1024);
+        }
+        fn testFloats() !void {
+            @setEvalBranchQuota(3_100);
+
+            try testArgs(f16, f16, -nan(f16));
+            try testArgs(f16, f16, -inf(f16));
+            try testArgs(f16, f16, -fmax(f16));
+            try testArgs(f16, f16, -1e1);
+            try testArgs(f16, f16, -1e0);
+            try testArgs(f16, f16, -1e-1);
+            try testArgs(f16, f16, -fmin(f16));
+            try testArgs(f16, f16, -tmin(f16));
+            try testArgs(f16, f16, -0.0);
+            try testArgs(f16, f16, 0.0);
+            try testArgs(f16, f16, tmin(f16));
+            try testArgs(f16, f16, fmin(f16));
+            try testArgs(f16, f16, 1e-1);
+            try testArgs(f16, f16, 1e0);
+            try testArgs(f16, f16, 1e1);
+            try testArgs(f16, f16, fmax(f16));
+            try testArgs(f16, f16, inf(f16));
+            try testArgs(f16, f16, nan(f16));
+
+            try testArgs(f32, f16, -nan(f16));
+            try testArgs(f32, f16, -inf(f16));
+            try testArgs(f32, f16, -fmax(f16));
+            try testArgs(f32, f16, -1e1);
+            try testArgs(f32, f16, -1e0);
+            try testArgs(f32, f16, -1e-1);
+            try testArgs(f32, f16, -fmin(f16));
+            try testArgs(f32, f16, -tmin(f16));
+            try testArgs(f32, f16, -0.0);
+            try testArgs(f32, f16, 0.0);
+            try testArgs(f32, f16, tmin(f16));
+            try testArgs(f32, f16, fmin(f16));
+            try testArgs(f32, f16, 1e-1);
+            try testArgs(f32, f16, 1e0);
+            try testArgs(f32, f16, 1e1);
+            try testArgs(f32, f16, fmax(f16));
+            try testArgs(f32, f16, inf(f16));
+            try testArgs(f32, f16, nan(f16));
+
+            try testArgs(f64, f16, -nan(f16));
+            try testArgs(f64, f16, -inf(f16));
+            try testArgs(f64, f16, -fmax(f16));
+            try testArgs(f64, f16, -1e1);
+            try testArgs(f64, f16, -1e0);
+            try testArgs(f64, f16, -1e-1);
+            try testArgs(f64, f16, -fmin(f16));
+            try testArgs(f64, f16, -tmin(f16));
+            try testArgs(f64, f16, -0.0);
+            try testArgs(f64, f16, 0.0);
+            try testArgs(f64, f16, tmin(f16));
+            try testArgs(f64, f16, fmin(f16));
+            try testArgs(f64, f16, 1e-1);
+            try testArgs(f64, f16, 1e0);
+            try testArgs(f64, f16, 1e1);
+            try testArgs(f64, f16, fmax(f16));
+            try testArgs(f64, f16, inf(f16));
+            try testArgs(f64, f16, nan(f16));
+
+            try testArgs(f80, f16, -nan(f16));
+            try testArgs(f80, f16, -inf(f16));
+            try testArgs(f80, f16, -fmax(f16));
+            try testArgs(f80, f16, -1e1);
+            try testArgs(f80, f16, -1e0);
+            try testArgs(f80, f16, -1e-1);
+            try testArgs(f80, f16, -fmin(f16));
+            try testArgs(f80, f16, -tmin(f16));
+            try testArgs(f80, f16, -0.0);
+            try testArgs(f80, f16, 0.0);
+            try testArgs(f80, f16, tmin(f16));
+            try testArgs(f80, f16, fmin(f16));
+            try testArgs(f80, f16, 1e-1);
+            try testArgs(f80, f16, 1e0);
+            try testArgs(f80, f16, 1e1);
+            try testArgs(f80, f16, fmax(f16));
+            try testArgs(f80, f16, inf(f16));
+            try testArgs(f80, f16, nan(f16));
+
+            try testArgs(f128, f16, -nan(f16));
+            try testArgs(f128, f16, -inf(f16));
+            try testArgs(f128, f16, -fmax(f16));
+            try testArgs(f128, f16, -1e1);
+            try testArgs(f128, f16, -1e0);
+            try testArgs(f128, f16, -1e-1);
+            try testArgs(f128, f16, -fmin(f16));
+            try testArgs(f128, f16, -tmin(f16));
+            try testArgs(f128, f16, -0.0);
+            try testArgs(f128, f16, 0.0);
+            try testArgs(f128, f16, tmin(f16));
+            try testArgs(f128, f16, fmin(f16));
+            try testArgs(f128, f16, 1e-1);
+            try testArgs(f128, f16, 1e0);
+            try testArgs(f128, f16, 1e1);
+            try testArgs(f128, f16, fmax(f16));
+            try testArgs(f128, f16, inf(f16));
+            try testArgs(f128, f16, nan(f16));
+
+            try testArgs(f16, f32, -nan(f32));
+            try testArgs(f16, f32, -inf(f32));
+            try testArgs(f16, f32, -fmax(f32));
+            try testArgs(f16, f32, -1e1);
+            try testArgs(f16, f32, -1e0);
+            try testArgs(f16, f32, -1e-1);
+            try testArgs(f16, f32, -fmin(f32));
+            try testArgs(f16, f32, -tmin(f32));
+            try testArgs(f16, f32, -0.0);
+            try testArgs(f16, f32, 0.0);
+            try testArgs(f16, f32, tmin(f32));
+            try testArgs(f16, f32, fmin(f32));
+            try testArgs(f16, f32, 1e-1);
+            try testArgs(f16, f32, 1e0);
+            try testArgs(f16, f32, 1e1);
+            try testArgs(f16, f32, fmax(f32));
+            try testArgs(f16, f32, inf(f32));
+            try testArgs(f16, f32, nan(f32));
+
+            try testArgs(f32, f32, -nan(f32));
+            try testArgs(f32, f32, -inf(f32));
+            try testArgs(f32, f32, -fmax(f32));
+            try testArgs(f32, f32, -1e1);
+            try testArgs(f32, f32, -1e0);
+            try testArgs(f32, f32, -1e-1);
+            try testArgs(f32, f32, -fmin(f32));
+            try testArgs(f32, f32, -tmin(f32));
+            try testArgs(f32, f32, -0.0);
+            try testArgs(f32, f32, 0.0);
+            try testArgs(f32, f32, tmin(f32));
+            try testArgs(f32, f32, fmin(f32));
+            try testArgs(f32, f32, 1e-1);
+            try testArgs(f32, f32, 1e0);
+            try testArgs(f32, f32, 1e1);
+            try testArgs(f32, f32, fmax(f32));
+            try testArgs(f32, f32, inf(f32));
+            try testArgs(f32, f32, nan(f32));
+
+            try testArgs(f64, f32, -nan(f32));
+            try testArgs(f64, f32, -inf(f32));
+            try testArgs(f64, f32, -fmax(f32));
+            try testArgs(f64, f32, -1e1);
+            try testArgs(f64, f32, -1e0);
+            try testArgs(f64, f32, -1e-1);
+            try testArgs(f64, f32, -fmin(f32));
+            try testArgs(f64, f32, -tmin(f32));
+            try testArgs(f64, f32, -0.0);
+            try testArgs(f64, f32, 0.0);
+            try testArgs(f64, f32, tmin(f32));
+            try testArgs(f64, f32, fmin(f32));
+            try testArgs(f64, f32, 1e-1);
+            try testArgs(f64, f32, 1e0);
+            try testArgs(f64, f32, 1e1);
+            try testArgs(f64, f32, fmax(f32));
+            try testArgs(f64, f32, inf(f32));
+            try testArgs(f64, f32, nan(f32));
+
+            try testArgs(f80, f32, -nan(f32));
+            try testArgs(f80, f32, -inf(f32));
+            try testArgs(f80, f32, -fmax(f32));
+            try testArgs(f80, f32, -1e1);
+            try testArgs(f80, f32, -1e0);
+            try testArgs(f80, f32, -1e-1);
+            try testArgs(f80, f32, -fmin(f32));
+            try testArgs(f80, f32, -tmin(f32));
+            try testArgs(f80, f32, -0.0);
+            try testArgs(f80, f32, 0.0);
+            try testArgs(f80, f32, tmin(f32));
+            try testArgs(f80, f32, fmin(f32));
+            try testArgs(f80, f32, 1e-1);
+            try testArgs(f80, f32, 1e0);
+            try testArgs(f80, f32, 1e1);
+            try testArgs(f80, f32, fmax(f32));
+            try testArgs(f80, f32, inf(f32));
+            try testArgs(f80, f32, nan(f32));
+
+            try testArgs(f128, f32, -nan(f32));
+            try testArgs(f128, f32, -inf(f32));
+            try testArgs(f128, f32, -fmax(f32));
+            try testArgs(f128, f32, -1e1);
+            try testArgs(f128, f32, -1e0);
+            try testArgs(f128, f32, -1e-1);
+            try testArgs(f128, f32, -fmin(f32));
+            try testArgs(f128, f32, -tmin(f32));
+            try testArgs(f128, f32, -0.0);
+            try testArgs(f128, f32, 0.0);
+            try testArgs(f128, f32, tmin(f32));
+            try testArgs(f128, f32, fmin(f32));
+            try testArgs(f128, f32, 1e-1);
+            try testArgs(f128, f32, 1e0);
+            try testArgs(f128, f32, 1e1);
+            try testArgs(f128, f32, fmax(f32));
+            try testArgs(f128, f32, inf(f32));
+            try testArgs(f128, f32, nan(f32));
+
+            try testArgs(f16, f64, -nan(f64));
+            try testArgs(f16, f64, -inf(f64));
+            try testArgs(f16, f64, -fmax(f64));
+            try testArgs(f16, f64, -1e1);
+            try testArgs(f16, f64, -1e0);
+            try testArgs(f16, f64, -1e-1);
+            try testArgs(f16, f64, -fmin(f64));
+            try testArgs(f16, f64, -tmin(f64));
+            try testArgs(f16, f64, -0.0);
+            try testArgs(f16, f64, 0.0);
+            try testArgs(f16, f64, tmin(f64));
+            try testArgs(f16, f64, fmin(f64));
+            try testArgs(f16, f64, 1e-1);
+            try testArgs(f16, f64, 1e0);
+            try testArgs(f16, f64, 1e1);
+            try testArgs(f16, f64, fmax(f64));
+            try testArgs(f16, f64, inf(f64));
+            try testArgs(f16, f64, nan(f64));
+
+            try testArgs(f32, f64, -nan(f64));
+            try testArgs(f32, f64, -inf(f64));
+            try testArgs(f32, f64, -fmax(f64));
+            try testArgs(f32, f64, -1e1);
+            try testArgs(f32, f64, -1e0);
+            try testArgs(f32, f64, -1e-1);
+            try testArgs(f32, f64, -fmin(f64));
+            try testArgs(f32, f64, -tmin(f64));
+            try testArgs(f32, f64, -0.0);
+            try testArgs(f32, f64, 0.0);
+            try testArgs(f32, f64, tmin(f64));
+            try testArgs(f32, f64, fmin(f64));
+            try testArgs(f32, f64, 1e-1);
+            try testArgs(f32, f64, 1e0);
+            try testArgs(f32, f64, 1e1);
+            try testArgs(f32, f64, fmax(f64));
+            try testArgs(f32, f64, inf(f64));
+            try testArgs(f32, f64, nan(f64));
+
+            try testArgs(f64, f64, -nan(f64));
+            try testArgs(f64, f64, -inf(f64));
+            try testArgs(f64, f64, -fmax(f64));
+            try testArgs(f64, f64, -1e1);
+            try testArgs(f64, f64, -1e0);
+            try testArgs(f64, f64, -1e-1);
+            try testArgs(f64, f64, -fmin(f64));
+            try testArgs(f64, f64, -tmin(f64));
+            try testArgs(f64, f64, -0.0);
+            try testArgs(f64, f64, 0.0);
+            try testArgs(f64, f64, tmin(f64));
+            try testArgs(f64, f64, fmin(f64));
+            try testArgs(f64, f64, 1e-1);
+            try testArgs(f64, f64, 1e0);
+            try testArgs(f64, f64, 1e1);
+            try testArgs(f64, f64, fmax(f64));
+            try testArgs(f64, f64, inf(f64));
+            try testArgs(f64, f64, nan(f64));
+
+            try testArgs(f80, f64, -nan(f64));
+            try testArgs(f80, f64, -inf(f64));
+            try testArgs(f80, f64, -fmax(f64));
+            try testArgs(f80, f64, -1e1);
+            try testArgs(f80, f64, -1e0);
+            try testArgs(f80, f64, -1e-1);
+            try testArgs(f80, f64, -fmin(f64));
+            try testArgs(f80, f64, -tmin(f64));
+            try testArgs(f80, f64, -0.0);
+            try testArgs(f80, f64, 0.0);
+            try testArgs(f80, f64, tmin(f64));
+            try testArgs(f80, f64, fmin(f64));
+            try testArgs(f80, f64, 1e-1);
+            try testArgs(f80, f64, 1e0);
+            try testArgs(f80, f64, 1e1);
+            try testArgs(f80, f64, fmax(f64));
+            try testArgs(f80, f64, inf(f64));
+            try testArgs(f80, f64, nan(f64));
+
+            try testArgs(f128, f64, -nan(f64));
+            try testArgs(f128, f64, -inf(f64));
+            try testArgs(f128, f64, -fmax(f64));
+            try testArgs(f128, f64, -1e1);
+            try testArgs(f128, f64, -1e0);
+            try testArgs(f128, f64, -1e-1);
+            try testArgs(f128, f64, -fmin(f64));
+            try testArgs(f128, f64, -tmin(f64));
+            try testArgs(f128, f64, -0.0);
+            try testArgs(f128, f64, 0.0);
+            try testArgs(f128, f64, tmin(f64));
+            try testArgs(f128, f64, fmin(f64));
+            try testArgs(f128, f64, 1e-1);
+            try testArgs(f128, f64, 1e0);
+            try testArgs(f128, f64, 1e1);
+            try testArgs(f128, f64, fmax(f64));
+            try testArgs(f128, f64, inf(f64));
+            try testArgs(f128, f64, nan(f64));
+
+            try testArgs(f16, f80, -nan(f80));
+            try testArgs(f16, f80, -inf(f80));
+            try testArgs(f16, f80, -fmax(f80));
+            try testArgs(f16, f80, -1e1);
+            try testArgs(f16, f80, -1e0);
+            try testArgs(f16, f80, -1e-1);
+            try testArgs(f16, f80, -fmin(f80));
+            try testArgs(f16, f80, -tmin(f80));
+            try testArgs(f16, f80, -0.0);
+            try testArgs(f16, f80, 0.0);
+            try testArgs(f16, f80, tmin(f80));
+            try testArgs(f16, f80, fmin(f80));
+            try testArgs(f16, f80, 1e-1);
+            try testArgs(f16, f80, 1e0);
+            try testArgs(f16, f80, 1e1);
+            try testArgs(f16, f80, fmax(f80));
+            try testArgs(f16, f80, inf(f80));
+            try testArgs(f16, f80, nan(f80));
+
+            try testArgs(f32, f80, -nan(f80));
+            try testArgs(f32, f80, -inf(f80));
+            try testArgs(f32, f80, -fmax(f80));
+            try testArgs(f32, f80, -1e1);
+            try testArgs(f32, f80, -1e0);
+            try testArgs(f32, f80, -1e-1);
+            try testArgs(f32, f80, -fmin(f80));
+            try testArgs(f32, f80, -tmin(f80));
+            try testArgs(f32, f80, -0.0);
+            try testArgs(f32, f80, 0.0);
+            try testArgs(f32, f80, tmin(f80));
+            try testArgs(f32, f80, fmin(f80));
+            try testArgs(f32, f80, 1e-1);
+            try testArgs(f32, f80, 1e0);
+            try testArgs(f32, f80, 1e1);
+            try testArgs(f32, f80, fmax(f80));
+            try testArgs(f32, f80, inf(f80));
+            try testArgs(f32, f80, nan(f80));
+
+            try testArgs(f64, f80, -nan(f80));
+            try testArgs(f64, f80, -inf(f80));
+            try testArgs(f64, f80, -fmax(f80));
+            try testArgs(f64, f80, -1e1);
+            try testArgs(f64, f80, -1e0);
+            try testArgs(f64, f80, -1e-1);
+            try testArgs(f64, f80, -fmin(f80));
+            try testArgs(f64, f80, -tmin(f80));
+            try testArgs(f64, f80, -0.0);
+            try testArgs(f64, f80, 0.0);
+            try testArgs(f64, f80, tmin(f80));
+            try testArgs(f64, f80, fmin(f80));
+            try testArgs(f64, f80, 1e-1);
+            try testArgs(f64, f80, 1e0);
+            try testArgs(f64, f80, 1e1);
+            try testArgs(f64, f80, fmax(f80));
+            try testArgs(f64, f80, inf(f80));
+            try testArgs(f64, f80, nan(f80));
+
+            try testArgs(f80, f80, -nan(f80));
+            try testArgs(f80, f80, -inf(f80));
+            try testArgs(f80, f80, -fmax(f80));
+            try testArgs(f80, f80, -1e1);
+            try testArgs(f80, f80, -1e0);
+            try testArgs(f80, f80, -1e-1);
+            try testArgs(f80, f80, -fmin(f80));
+            try testArgs(f80, f80, -tmin(f80));
+            try testArgs(f80, f80, -0.0);
+            try testArgs(f80, f80, 0.0);
+            try testArgs(f80, f80, tmin(f80));
+            try testArgs(f80, f80, fmin(f80));
+            try testArgs(f80, f80, 1e-1);
+            try testArgs(f80, f80, 1e0);
+            try testArgs(f80, f80, 1e1);
+            try testArgs(f80, f80, fmax(f80));
+            try testArgs(f80, f80, inf(f80));
+            try testArgs(f80, f80, nan(f80));
+
+            try testArgs(f128, f80, -nan(f80));
+            try testArgs(f128, f80, -inf(f80));
+            try testArgs(f128, f80, -fmax(f80));
+            try testArgs(f128, f80, -1e1);
+            try testArgs(f128, f80, -1e0);
+            try testArgs(f128, f80, -1e-1);
+            try testArgs(f128, f80, -fmin(f80));
+            try testArgs(f128, f80, -tmin(f80));
+            try testArgs(f128, f80, -0.0);
+            try testArgs(f128, f80, 0.0);
+            try testArgs(f128, f80, tmin(f80));
+            try testArgs(f128, f80, fmin(f80));
+            try testArgs(f128, f80, 1e-1);
+            try testArgs(f128, f80, 1e0);
+            try testArgs(f128, f80, 1e1);
+            try testArgs(f128, f80, fmax(f80));
+            try testArgs(f128, f80, inf(f80));
+            try testArgs(f128, f80, nan(f80));
+
+            try testArgs(f16, f128, -nan(f128));
+            try testArgs(f16, f128, -inf(f128));
+            try testArgs(f16, f128, -fmax(f128));
+            try testArgs(f16, f128, -1e1);
+            try testArgs(f16, f128, -1e0);
+            try testArgs(f16, f128, -1e-1);
+            try testArgs(f16, f128, -fmin(f128));
+            try testArgs(f16, f128, -tmin(f128));
+            try testArgs(f16, f128, -0.0);
+            try testArgs(f16, f128, 0.0);
+            try testArgs(f16, f128, tmin(f128));
+            try testArgs(f16, f128, fmin(f128));
+            try testArgs(f16, f128, 1e-1);
+            try testArgs(f16, f128, 1e0);
+            try testArgs(f16, f128, 1e1);
+            try testArgs(f16, f128, fmax(f128));
+            try testArgs(f16, f128, inf(f128));
+            try testArgs(f16, f128, nan(f128));
+
+            try testArgs(f32, f128, -nan(f128));
+            try testArgs(f32, f128, -inf(f128));
+            try testArgs(f32, f128, -fmax(f128));
+            try testArgs(f32, f128, -1e1);
+            try testArgs(f32, f128, -1e0);
+            try testArgs(f32, f128, -1e-1);
+            try testArgs(f32, f128, -fmin(f128));
+            try testArgs(f32, f128, -tmin(f128));
+            try testArgs(f32, f128, -0.0);
+            try testArgs(f32, f128, 0.0);
+            try testArgs(f32, f128, tmin(f128));
+            try testArgs(f32, f128, fmin(f128));
+            try testArgs(f32, f128, 1e-1);
+            try testArgs(f32, f128, 1e0);
+            try testArgs(f32, f128, 1e1);
+            try testArgs(f32, f128, fmax(f128));
+            try testArgs(f32, f128, inf(f128));
+            try testArgs(f32, f128, nan(f128));
+
+            try testArgs(f64, f128, -nan(f128));
+            try testArgs(f64, f128, -inf(f128));
+            try testArgs(f64, f128, -fmax(f128));
+            try testArgs(f64, f128, -1e1);
+            try testArgs(f64, f128, -1e0);
+            try testArgs(f64, f128, -1e-1);
+            try testArgs(f64, f128, -fmin(f128));
+            try testArgs(f64, f128, -tmin(f128));
+            try testArgs(f64, f128, -0.0);
+            try testArgs(f64, f128, 0.0);
+            try testArgs(f64, f128, tmin(f128));
+            try testArgs(f64, f128, fmin(f128));
+            try testArgs(f64, f128, 1e-1);
+            try testArgs(f64, f128, 1e0);
+            try testArgs(f64, f128, 1e1);
+            try testArgs(f64, f128, fmax(f128));
+            try testArgs(f64, f128, inf(f128));
+            try testArgs(f64, f128, nan(f128));
+
+            try testArgs(f80, f128, -nan(f128));
+            try testArgs(f80, f128, -inf(f128));
+            try testArgs(f80, f128, -fmax(f128));
+            try testArgs(f80, f128, -1e1);
+            try testArgs(f80, f128, -1e0);
+            try testArgs(f80, f128, -1e-1);
+            try testArgs(f80, f128, -fmin(f128));
+            try testArgs(f80, f128, -tmin(f128));
+            try testArgs(f80, f128, -0.0);
+            try testArgs(f80, f128, 0.0);
+            try testArgs(f80, f128, tmin(f128));
+            try testArgs(f80, f128, fmin(f128));
+            try testArgs(f80, f128, 1e-1);
+            try testArgs(f80, f128, 1e0);
+            try testArgs(f80, f128, 1e1);
+            try testArgs(f80, f128, fmax(f128));
+            try testArgs(f80, f128, inf(f128));
+            try testArgs(f80, f128, nan(f128));
+
+            try testArgs(f128, f128, -nan(f128));
+            try testArgs(f128, f128, -inf(f128));
+            try testArgs(f128, f128, -fmax(f128));
+            try testArgs(f128, f128, -1e1);
+            try testArgs(f128, f128, -1e0);
+            try testArgs(f128, f128, -1e-1);
+            try testArgs(f128, f128, -fmin(f128));
+            try testArgs(f128, f128, -tmin(f128));
+            try testArgs(f128, f128, -0.0);
+            try testArgs(f128, f128, 0.0);
+            try testArgs(f128, f128, tmin(f128));
+            try testArgs(f128, f128, fmin(f128));
+            try testArgs(f128, f128, 1e-1);
+            try testArgs(f128, f128, 1e0);
+            try testArgs(f128, f128, 1e1);
+            try testArgs(f128, f128, fmax(f128));
+            try testArgs(f128, f128, inf(f128));
+            try testArgs(f128, f128, nan(f128));
+        }
+        fn testIntVectors() !void {
+            try testArgs(@Vector(2, i8), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u8), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i16), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u16), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i32), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u32), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i64), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u64), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i128), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u128), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i256), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u256), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i512), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u512), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i1024), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, u1024), @Vector(2, i1), .{ -1, 0 });
+            try testArgs(@Vector(2, i8), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u8), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i16), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u16), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i32), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u32), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i64), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u64), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i128), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u128), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i256), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u256), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i512), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u512), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, i1024), @Vector(2, u1), .{ 0, 1 });
+            try testArgs(@Vector(2, u1024), @Vector(2, u1), .{ 0, 1 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i2), .{ -1 << 1, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u8), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i16), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u16), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i32), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u32), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i64), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u64), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i128), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u128), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i256), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u256), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i512), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u512), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u2), .{ 0, 1, 1 << 1 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i3), .{ -1 << 2, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u8), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i16), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u16), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i32), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u32), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i64), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u64), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i128), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u128), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i256), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u256), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i512), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u512), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u3), .{ 0, 1, 1 << 2 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i4), .{ -1 << 3, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u8), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i16), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u16), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i32), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u32), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i64), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u64), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i128), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u128), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i256), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u256), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i512), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u512), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u4), .{ 0, 1, 1 << 3 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i5), .{ -1 << 4, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u8), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i16), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u16), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i32), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u32), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i64), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u64), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i128), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u128), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i256), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u256), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i512), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u512), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u5), .{ 0, 1, 1 << 4 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i7), .{ -1 << 6, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u8), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i16), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u16), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i32), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u32), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i64), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u64), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i128), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u128), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i256), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u256), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i512), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u512), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u7), .{ 0, 1, 1 << 6 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i8), .{ -1 << 7, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u8), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i16), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u16), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i32), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u32), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i64), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u64), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i128), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u128), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i256), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u256), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i512), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u512), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u8), .{ 0, 1, 1 << 7 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i9), .{ -1 << 8, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u8), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i16), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u16), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i32), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u32), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i64), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u64), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i128), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u128), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i256), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u256), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i512), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u512), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u9), .{ 0, 1, 1 << 8 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i15), .{ -1 << 14, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u8), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i16), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u16), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i32), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u32), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i64), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u64), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i128), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u128), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i256), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u256), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i512), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u512), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u15), .{ 0, 1, 1 << 14 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i16), .{ -1 << 15, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u8), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i16), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u16), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i32), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u32), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i64), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u64), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i128), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u128), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i256), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u256), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i512), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u512), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u16), .{ 0, 1, 1 << 15 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i17), .{ -1 << 16, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u8), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i16), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u16), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i32), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u32), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i64), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u64), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i128), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u128), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i256), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u256), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i512), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u512), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u17), .{ 0, 1, 1 << 16 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i31), .{ -1 << 30, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u8), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i16), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u16), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i32), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u32), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i64), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u64), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i128), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u128), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i256), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u256), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i512), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u512), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u31), .{ 0, 1, 1 << 30 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i32), .{ -1 << 31, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u8), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i16), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u16), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i32), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u32), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i64), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u64), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i128), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u128), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i256), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u256), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i512), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u512), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u32), .{ 0, 1, 1 << 31 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i33), .{ -1 << 32, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u8), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i16), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u16), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i32), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u32), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i64), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u64), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i128), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u128), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i256), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u256), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i512), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u512), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u33), .{ 0, 1, 1 << 32 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i63), .{ -1 << 62, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u8), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u16), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u32), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u64), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u128), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u256), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u512), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u63), .{ 0, 1, 1 << 62 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i64), .{ -1 << 63, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u8), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u16), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u32), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u64), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u128), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u256), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u512), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u64), .{ 0, 1, 1 << 63 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i65), .{ -1 << 64, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u8), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u16), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u32), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u64), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u128), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u256), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u512), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u65), .{ 0, 1, 1 << 64 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i95), .{ -1 << 94, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u8), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u16), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u32), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u64), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u128), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u256), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u512), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u95), .{ 0, 1, 1 << 94 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i96), .{ -1 << 95, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u8), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u16), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u32), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u64), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u128), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u256), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u512), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u96), .{ 0, 1, 1 << 95 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i97), .{ -1 << 96, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u8), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u16), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u32), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u64), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u128), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u256), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u512), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u97), .{ 0, 1, 1 << 96 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i127), .{ -1 << 126, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u8), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u16), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u32), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u64), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u128), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u256), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u512), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u127), .{ 0, 1, 1 << 126 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i128), .{ -1 << 127, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u8), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u16), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u32), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u64), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u128), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u256), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u512), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u128), .{ 0, 1, 1 << 127 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i129), .{ -1 << 128, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u8), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u16), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u32), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u64), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u128), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u256), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u512), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u129), .{ 0, 1, 1 << 128 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i159), .{ -1 << 158, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u8), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u16), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u32), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u64), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u128), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u256), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u512), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u159), .{ 0, 1, 1 << 158 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i160), .{ -1 << 159, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u8), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u16), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u32), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u64), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u128), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u256), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u512), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u160), .{ 0, 1, 1 << 159 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i161), .{ -1 << 160, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u8), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u16), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u32), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u64), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u128), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u256), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u512), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u161), .{ 0, 1, 1 << 160 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i191), .{ -1 << 190, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u8), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u16), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u32), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u64), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u128), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u256), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u512), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u191), .{ 0, 1, 1 << 190 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i192), .{ -1 << 191, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u8), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u16), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u32), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u64), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u128), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u256), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u512), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u192), .{ 0, 1, 1 << 191 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i193), .{ -1 << 192, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u8), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u16), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u32), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u64), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u128), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u256), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u512), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u193), .{ 0, 1, 1 << 192 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i223), .{ -1 << 222, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u8), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u16), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u32), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u64), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u128), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u256), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u512), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u223), .{ 0, 1, 1 << 222 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i224), .{ -1 << 223, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u8), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u16), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u32), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u64), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u128), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u256), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u512), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u224), .{ 0, 1, 1 << 223 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i225), .{ -1 << 224, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u8), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u16), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u32), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u64), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u128), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u256), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u512), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u225), .{ 0, 1, 1 << 224 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i255), .{ -1 << 254, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u8), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u16), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u32), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u64), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u128), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u256), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u512), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u255), .{ 0, 1, 1 << 254 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i256), .{ -1 << 255, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u8), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u16), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u32), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u64), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u128), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u256), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u512), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u256), .{ 0, 1, 1 << 255 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i257), .{ -1 << 256, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u8), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u16), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u32), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u64), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u128), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u256), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u512), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u257), .{ 0, 1, 1 << 256 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i511), .{ -1 << 510, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u8), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u16), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u32), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u64), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u128), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u256), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u512), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u511), .{ 0, 1, 1 << 510 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i512), .{ -1 << 511, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u8), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u16), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u32), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u64), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u128), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u256), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u512), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u512), .{ 0, 1, 1 << 511 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i513), .{ -1 << 512, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u8), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u16), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u32), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u64), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u128), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u256), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u512), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u513), .{ 0, 1, 1 << 512 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i1023), .{ -1 << 1022, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u8), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u16), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u32), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u64), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u128), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u256), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u512), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u1023), .{ 0, 1, 1 << 1022 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i1024), .{ -1 << 1023, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u8), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u16), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u32), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u64), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u128), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u256), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u512), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u1024), .{ 0, 1, 1 << 1023 });
+
+            try testArgs(@Vector(3, i8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u8), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u16), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u32), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u64), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u128), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u256), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u512), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, u1024), @Vector(3, i1025), .{ -1 << 1024, -1, 0 });
+            try testArgs(@Vector(3, i8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u8), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u16), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u32), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u64), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u128), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u256), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u512), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, i1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+            try testArgs(@Vector(3, u1024), @Vector(3, u1025), .{ 0, 1, 1 << 1024 });
+        }
+        fn testFloatVectors() !void {
+            @setEvalBranchQuota(6_700);
+
+            try testArgs(@Vector(1, f16), @Vector(1, f16), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f16), @Vector(2, f16), .{
+                -inf(f16), -1e-2,
+            });
+            try testArgs(@Vector(4, f16), @Vector(4, f16), .{
+                -1e2, 1e-1, fmax(f16), 1e-2,
+            });
+            try testArgs(@Vector(8, f16), @Vector(8, f16), .{
+                -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f16), @Vector(16, f16), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f16), @Vector(32, f16), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f32), @Vector(1, f16), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f32), @Vector(2, f16), .{
+                -inf(f16), -1e-2,
+            });
+            try testArgs(@Vector(4, f32), @Vector(4, f16), .{
+                -1e2, 1e-1, fmax(f16), 1e-2,
+            });
+            try testArgs(@Vector(8, f32), @Vector(8, f16), .{
+                -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f32), @Vector(16, f16), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f32), @Vector(32, f16), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f64), @Vector(1, f16), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f64), @Vector(2, f16), .{
+                -inf(f16), -1e-2,
+            });
+            try testArgs(@Vector(4, f64), @Vector(4, f16), .{
+                -1e2, 1e-1, fmax(f16), 1e-2,
+            });
+            try testArgs(@Vector(8, f64), @Vector(8, f16), .{
+                -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f64), @Vector(16, f16), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f64), @Vector(32, f16), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f80), @Vector(1, f16), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f80), @Vector(2, f16), .{
+                -inf(f16), -1e-2,
+            });
+            try testArgs(@Vector(4, f80), @Vector(4, f16), .{
+                -1e2, 1e-1, fmax(f16), 1e-2,
+            });
+            try testArgs(@Vector(8, f80), @Vector(8, f16), .{
+                -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f80), @Vector(16, f16), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f80), @Vector(32, f16), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f128), @Vector(1, f16), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f128), @Vector(2, f16), .{
+                -inf(f16), -1e-2,
+            });
+            try testArgs(@Vector(4, f128), @Vector(4, f16), .{
+                -1e2, 1e-1, fmax(f16), 1e-2,
+            });
+            try testArgs(@Vector(8, f128), @Vector(8, f16), .{
+                -1e-1, tmin(f16), -1e3, fmin(f16), nan(f16), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f128), @Vector(16, f16), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f128), @Vector(32, f16), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f16), @Vector(1, f32), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f16), @Vector(2, f32), .{
+                -inf(f32), -1e-2,
+            });
+            try testArgs(@Vector(4, f16), @Vector(4, f32), .{
+                -1e2, 1e-1, fmax(f32), 1e-2,
+            });
+            try testArgs(@Vector(8, f16), @Vector(8, f32), .{
+                -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f16), @Vector(16, f32), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f16), @Vector(32, f32), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f32), @Vector(1, f32), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f32), @Vector(2, f32), .{
+                -inf(f32), -1e-2,
+            });
+            try testArgs(@Vector(4, f32), @Vector(4, f32), .{
+                -1e2, 1e-1, fmax(f32), 1e-2,
+            });
+            try testArgs(@Vector(8, f32), @Vector(8, f32), .{
+                -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f32), @Vector(16, f32), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f32), @Vector(32, f32), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f64), @Vector(1, f32), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f64), @Vector(2, f32), .{
+                -inf(f32), -1e-2,
+            });
+            try testArgs(@Vector(4, f64), @Vector(4, f32), .{
+                -1e2, 1e-1, fmax(f32), 1e-2,
+            });
+            try testArgs(@Vector(8, f64), @Vector(8, f32), .{
+                -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f64), @Vector(16, f32), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f64), @Vector(32, f32), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f80), @Vector(1, f32), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f80), @Vector(2, f32), .{
+                -inf(f32), -1e-2,
+            });
+            try testArgs(@Vector(4, f80), @Vector(4, f32), .{
+                -1e2, 1e-1, fmax(f32), 1e-2,
+            });
+            try testArgs(@Vector(8, f80), @Vector(8, f32), .{
+                -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f80), @Vector(16, f32), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f80), @Vector(32, f32), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f128), @Vector(1, f32), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f128), @Vector(2, f32), .{
+                -inf(f32), -1e-2,
+            });
+            try testArgs(@Vector(4, f128), @Vector(4, f32), .{
+                -1e2, 1e-1, fmax(f32), 1e-2,
+            });
+            try testArgs(@Vector(8, f128), @Vector(8, f32), .{
+                -1e-1, tmin(f32), -1e3, fmin(f32), nan(f32), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f128), @Vector(16, f32), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f128), @Vector(32, f32), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f16), @Vector(1, f64), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f16), @Vector(2, f64), .{
+                -inf(f64), -1e-2,
+            });
+            try testArgs(@Vector(4, f16), @Vector(4, f64), .{
+                -1e2, 1e-1, fmax(f64), 1e-2,
+            });
+            try testArgs(@Vector(8, f16), @Vector(8, f64), .{
+                -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f16), @Vector(16, f64), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f16), @Vector(32, f64), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f32), @Vector(1, f64), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f32), @Vector(2, f64), .{
+                -inf(f64), -1e-2,
+            });
+            try testArgs(@Vector(4, f32), @Vector(4, f64), .{
+                -1e2, 1e-1, fmax(f64), 1e-2,
+            });
+            try testArgs(@Vector(8, f32), @Vector(8, f64), .{
+                -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f32), @Vector(16, f64), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f32), @Vector(32, f64), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f64), @Vector(1, f64), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f64), @Vector(2, f64), .{
+                -inf(f64), -1e-2,
+            });
+            try testArgs(@Vector(4, f64), @Vector(4, f64), .{
+                -1e2, 1e-1, fmax(f64), 1e-2,
+            });
+            try testArgs(@Vector(8, f64), @Vector(8, f64), .{
+                -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f64), @Vector(16, f64), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f64), @Vector(32, f64), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f80), @Vector(1, f64), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f80), @Vector(2, f64), .{
+                -inf(f64), -1e-2,
+            });
+            try testArgs(@Vector(4, f80), @Vector(4, f64), .{
+                -1e2, 1e-1, fmax(f64), 1e-2,
+            });
+            try testArgs(@Vector(8, f80), @Vector(8, f64), .{
+                -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f80), @Vector(16, f64), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f80), @Vector(32, f64), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f128), @Vector(1, f64), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f128), @Vector(2, f64), .{
+                -inf(f64), -1e-2,
+            });
+            try testArgs(@Vector(4, f128), @Vector(4, f64), .{
+                -1e2, 1e-1, fmax(f64), 1e-2,
+            });
+            try testArgs(@Vector(8, f128), @Vector(8, f64), .{
+                -1e-1, tmin(f64), -1e3, fmin(f64), nan(f64), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f128), @Vector(16, f64), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f128), @Vector(32, f64), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f16), @Vector(1, f80), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f16), @Vector(2, f80), .{
+                -inf(f80), -1e-2,
+            });
+            try testArgs(@Vector(4, f16), @Vector(4, f80), .{
+                -1e2, 1e-1, fmax(f80), 1e-2,
+            });
+            try testArgs(@Vector(8, f16), @Vector(8, f80), .{
+                -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f16), @Vector(16, f80), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f16), @Vector(32, f80), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f32), @Vector(1, f80), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f32), @Vector(2, f80), .{
+                -inf(f80), -1e-2,
+            });
+            try testArgs(@Vector(4, f32), @Vector(4, f80), .{
+                -1e2, 1e-1, fmax(f80), 1e-2,
+            });
+            try testArgs(@Vector(8, f32), @Vector(8, f80), .{
+                -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f32), @Vector(16, f80), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f32), @Vector(32, f80), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f64), @Vector(1, f80), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f64), @Vector(2, f80), .{
+                -inf(f80), -1e-2,
+            });
+            try testArgs(@Vector(4, f64), @Vector(4, f80), .{
+                -1e2, 1e-1, fmax(f80), 1e-2,
+            });
+            try testArgs(@Vector(8, f64), @Vector(8, f80), .{
+                -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f64), @Vector(16, f80), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f64), @Vector(32, f80), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f80), @Vector(1, f80), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f80), @Vector(2, f80), .{
+                -inf(f80), -1e-2,
+            });
+            try testArgs(@Vector(4, f80), @Vector(4, f80), .{
+                -1e2, 1e-1, fmax(f80), 1e-2,
+            });
+            try testArgs(@Vector(8, f80), @Vector(8, f80), .{
+                -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f80), @Vector(16, f80), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f80), @Vector(32, f80), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f128), @Vector(1, f80), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f128), @Vector(2, f80), .{
+                -inf(f80), -1e-2,
+            });
+            try testArgs(@Vector(4, f128), @Vector(4, f80), .{
+                -1e2, 1e-1, fmax(f80), 1e-2,
+            });
+            try testArgs(@Vector(8, f128), @Vector(8, f80), .{
+                -1e-1, tmin(f80), -1e3, fmin(f80), nan(f80), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f128), @Vector(16, f80), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f128), @Vector(32, f80), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f16), @Vector(1, f128), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f16), @Vector(2, f128), .{
+                -inf(f128), -1e-2,
+            });
+            try testArgs(@Vector(4, f16), @Vector(4, f128), .{
+                -1e2, 1e-1, fmax(f128), 1e-2,
+            });
+            try testArgs(@Vector(8, f16), @Vector(8, f128), .{
+                -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f16), @Vector(16, f128), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f16), @Vector(32, f128), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f32), @Vector(1, f128), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f32), @Vector(2, f128), .{
+                -inf(f128), -1e-2,
+            });
+            try testArgs(@Vector(4, f32), @Vector(4, f128), .{
+                -1e2, 1e-1, fmax(f128), 1e-2,
+            });
+            try testArgs(@Vector(8, f32), @Vector(8, f128), .{
+                -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f32), @Vector(16, f128), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f32), @Vector(32, f128), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f64), @Vector(1, f128), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f64), @Vector(2, f128), .{
+                -inf(f128), -1e-2,
+            });
+            try testArgs(@Vector(4, f64), @Vector(4, f128), .{
+                -1e2, 1e-1, fmax(f128), 1e-2,
+            });
+            try testArgs(@Vector(8, f64), @Vector(8, f128), .{
+                -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f64), @Vector(16, f128), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f64), @Vector(32, f128), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f80), @Vector(1, f128), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f80), @Vector(2, f128), .{
+                -inf(f128), -1e-2,
+            });
+            try testArgs(@Vector(4, f80), @Vector(4, f128), .{
+                -1e2, 1e-1, fmax(f128), 1e-2,
+            });
+            try testArgs(@Vector(8, f80), @Vector(8, f128), .{
+                -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f80), @Vector(16, f128), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f80), @Vector(32, f128), .{
+                -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,
+                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),
+            });
+
+            try testArgs(@Vector(1, f128), @Vector(1, f128), .{
+                1e0,
+            });
+            try testArgs(@Vector(2, f128), @Vector(2, f128), .{
+                -inf(f128), -1e-2,
+            });
+            try testArgs(@Vector(4, f128), @Vector(4, f128), .{
+                -1e2, 1e-1, fmax(f128), 1e-2,
+            });
+            try testArgs(@Vector(8, f128), @Vector(8, f128), .{
+                -1e-1, tmin(f128), -1e3, fmin(f128), nan(f128), -1e-3, 1e1, 1e4,
+            });
+            try testArgs(@Vector(16, f128), @Vector(16, f128), .{
+                -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,
+            });
+            try testArgs(@Vector(32, f128), @Vector(32, f128), .{
+                -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,
+                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),
+            });
+        }
+    };
+}
+
 fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false }) type {
     return struct {
         // noinline so that `mem_lhs` and `mem_rhs` are on the stack
@@ -1714,18 +8055,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, -nan(f16), -nan(f16));
             try testArgs(f16, -nan(f16), -inf(f16));
             try testArgs(f16, -nan(f16), -fmax(f16));
-            try testArgs(f16, -nan(f16), -10.0);
-            try testArgs(f16, -nan(f16), -1.0);
-            try testArgs(f16, -nan(f16), -0.1);
+            try testArgs(f16, -nan(f16), -1e1);
+            try testArgs(f16, -nan(f16), -1e0);
+            try testArgs(f16, -nan(f16), -1e-1);
             try testArgs(f16, -nan(f16), -fmin(f16));
             try testArgs(f16, -nan(f16), -tmin(f16));
             try testArgs(f16, -nan(f16), -0.0);
             try testArgs(f16, -nan(f16), 0.0);
             try testArgs(f16, -nan(f16), tmin(f16));
             try testArgs(f16, -nan(f16), fmin(f16));
-            try testArgs(f16, -nan(f16), 0.1);
-            try testArgs(f16, -nan(f16), 1.0);
-            try testArgs(f16, -nan(f16), 10.0);
+            try testArgs(f16, -nan(f16), 1e-1);
+            try testArgs(f16, -nan(f16), 1e0);
+            try testArgs(f16, -nan(f16), 1e1);
             try testArgs(f16, -nan(f16), fmax(f16));
             try testArgs(f16, -nan(f16), inf(f16));
             try testArgs(f16, -nan(f16), nan(f16));
@@ -1733,18 +8074,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, -inf(f16), -nan(f16));
             try testArgs(f16, -inf(f16), -inf(f16));
             try testArgs(f16, -inf(f16), -fmax(f16));
-            try testArgs(f16, -inf(f16), -10.0);
-            try testArgs(f16, -inf(f16), -1.0);
-            try testArgs(f16, -inf(f16), -0.1);
+            try testArgs(f16, -inf(f16), -1e1);
+            try testArgs(f16, -inf(f16), -1e0);
+            try testArgs(f16, -inf(f16), -1e-1);
             try testArgs(f16, -inf(f16), -fmin(f16));
             try testArgs(f16, -inf(f16), -tmin(f16));
             try testArgs(f16, -inf(f16), -0.0);
             try testArgs(f16, -inf(f16), 0.0);
             try testArgs(f16, -inf(f16), tmin(f16));
             try testArgs(f16, -inf(f16), fmin(f16));
-            try testArgs(f16, -inf(f16), 0.1);
-            try testArgs(f16, -inf(f16), 1.0);
-            try testArgs(f16, -inf(f16), 10.0);
+            try testArgs(f16, -inf(f16), 1e-1);
+            try testArgs(f16, -inf(f16), 1e0);
+            try testArgs(f16, -inf(f16), 1e1);
             try testArgs(f16, -inf(f16), fmax(f16));
             try testArgs(f16, -inf(f16), inf(f16));
             try testArgs(f16, -inf(f16), nan(f16));
@@ -1752,94 +8093,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, -fmax(f16), -nan(f16));
             try testArgs(f16, -fmax(f16), -inf(f16));
             try testArgs(f16, -fmax(f16), -fmax(f16));
-            try testArgs(f16, -fmax(f16), -10.0);
-            try testArgs(f16, -fmax(f16), -1.0);
-            try testArgs(f16, -fmax(f16), -0.1);
+            try testArgs(f16, -fmax(f16), -1e1);
+            try testArgs(f16, -fmax(f16), -1e0);
+            try testArgs(f16, -fmax(f16), -1e-1);
             try testArgs(f16, -fmax(f16), -fmin(f16));
             try testArgs(f16, -fmax(f16), -tmin(f16));
             try testArgs(f16, -fmax(f16), -0.0);
             try testArgs(f16, -fmax(f16), 0.0);
             try testArgs(f16, -fmax(f16), tmin(f16));
             try testArgs(f16, -fmax(f16), fmin(f16));
-            try testArgs(f16, -fmax(f16), 0.1);
-            try testArgs(f16, -fmax(f16), 1.0);
-            try testArgs(f16, -fmax(f16), 10.0);
+            try testArgs(f16, -fmax(f16), 1e-1);
+            try testArgs(f16, -fmax(f16), 1e0);
+            try testArgs(f16, -fmax(f16), 1e1);
             try testArgs(f16, -fmax(f16), fmax(f16));
             try testArgs(f16, -fmax(f16), inf(f16));
             try testArgs(f16, -fmax(f16), nan(f16));
 
-            try testArgs(f16, -10.0, -nan(f16));
-            try testArgs(f16, -10.0, -inf(f16));
-            try testArgs(f16, -10.0, -fmax(f16));
-            try testArgs(f16, -10.0, -10.0);
-            try testArgs(f16, -10.0, -1.0);
-            try testArgs(f16, -10.0, -0.1);
-            try testArgs(f16, -10.0, -fmin(f16));
-            try testArgs(f16, -10.0, -tmin(f16));
-            try testArgs(f16, -10.0, -0.0);
-            try testArgs(f16, -10.0, 0.0);
-            try testArgs(f16, -10.0, tmin(f16));
-            try testArgs(f16, -10.0, fmin(f16));
-            try testArgs(f16, -10.0, 0.1);
-            try testArgs(f16, -10.0, 1.0);
-            try testArgs(f16, -10.0, 10.0);
-            try testArgs(f16, -10.0, fmax(f16));
-            try testArgs(f16, -10.0, inf(f16));
-            try testArgs(f16, -10.0, nan(f16));
-
-            try testArgs(f16, -1.0, -nan(f16));
-            try testArgs(f16, -1.0, -inf(f16));
-            try testArgs(f16, -1.0, -fmax(f16));
-            try testArgs(f16, -1.0, -10.0);
-            try testArgs(f16, -1.0, -1.0);
-            try testArgs(f16, -1.0, -0.1);
-            try testArgs(f16, -1.0, -fmin(f16));
-            try testArgs(f16, -1.0, -tmin(f16));
-            try testArgs(f16, -1.0, -0.0);
-            try testArgs(f16, -1.0, 0.0);
-            try testArgs(f16, -1.0, tmin(f16));
-            try testArgs(f16, -1.0, fmin(f16));
-            try testArgs(f16, -1.0, 0.1);
-            try testArgs(f16, -1.0, 1.0);
-            try testArgs(f16, -1.0, 10.0);
-            try testArgs(f16, -1.0, fmax(f16));
-            try testArgs(f16, -1.0, inf(f16));
-            try testArgs(f16, -1.0, nan(f16));
-
-            try testArgs(f16, -0.1, -nan(f16));
-            try testArgs(f16, -0.1, -inf(f16));
-            try testArgs(f16, -0.1, -fmax(f16));
-            try testArgs(f16, -0.1, -10.0);
-            try testArgs(f16, -0.1, -1.0);
-            try testArgs(f16, -0.1, -0.1);
-            try testArgs(f16, -0.1, -fmin(f16));
-            try testArgs(f16, -0.1, -tmin(f16));
-            try testArgs(f16, -0.1, -0.0);
-            try testArgs(f16, -0.1, 0.0);
-            try testArgs(f16, -0.1, tmin(f16));
-            try testArgs(f16, -0.1, fmin(f16));
-            try testArgs(f16, -0.1, 0.1);
-            try testArgs(f16, -0.1, 1.0);
-            try testArgs(f16, -0.1, 10.0);
-            try testArgs(f16, -0.1, fmax(f16));
-            try testArgs(f16, -0.1, inf(f16));
-            try testArgs(f16, -0.1, nan(f16));
+            try testArgs(f16, -1e1, -nan(f16));
+            try testArgs(f16, -1e1, -inf(f16));
+            try testArgs(f16, -1e1, -fmax(f16));
+            try testArgs(f16, -1e1, -1e1);
+            try testArgs(f16, -1e1, -1e0);
+            try testArgs(f16, -1e1, -1e-1);
+            try testArgs(f16, -1e1, -fmin(f16));
+            try testArgs(f16, -1e1, -tmin(f16));
+            try testArgs(f16, -1e1, -0.0);
+            try testArgs(f16, -1e1, 0.0);
+            try testArgs(f16, -1e1, tmin(f16));
+            try testArgs(f16, -1e1, fmin(f16));
+            try testArgs(f16, -1e1, 1e-1);
+            try testArgs(f16, -1e1, 1e0);
+            try testArgs(f16, -1e1, 1e1);
+            try testArgs(f16, -1e1, fmax(f16));
+            try testArgs(f16, -1e1, inf(f16));
+            try testArgs(f16, -1e1, nan(f16));
+
+            try testArgs(f16, -1e0, -nan(f16));
+            try testArgs(f16, -1e0, -inf(f16));
+            try testArgs(f16, -1e0, -fmax(f16));
+            try testArgs(f16, -1e0, -1e1);
+            try testArgs(f16, -1e0, -1e0);
+            try testArgs(f16, -1e0, -1e-1);
+            try testArgs(f16, -1e0, -fmin(f16));
+            try testArgs(f16, -1e0, -tmin(f16));
+            try testArgs(f16, -1e0, -0.0);
+            try testArgs(f16, -1e0, 0.0);
+            try testArgs(f16, -1e0, tmin(f16));
+            try testArgs(f16, -1e0, fmin(f16));
+            try testArgs(f16, -1e0, 1e-1);
+            try testArgs(f16, -1e0, 1e0);
+            try testArgs(f16, -1e0, 1e1);
+            try testArgs(f16, -1e0, fmax(f16));
+            try testArgs(f16, -1e0, inf(f16));
+            try testArgs(f16, -1e0, nan(f16));
+
+            try testArgs(f16, -1e-1, -nan(f16));
+            try testArgs(f16, -1e-1, -inf(f16));
+            try testArgs(f16, -1e-1, -fmax(f16));
+            try testArgs(f16, -1e-1, -1e1);
+            try testArgs(f16, -1e-1, -1e0);
+            try testArgs(f16, -1e-1, -1e-1);
+            try testArgs(f16, -1e-1, -fmin(f16));
+            try testArgs(f16, -1e-1, -tmin(f16));
+            try testArgs(f16, -1e-1, -0.0);
+            try testArgs(f16, -1e-1, 0.0);
+            try testArgs(f16, -1e-1, tmin(f16));
+            try testArgs(f16, -1e-1, fmin(f16));
+            try testArgs(f16, -1e-1, 1e-1);
+            try testArgs(f16, -1e-1, 1e0);
+            try testArgs(f16, -1e-1, 1e1);
+            try testArgs(f16, -1e-1, fmax(f16));
+            try testArgs(f16, -1e-1, inf(f16));
+            try testArgs(f16, -1e-1, nan(f16));
 
             try testArgs(f16, -fmin(f16), -nan(f16));
             try testArgs(f16, -fmin(f16), -inf(f16));
             try testArgs(f16, -fmin(f16), -fmax(f16));
-            try testArgs(f16, -fmin(f16), -10.0);
-            try testArgs(f16, -fmin(f16), -1.0);
-            try testArgs(f16, -fmin(f16), -0.1);
+            try testArgs(f16, -fmin(f16), -1e1);
+            try testArgs(f16, -fmin(f16), -1e0);
+            try testArgs(f16, -fmin(f16), -1e-1);
             try testArgs(f16, -fmin(f16), -fmin(f16));
             try testArgs(f16, -fmin(f16), -tmin(f16));
             try testArgs(f16, -fmin(f16), -0.0);
             try testArgs(f16, -fmin(f16), 0.0);
             try testArgs(f16, -fmin(f16), tmin(f16));
             try testArgs(f16, -fmin(f16), fmin(f16));
-            try testArgs(f16, -fmin(f16), 0.1);
-            try testArgs(f16, -fmin(f16), 1.0);
-            try testArgs(f16, -fmin(f16), 10.0);
+            try testArgs(f16, -fmin(f16), 1e-1);
+            try testArgs(f16, -fmin(f16), 1e0);
+            try testArgs(f16, -fmin(f16), 1e1);
             try testArgs(f16, -fmin(f16), fmax(f16));
             try testArgs(f16, -fmin(f16), inf(f16));
             try testArgs(f16, -fmin(f16), nan(f16));
@@ -1847,18 +8188,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, -tmin(f16), -nan(f16));
             try testArgs(f16, -tmin(f16), -inf(f16));
             try testArgs(f16, -tmin(f16), -fmax(f16));
-            try testArgs(f16, -tmin(f16), -10.0);
-            try testArgs(f16, -tmin(f16), -1.0);
-            try testArgs(f16, -tmin(f16), -0.1);
+            try testArgs(f16, -tmin(f16), -1e1);
+            try testArgs(f16, -tmin(f16), -1e0);
+            try testArgs(f16, -tmin(f16), -1e-1);
             try testArgs(f16, -tmin(f16), -fmin(f16));
             try testArgs(f16, -tmin(f16), -tmin(f16));
             try testArgs(f16, -tmin(f16), -0.0);
             try testArgs(f16, -tmin(f16), 0.0);
             try testArgs(f16, -tmin(f16), tmin(f16));
             try testArgs(f16, -tmin(f16), fmin(f16));
-            try testArgs(f16, -tmin(f16), 0.1);
-            try testArgs(f16, -tmin(f16), 1.0);
-            try testArgs(f16, -tmin(f16), 10.0);
+            try testArgs(f16, -tmin(f16), 1e-1);
+            try testArgs(f16, -tmin(f16), 1e0);
+            try testArgs(f16, -tmin(f16), 1e1);
             try testArgs(f16, -tmin(f16), fmax(f16));
             try testArgs(f16, -tmin(f16), inf(f16));
             try testArgs(f16, -tmin(f16), nan(f16));
@@ -1866,18 +8207,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, -0.0, -nan(f16));
             try testArgs(f16, -0.0, -inf(f16));
             try testArgs(f16, -0.0, -fmax(f16));
-            try testArgs(f16, -0.0, -10.0);
-            try testArgs(f16, -0.0, -1.0);
-            try testArgs(f16, -0.0, -0.1);
+            try testArgs(f16, -0.0, -1e1);
+            try testArgs(f16, -0.0, -1e0);
+            try testArgs(f16, -0.0, -1e-1);
             try testArgs(f16, -0.0, -fmin(f16));
             try testArgs(f16, -0.0, -tmin(f16));
             try testArgs(f16, -0.0, -0.0);
             try testArgs(f16, -0.0, 0.0);
             try testArgs(f16, -0.0, tmin(f16));
             try testArgs(f16, -0.0, fmin(f16));
-            try testArgs(f16, -0.0, 0.1);
-            try testArgs(f16, -0.0, 1.0);
-            try testArgs(f16, -0.0, 10.0);
+            try testArgs(f16, -0.0, 1e-1);
+            try testArgs(f16, -0.0, 1e0);
+            try testArgs(f16, -0.0, 1e1);
             try testArgs(f16, -0.0, fmax(f16));
             try testArgs(f16, -0.0, inf(f16));
             try testArgs(f16, -0.0, nan(f16));
@@ -1885,18 +8226,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, 0.0, -nan(f16));
             try testArgs(f16, 0.0, -inf(f16));
             try testArgs(f16, 0.0, -fmax(f16));
-            try testArgs(f16, 0.0, -10.0);
-            try testArgs(f16, 0.0, -1.0);
-            try testArgs(f16, 0.0, -0.1);
+            try testArgs(f16, 0.0, -1e1);
+            try testArgs(f16, 0.0, -1e0);
+            try testArgs(f16, 0.0, -1e-1);
             try testArgs(f16, 0.0, -fmin(f16));
             try testArgs(f16, 0.0, -tmin(f16));
             try testArgs(f16, 0.0, -0.0);
             try testArgs(f16, 0.0, 0.0);
             try testArgs(f16, 0.0, tmin(f16));
             try testArgs(f16, 0.0, fmin(f16));
-            try testArgs(f16, 0.0, 0.1);
-            try testArgs(f16, 0.0, 1.0);
-            try testArgs(f16, 0.0, 10.0);
+            try testArgs(f16, 0.0, 1e-1);
+            try testArgs(f16, 0.0, 1e0);
+            try testArgs(f16, 0.0, 1e1);
             try testArgs(f16, 0.0, fmax(f16));
             try testArgs(f16, 0.0, inf(f16));
             try testArgs(f16, 0.0, nan(f16));
@@ -1904,18 +8245,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, tmin(f16), -nan(f16));
             try testArgs(f16, tmin(f16), -inf(f16));
             try testArgs(f16, tmin(f16), -fmax(f16));
-            try testArgs(f16, tmin(f16), -10.0);
-            try testArgs(f16, tmin(f16), -1.0);
-            try testArgs(f16, tmin(f16), -0.1);
+            try testArgs(f16, tmin(f16), -1e1);
+            try testArgs(f16, tmin(f16), -1e0);
+            try testArgs(f16, tmin(f16), -1e-1);
             try testArgs(f16, tmin(f16), -fmin(f16));
             try testArgs(f16, tmin(f16), -tmin(f16));
             try testArgs(f16, tmin(f16), -0.0);
             try testArgs(f16, tmin(f16), 0.0);
             try testArgs(f16, tmin(f16), tmin(f16));
             try testArgs(f16, tmin(f16), fmin(f16));
-            try testArgs(f16, tmin(f16), 0.1);
-            try testArgs(f16, tmin(f16), 1.0);
-            try testArgs(f16, tmin(f16), 10.0);
+            try testArgs(f16, tmin(f16), 1e-1);
+            try testArgs(f16, tmin(f16), 1e0);
+            try testArgs(f16, tmin(f16), 1e1);
             try testArgs(f16, tmin(f16), fmax(f16));
             try testArgs(f16, tmin(f16), inf(f16));
             try testArgs(f16, tmin(f16), nan(f16));
@@ -1923,94 +8264,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, fmin(f16), -nan(f16));
             try testArgs(f16, fmin(f16), -inf(f16));
             try testArgs(f16, fmin(f16), -fmax(f16));
-            try testArgs(f16, fmin(f16), -10.0);
-            try testArgs(f16, fmin(f16), -1.0);
-            try testArgs(f16, fmin(f16), -0.1);
+            try testArgs(f16, fmin(f16), -1e1);
+            try testArgs(f16, fmin(f16), -1e0);
+            try testArgs(f16, fmin(f16), -1e-1);
             try testArgs(f16, fmin(f16), -fmin(f16));
             try testArgs(f16, fmin(f16), -tmin(f16));
             try testArgs(f16, fmin(f16), -0.0);
             try testArgs(f16, fmin(f16), 0.0);
             try testArgs(f16, fmin(f16), tmin(f16));
             try testArgs(f16, fmin(f16), fmin(f16));
-            try testArgs(f16, fmin(f16), 0.1);
-            try testArgs(f16, fmin(f16), 1.0);
-            try testArgs(f16, fmin(f16), 10.0);
+            try testArgs(f16, fmin(f16), 1e-1);
+            try testArgs(f16, fmin(f16), 1e0);
+            try testArgs(f16, fmin(f16), 1e1);
             try testArgs(f16, fmin(f16), fmax(f16));
             try testArgs(f16, fmin(f16), inf(f16));
             try testArgs(f16, fmin(f16), nan(f16));
 
-            try testArgs(f16, 0.1, -nan(f16));
-            try testArgs(f16, 0.1, -inf(f16));
-            try testArgs(f16, 0.1, -fmax(f16));
-            try testArgs(f16, 0.1, -10.0);
-            try testArgs(f16, 0.1, -1.0);
-            try testArgs(f16, 0.1, -0.1);
-            try testArgs(f16, 0.1, -fmin(f16));
-            try testArgs(f16, 0.1, -tmin(f16));
-            try testArgs(f16, 0.1, -0.0);
-            try testArgs(f16, 0.1, 0.0);
-            try testArgs(f16, 0.1, tmin(f16));
-            try testArgs(f16, 0.1, fmin(f16));
-            try testArgs(f16, 0.1, 0.1);
-            try testArgs(f16, 0.1, 1.0);
-            try testArgs(f16, 0.1, 10.0);
-            try testArgs(f16, 0.1, fmax(f16));
-            try testArgs(f16, 0.1, inf(f16));
-            try testArgs(f16, 0.1, nan(f16));
-
-            try testArgs(f16, 1.0, -nan(f16));
-            try testArgs(f16, 1.0, -inf(f16));
-            try testArgs(f16, 1.0, -fmax(f16));
-            try testArgs(f16, 1.0, -10.0);
-            try testArgs(f16, 1.0, -1.0);
-            try testArgs(f16, 1.0, -0.1);
-            try testArgs(f16, 1.0, -fmin(f16));
-            try testArgs(f16, 1.0, -tmin(f16));
-            try testArgs(f16, 1.0, -0.0);
-            try testArgs(f16, 1.0, 0.0);
-            try testArgs(f16, 1.0, tmin(f16));
-            try testArgs(f16, 1.0, fmin(f16));
-            try testArgs(f16, 1.0, 0.1);
-            try testArgs(f16, 1.0, 1.0);
-            try testArgs(f16, 1.0, 10.0);
-            try testArgs(f16, 1.0, fmax(f16));
-            try testArgs(f16, 1.0, inf(f16));
-            try testArgs(f16, 1.0, nan(f16));
-
-            try testArgs(f16, 10.0, -nan(f16));
-            try testArgs(f16, 10.0, -inf(f16));
-            try testArgs(f16, 10.0, -fmax(f16));
-            try testArgs(f16, 10.0, -10.0);
-            try testArgs(f16, 10.0, -1.0);
-            try testArgs(f16, 10.0, -0.1);
-            try testArgs(f16, 10.0, -fmin(f16));
-            try testArgs(f16, 10.0, -tmin(f16));
-            try testArgs(f16, 10.0, -0.0);
-            try testArgs(f16, 10.0, 0.0);
-            try testArgs(f16, 10.0, tmin(f16));
-            try testArgs(f16, 10.0, fmin(f16));
-            try testArgs(f16, 10.0, 0.1);
-            try testArgs(f16, 10.0, 1.0);
-            try testArgs(f16, 10.0, 10.0);
-            try testArgs(f16, 10.0, fmax(f16));
-            try testArgs(f16, 10.0, inf(f16));
-            try testArgs(f16, 10.0, nan(f16));
+            try testArgs(f16, 1e-1, -nan(f16));
+            try testArgs(f16, 1e-1, -inf(f16));
+            try testArgs(f16, 1e-1, -fmax(f16));
+            try testArgs(f16, 1e-1, -1e1);
+            try testArgs(f16, 1e-1, -1e0);
+            try testArgs(f16, 1e-1, -1e-1);
+            try testArgs(f16, 1e-1, -fmin(f16));
+            try testArgs(f16, 1e-1, -tmin(f16));
+            try testArgs(f16, 1e-1, -0.0);
+            try testArgs(f16, 1e-1, 0.0);
+            try testArgs(f16, 1e-1, tmin(f16));
+            try testArgs(f16, 1e-1, fmin(f16));
+            try testArgs(f16, 1e-1, 1e-1);
+            try testArgs(f16, 1e-1, 1e0);
+            try testArgs(f16, 1e-1, 1e1);
+            try testArgs(f16, 1e-1, fmax(f16));
+            try testArgs(f16, 1e-1, inf(f16));
+            try testArgs(f16, 1e-1, nan(f16));
+
+            try testArgs(f16, 1e0, -nan(f16));
+            try testArgs(f16, 1e0, -inf(f16));
+            try testArgs(f16, 1e0, -fmax(f16));
+            try testArgs(f16, 1e0, -1e1);
+            try testArgs(f16, 1e0, -1e0);
+            try testArgs(f16, 1e0, -1e-1);
+            try testArgs(f16, 1e0, -fmin(f16));
+            try testArgs(f16, 1e0, -tmin(f16));
+            try testArgs(f16, 1e0, -0.0);
+            try testArgs(f16, 1e0, 0.0);
+            try testArgs(f16, 1e0, tmin(f16));
+            try testArgs(f16, 1e0, fmin(f16));
+            try testArgs(f16, 1e0, 1e-1);
+            try testArgs(f16, 1e0, 1e0);
+            try testArgs(f16, 1e0, 1e1);
+            try testArgs(f16, 1e0, fmax(f16));
+            try testArgs(f16, 1e0, inf(f16));
+            try testArgs(f16, 1e0, nan(f16));
+
+            try testArgs(f16, 1e1, -nan(f16));
+            try testArgs(f16, 1e1, -inf(f16));
+            try testArgs(f16, 1e1, -fmax(f16));
+            try testArgs(f16, 1e1, -1e1);
+            try testArgs(f16, 1e1, -1e0);
+            try testArgs(f16, 1e1, -1e-1);
+            try testArgs(f16, 1e1, -fmin(f16));
+            try testArgs(f16, 1e1, -tmin(f16));
+            try testArgs(f16, 1e1, -0.0);
+            try testArgs(f16, 1e1, 0.0);
+            try testArgs(f16, 1e1, tmin(f16));
+            try testArgs(f16, 1e1, fmin(f16));
+            try testArgs(f16, 1e1, 1e-1);
+            try testArgs(f16, 1e1, 1e0);
+            try testArgs(f16, 1e1, 1e1);
+            try testArgs(f16, 1e1, fmax(f16));
+            try testArgs(f16, 1e1, inf(f16));
+            try testArgs(f16, 1e1, nan(f16));
 
             try testArgs(f16, fmax(f16), -nan(f16));
             try testArgs(f16, fmax(f16), -inf(f16));
             try testArgs(f16, fmax(f16), -fmax(f16));
-            try testArgs(f16, fmax(f16), -10.0);
-            try testArgs(f16, fmax(f16), -1.0);
-            try testArgs(f16, fmax(f16), -0.1);
+            try testArgs(f16, fmax(f16), -1e1);
+            try testArgs(f16, fmax(f16), -1e0);
+            try testArgs(f16, fmax(f16), -1e-1);
             try testArgs(f16, fmax(f16), -fmin(f16));
             try testArgs(f16, fmax(f16), -tmin(f16));
             try testArgs(f16, fmax(f16), -0.0);
             try testArgs(f16, fmax(f16), 0.0);
             try testArgs(f16, fmax(f16), tmin(f16));
             try testArgs(f16, fmax(f16), fmin(f16));
-            try testArgs(f16, fmax(f16), 0.1);
-            try testArgs(f16, fmax(f16), 1.0);
-            try testArgs(f16, fmax(f16), 10.0);
+            try testArgs(f16, fmax(f16), 1e-1);
+            try testArgs(f16, fmax(f16), 1e0);
+            try testArgs(f16, fmax(f16), 1e1);
             try testArgs(f16, fmax(f16), fmax(f16));
             try testArgs(f16, fmax(f16), inf(f16));
             try testArgs(f16, fmax(f16), nan(f16));
@@ -2018,18 +8359,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, inf(f16), -nan(f16));
             try testArgs(f16, inf(f16), -inf(f16));
             try testArgs(f16, inf(f16), -fmax(f16));
-            try testArgs(f16, inf(f16), -10.0);
-            try testArgs(f16, inf(f16), -1.0);
-            try testArgs(f16, inf(f16), -0.1);
+            try testArgs(f16, inf(f16), -1e1);
+            try testArgs(f16, inf(f16), -1e0);
+            try testArgs(f16, inf(f16), -1e-1);
             try testArgs(f16, inf(f16), -fmin(f16));
             try testArgs(f16, inf(f16), -tmin(f16));
             try testArgs(f16, inf(f16), -0.0);
             try testArgs(f16, inf(f16), 0.0);
             try testArgs(f16, inf(f16), tmin(f16));
             try testArgs(f16, inf(f16), fmin(f16));
-            try testArgs(f16, inf(f16), 0.1);
-            try testArgs(f16, inf(f16), 1.0);
-            try testArgs(f16, inf(f16), 10.0);
+            try testArgs(f16, inf(f16), 1e-1);
+            try testArgs(f16, inf(f16), 1e0);
+            try testArgs(f16, inf(f16), 1e1);
             try testArgs(f16, inf(f16), fmax(f16));
             try testArgs(f16, inf(f16), inf(f16));
             try testArgs(f16, inf(f16), nan(f16));
@@ -2037,18 +8378,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f16, nan(f16), -nan(f16));
             try testArgs(f16, nan(f16), -inf(f16));
             try testArgs(f16, nan(f16), -fmax(f16));
-            try testArgs(f16, nan(f16), -10.0);
-            try testArgs(f16, nan(f16), -1.0);
-            try testArgs(f16, nan(f16), -0.1);
+            try testArgs(f16, nan(f16), -1e1);
+            try testArgs(f16, nan(f16), -1e0);
+            try testArgs(f16, nan(f16), -1e-1);
             try testArgs(f16, nan(f16), -fmin(f16));
             try testArgs(f16, nan(f16), -tmin(f16));
             try testArgs(f16, nan(f16), -0.0);
             try testArgs(f16, nan(f16), 0.0);
             try testArgs(f16, nan(f16), tmin(f16));
             try testArgs(f16, nan(f16), fmin(f16));
-            try testArgs(f16, nan(f16), 0.1);
-            try testArgs(f16, nan(f16), 1.0);
-            try testArgs(f16, nan(f16), 10.0);
+            try testArgs(f16, nan(f16), 1e-1);
+            try testArgs(f16, nan(f16), 1e0);
+            try testArgs(f16, nan(f16), 1e1);
             try testArgs(f16, nan(f16), fmax(f16));
             try testArgs(f16, nan(f16), inf(f16));
             try testArgs(f16, nan(f16), nan(f16));
@@ -2056,18 +8397,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, -nan(f32), -nan(f32));
             try testArgs(f32, -nan(f32), -inf(f32));
             try testArgs(f32, -nan(f32), -fmax(f32));
-            try testArgs(f32, -nan(f32), -10.0);
-            try testArgs(f32, -nan(f32), -1.0);
-            try testArgs(f32, -nan(f32), -0.1);
+            try testArgs(f32, -nan(f32), -1e1);
+            try testArgs(f32, -nan(f32), -1e0);
+            try testArgs(f32, -nan(f32), -1e-1);
             try testArgs(f32, -nan(f32), -fmin(f32));
             try testArgs(f32, -nan(f32), -tmin(f32));
             try testArgs(f32, -nan(f32), -0.0);
             try testArgs(f32, -nan(f32), 0.0);
             try testArgs(f32, -nan(f32), tmin(f32));
             try testArgs(f32, -nan(f32), fmin(f32));
-            try testArgs(f32, -nan(f32), 0.1);
-            try testArgs(f32, -nan(f32), 1.0);
-            try testArgs(f32, -nan(f32), 10.0);
+            try testArgs(f32, -nan(f32), 1e-1);
+            try testArgs(f32, -nan(f32), 1e0);
+            try testArgs(f32, -nan(f32), 1e1);
             try testArgs(f32, -nan(f32), fmax(f32));
             try testArgs(f32, -nan(f32), inf(f32));
             try testArgs(f32, -nan(f32), nan(f32));
@@ -2075,18 +8416,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, -inf(f32), -nan(f32));
             try testArgs(f32, -inf(f32), -inf(f32));
             try testArgs(f32, -inf(f32), -fmax(f32));
-            try testArgs(f32, -inf(f32), -10.0);
-            try testArgs(f32, -inf(f32), -1.0);
-            try testArgs(f32, -inf(f32), -0.1);
+            try testArgs(f32, -inf(f32), -1e1);
+            try testArgs(f32, -inf(f32), -1e0);
+            try testArgs(f32, -inf(f32), -1e-1);
             try testArgs(f32, -inf(f32), -fmin(f32));
             try testArgs(f32, -inf(f32), -tmin(f32));
             try testArgs(f32, -inf(f32), -0.0);
             try testArgs(f32, -inf(f32), 0.0);
             try testArgs(f32, -inf(f32), tmin(f32));
             try testArgs(f32, -inf(f32), fmin(f32));
-            try testArgs(f32, -inf(f32), 0.1);
-            try testArgs(f32, -inf(f32), 1.0);
-            try testArgs(f32, -inf(f32), 10.0);
+            try testArgs(f32, -inf(f32), 1e-1);
+            try testArgs(f32, -inf(f32), 1e0);
+            try testArgs(f32, -inf(f32), 1e1);
             try testArgs(f32, -inf(f32), fmax(f32));
             try testArgs(f32, -inf(f32), inf(f32));
             try testArgs(f32, -inf(f32), nan(f32));
@@ -2094,94 +8435,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, -fmax(f32), -nan(f32));
             try testArgs(f32, -fmax(f32), -inf(f32));
             try testArgs(f32, -fmax(f32), -fmax(f32));
-            try testArgs(f32, -fmax(f32), -10.0);
-            try testArgs(f32, -fmax(f32), -1.0);
-            try testArgs(f32, -fmax(f32), -0.1);
+            try testArgs(f32, -fmax(f32), -1e1);
+            try testArgs(f32, -fmax(f32), -1e0);
+            try testArgs(f32, -fmax(f32), -1e-1);
             try testArgs(f32, -fmax(f32), -fmin(f32));
             try testArgs(f32, -fmax(f32), -tmin(f32));
             try testArgs(f32, -fmax(f32), -0.0);
             try testArgs(f32, -fmax(f32), 0.0);
             try testArgs(f32, -fmax(f32), tmin(f32));
             try testArgs(f32, -fmax(f32), fmin(f32));
-            try testArgs(f32, -fmax(f32), 0.1);
-            try testArgs(f32, -fmax(f32), 1.0);
-            try testArgs(f32, -fmax(f32), 10.0);
+            try testArgs(f32, -fmax(f32), 1e-1);
+            try testArgs(f32, -fmax(f32), 1e0);
+            try testArgs(f32, -fmax(f32), 1e1);
             try testArgs(f32, -fmax(f32), fmax(f32));
             try testArgs(f32, -fmax(f32), inf(f32));
             try testArgs(f32, -fmax(f32), nan(f32));
 
-            try testArgs(f32, -10.0, -nan(f32));
-            try testArgs(f32, -10.0, -inf(f32));
-            try testArgs(f32, -10.0, -fmax(f32));
-            try testArgs(f32, -10.0, -10.0);
-            try testArgs(f32, -10.0, -1.0);
-            try testArgs(f32, -10.0, -0.1);
-            try testArgs(f32, -10.0, -fmin(f32));
-            try testArgs(f32, -10.0, -tmin(f32));
-            try testArgs(f32, -10.0, -0.0);
-            try testArgs(f32, -10.0, 0.0);
-            try testArgs(f32, -10.0, tmin(f32));
-            try testArgs(f32, -10.0, fmin(f32));
-            try testArgs(f32, -10.0, 0.1);
-            try testArgs(f32, -10.0, 1.0);
-            try testArgs(f32, -10.0, 10.0);
-            try testArgs(f32, -10.0, fmax(f32));
-            try testArgs(f32, -10.0, inf(f32));
-            try testArgs(f32, -10.0, nan(f32));
-
-            try testArgs(f32, -1.0, -nan(f32));
-            try testArgs(f32, -1.0, -inf(f32));
-            try testArgs(f32, -1.0, -fmax(f32));
-            try testArgs(f32, -1.0, -10.0);
-            try testArgs(f32, -1.0, -1.0);
-            try testArgs(f32, -1.0, -0.1);
-            try testArgs(f32, -1.0, -fmin(f32));
-            try testArgs(f32, -1.0, -tmin(f32));
-            try testArgs(f32, -1.0, -0.0);
-            try testArgs(f32, -1.0, 0.0);
-            try testArgs(f32, -1.0, tmin(f32));
-            try testArgs(f32, -1.0, fmin(f32));
-            try testArgs(f32, -1.0, 0.1);
-            try testArgs(f32, -1.0, 1.0);
-            try testArgs(f32, -1.0, 10.0);
-            try testArgs(f32, -1.0, fmax(f32));
-            try testArgs(f32, -1.0, inf(f32));
-            try testArgs(f32, -1.0, nan(f32));
-
-            try testArgs(f32, -0.1, -nan(f32));
-            try testArgs(f32, -0.1, -inf(f32));
-            try testArgs(f32, -0.1, -fmax(f32));
-            try testArgs(f32, -0.1, -10.0);
-            try testArgs(f32, -0.1, -1.0);
-            try testArgs(f32, -0.1, -0.1);
-            try testArgs(f32, -0.1, -fmin(f32));
-            try testArgs(f32, -0.1, -tmin(f32));
-            try testArgs(f32, -0.1, -0.0);
-            try testArgs(f32, -0.1, 0.0);
-            try testArgs(f32, -0.1, tmin(f32));
-            try testArgs(f32, -0.1, fmin(f32));
-            try testArgs(f32, -0.1, 0.1);
-            try testArgs(f32, -0.1, 1.0);
-            try testArgs(f32, -0.1, 10.0);
-            try testArgs(f32, -0.1, fmax(f32));
-            try testArgs(f32, -0.1, inf(f32));
-            try testArgs(f32, -0.1, nan(f32));
+            try testArgs(f32, -1e1, -nan(f32));
+            try testArgs(f32, -1e1, -inf(f32));
+            try testArgs(f32, -1e1, -fmax(f32));
+            try testArgs(f32, -1e1, -1e1);
+            try testArgs(f32, -1e1, -1e0);
+            try testArgs(f32, -1e1, -1e-1);
+            try testArgs(f32, -1e1, -fmin(f32));
+            try testArgs(f32, -1e1, -tmin(f32));
+            try testArgs(f32, -1e1, -0.0);
+            try testArgs(f32, -1e1, 0.0);
+            try testArgs(f32, -1e1, tmin(f32));
+            try testArgs(f32, -1e1, fmin(f32));
+            try testArgs(f32, -1e1, 1e-1);
+            try testArgs(f32, -1e1, 1e0);
+            try testArgs(f32, -1e1, 1e1);
+            try testArgs(f32, -1e1, fmax(f32));
+            try testArgs(f32, -1e1, inf(f32));
+            try testArgs(f32, -1e1, nan(f32));
+
+            try testArgs(f32, -1e0, -nan(f32));
+            try testArgs(f32, -1e0, -inf(f32));
+            try testArgs(f32, -1e0, -fmax(f32));
+            try testArgs(f32, -1e0, -1e1);
+            try testArgs(f32, -1e0, -1e0);
+            try testArgs(f32, -1e0, -1e-1);
+            try testArgs(f32, -1e0, -fmin(f32));
+            try testArgs(f32, -1e0, -tmin(f32));
+            try testArgs(f32, -1e0, -0.0);
+            try testArgs(f32, -1e0, 0.0);
+            try testArgs(f32, -1e0, tmin(f32));
+            try testArgs(f32, -1e0, fmin(f32));
+            try testArgs(f32, -1e0, 1e-1);
+            try testArgs(f32, -1e0, 1e0);
+            try testArgs(f32, -1e0, 1e1);
+            try testArgs(f32, -1e0, fmax(f32));
+            try testArgs(f32, -1e0, inf(f32));
+            try testArgs(f32, -1e0, nan(f32));
+
+            try testArgs(f32, -1e-1, -nan(f32));
+            try testArgs(f32, -1e-1, -inf(f32));
+            try testArgs(f32, -1e-1, -fmax(f32));
+            try testArgs(f32, -1e-1, -1e1);
+            try testArgs(f32, -1e-1, -1e0);
+            try testArgs(f32, -1e-1, -1e-1);
+            try testArgs(f32, -1e-1, -fmin(f32));
+            try testArgs(f32, -1e-1, -tmin(f32));
+            try testArgs(f32, -1e-1, -0.0);
+            try testArgs(f32, -1e-1, 0.0);
+            try testArgs(f32, -1e-1, tmin(f32));
+            try testArgs(f32, -1e-1, fmin(f32));
+            try testArgs(f32, -1e-1, 1e-1);
+            try testArgs(f32, -1e-1, 1e0);
+            try testArgs(f32, -1e-1, 1e1);
+            try testArgs(f32, -1e-1, fmax(f32));
+            try testArgs(f32, -1e-1, inf(f32));
+            try testArgs(f32, -1e-1, nan(f32));
 
             try testArgs(f32, -fmin(f32), -nan(f32));
             try testArgs(f32, -fmin(f32), -inf(f32));
             try testArgs(f32, -fmin(f32), -fmax(f32));
-            try testArgs(f32, -fmin(f32), -10.0);
-            try testArgs(f32, -fmin(f32), -1.0);
-            try testArgs(f32, -fmin(f32), -0.1);
+            try testArgs(f32, -fmin(f32), -1e1);
+            try testArgs(f32, -fmin(f32), -1e0);
+            try testArgs(f32, -fmin(f32), -1e-1);
             try testArgs(f32, -fmin(f32), -fmin(f32));
             try testArgs(f32, -fmin(f32), -tmin(f32));
             try testArgs(f32, -fmin(f32), -0.0);
             try testArgs(f32, -fmin(f32), 0.0);
             try testArgs(f32, -fmin(f32), tmin(f32));
             try testArgs(f32, -fmin(f32), fmin(f32));
-            try testArgs(f32, -fmin(f32), 0.1);
-            try testArgs(f32, -fmin(f32), 1.0);
-            try testArgs(f32, -fmin(f32), 10.0);
+            try testArgs(f32, -fmin(f32), 1e-1);
+            try testArgs(f32, -fmin(f32), 1e0);
+            try testArgs(f32, -fmin(f32), 1e1);
             try testArgs(f32, -fmin(f32), fmax(f32));
             try testArgs(f32, -fmin(f32), inf(f32));
             try testArgs(f32, -fmin(f32), nan(f32));
@@ -2189,18 +8530,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, -tmin(f32), -nan(f32));
             try testArgs(f32, -tmin(f32), -inf(f32));
             try testArgs(f32, -tmin(f32), -fmax(f32));
-            try testArgs(f32, -tmin(f32), -10.0);
-            try testArgs(f32, -tmin(f32), -1.0);
-            try testArgs(f32, -tmin(f32), -0.1);
+            try testArgs(f32, -tmin(f32), -1e1);
+            try testArgs(f32, -tmin(f32), -1e0);
+            try testArgs(f32, -tmin(f32), -1e-1);
             try testArgs(f32, -tmin(f32), -fmin(f32));
             try testArgs(f32, -tmin(f32), -tmin(f32));
             try testArgs(f32, -tmin(f32), -0.0);
             try testArgs(f32, -tmin(f32), 0.0);
             try testArgs(f32, -tmin(f32), tmin(f32));
             try testArgs(f32, -tmin(f32), fmin(f32));
-            try testArgs(f32, -tmin(f32), 0.1);
-            try testArgs(f32, -tmin(f32), 1.0);
-            try testArgs(f32, -tmin(f32), 10.0);
+            try testArgs(f32, -tmin(f32), 1e-1);
+            try testArgs(f32, -tmin(f32), 1e0);
+            try testArgs(f32, -tmin(f32), 1e1);
             try testArgs(f32, -tmin(f32), fmax(f32));
             try testArgs(f32, -tmin(f32), inf(f32));
             try testArgs(f32, -tmin(f32), nan(f32));
@@ -2208,18 +8549,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, -0.0, -nan(f32));
             try testArgs(f32, -0.0, -inf(f32));
             try testArgs(f32, -0.0, -fmax(f32));
-            try testArgs(f32, -0.0, -10.0);
-            try testArgs(f32, -0.0, -1.0);
-            try testArgs(f32, -0.0, -0.1);
+            try testArgs(f32, -0.0, -1e1);
+            try testArgs(f32, -0.0, -1e0);
+            try testArgs(f32, -0.0, -1e-1);
             try testArgs(f32, -0.0, -fmin(f32));
             try testArgs(f32, -0.0, -tmin(f32));
             try testArgs(f32, -0.0, -0.0);
             try testArgs(f32, -0.0, 0.0);
             try testArgs(f32, -0.0, tmin(f32));
             try testArgs(f32, -0.0, fmin(f32));
-            try testArgs(f32, -0.0, 0.1);
-            try testArgs(f32, -0.0, 1.0);
-            try testArgs(f32, -0.0, 10.0);
+            try testArgs(f32, -0.0, 1e-1);
+            try testArgs(f32, -0.0, 1e0);
+            try testArgs(f32, -0.0, 1e1);
             try testArgs(f32, -0.0, fmax(f32));
             try testArgs(f32, -0.0, inf(f32));
             try testArgs(f32, -0.0, nan(f32));
@@ -2227,18 +8568,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, 0.0, -nan(f32));
             try testArgs(f32, 0.0, -inf(f32));
             try testArgs(f32, 0.0, -fmax(f32));
-            try testArgs(f32, 0.0, -10.0);
-            try testArgs(f32, 0.0, -1.0);
-            try testArgs(f32, 0.0, -0.1);
+            try testArgs(f32, 0.0, -1e1);
+            try testArgs(f32, 0.0, -1e0);
+            try testArgs(f32, 0.0, -1e-1);
             try testArgs(f32, 0.0, -fmin(f32));
             try testArgs(f32, 0.0, -tmin(f32));
             try testArgs(f32, 0.0, -0.0);
             try testArgs(f32, 0.0, 0.0);
             try testArgs(f32, 0.0, tmin(f32));
             try testArgs(f32, 0.0, fmin(f32));
-            try testArgs(f32, 0.0, 0.1);
-            try testArgs(f32, 0.0, 1.0);
-            try testArgs(f32, 0.0, 10.0);
+            try testArgs(f32, 0.0, 1e-1);
+            try testArgs(f32, 0.0, 1e0);
+            try testArgs(f32, 0.0, 1e1);
             try testArgs(f32, 0.0, fmax(f32));
             try testArgs(f32, 0.0, inf(f32));
             try testArgs(f32, 0.0, nan(f32));
@@ -2246,18 +8587,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, tmin(f32), -nan(f32));
             try testArgs(f32, tmin(f32), -inf(f32));
             try testArgs(f32, tmin(f32), -fmax(f32));
-            try testArgs(f32, tmin(f32), -10.0);
-            try testArgs(f32, tmin(f32), -1.0);
-            try testArgs(f32, tmin(f32), -0.1);
+            try testArgs(f32, tmin(f32), -1e1);
+            try testArgs(f32, tmin(f32), -1e0);
+            try testArgs(f32, tmin(f32), -1e-1);
             try testArgs(f32, tmin(f32), -fmin(f32));
             try testArgs(f32, tmin(f32), -tmin(f32));
             try testArgs(f32, tmin(f32), -0.0);
             try testArgs(f32, tmin(f32), 0.0);
             try testArgs(f32, tmin(f32), tmin(f32));
             try testArgs(f32, tmin(f32), fmin(f32));
-            try testArgs(f32, tmin(f32), 0.1);
-            try testArgs(f32, tmin(f32), 1.0);
-            try testArgs(f32, tmin(f32), 10.0);
+            try testArgs(f32, tmin(f32), 1e-1);
+            try testArgs(f32, tmin(f32), 1e0);
+            try testArgs(f32, tmin(f32), 1e1);
             try testArgs(f32, tmin(f32), fmax(f32));
             try testArgs(f32, tmin(f32), inf(f32));
             try testArgs(f32, tmin(f32), nan(f32));
@@ -2265,94 +8606,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, fmin(f32), -nan(f32));
             try testArgs(f32, fmin(f32), -inf(f32));
             try testArgs(f32, fmin(f32), -fmax(f32));
-            try testArgs(f32, fmin(f32), -10.0);
-            try testArgs(f32, fmin(f32), -1.0);
-            try testArgs(f32, fmin(f32), -0.1);
+            try testArgs(f32, fmin(f32), -1e1);
+            try testArgs(f32, fmin(f32), -1e0);
+            try testArgs(f32, fmin(f32), -1e-1);
             try testArgs(f32, fmin(f32), -fmin(f32));
             try testArgs(f32, fmin(f32), -tmin(f32));
             try testArgs(f32, fmin(f32), -0.0);
             try testArgs(f32, fmin(f32), 0.0);
             try testArgs(f32, fmin(f32), tmin(f32));
             try testArgs(f32, fmin(f32), fmin(f32));
-            try testArgs(f32, fmin(f32), 0.1);
-            try testArgs(f32, fmin(f32), 1.0);
-            try testArgs(f32, fmin(f32), 10.0);
+            try testArgs(f32, fmin(f32), 1e-1);
+            try testArgs(f32, fmin(f32), 1e0);
+            try testArgs(f32, fmin(f32), 1e1);
             try testArgs(f32, fmin(f32), fmax(f32));
             try testArgs(f32, fmin(f32), inf(f32));
             try testArgs(f32, fmin(f32), nan(f32));
 
-            try testArgs(f32, 0.1, -nan(f32));
-            try testArgs(f32, 0.1, -inf(f32));
-            try testArgs(f32, 0.1, -fmax(f32));
-            try testArgs(f32, 0.1, -10.0);
-            try testArgs(f32, 0.1, -1.0);
-            try testArgs(f32, 0.1, -0.1);
-            try testArgs(f32, 0.1, -fmin(f32));
-            try testArgs(f32, 0.1, -tmin(f32));
-            try testArgs(f32, 0.1, -0.0);
-            try testArgs(f32, 0.1, 0.0);
-            try testArgs(f32, 0.1, tmin(f32));
-            try testArgs(f32, 0.1, fmin(f32));
-            try testArgs(f32, 0.1, 0.1);
-            try testArgs(f32, 0.1, 1.0);
-            try testArgs(f32, 0.1, 10.0);
-            try testArgs(f32, 0.1, fmax(f32));
-            try testArgs(f32, 0.1, inf(f32));
-            try testArgs(f32, 0.1, nan(f32));
-
-            try testArgs(f32, 1.0, -nan(f32));
-            try testArgs(f32, 1.0, -inf(f32));
-            try testArgs(f32, 1.0, -fmax(f32));
-            try testArgs(f32, 1.0, -10.0);
-            try testArgs(f32, 1.0, -1.0);
-            try testArgs(f32, 1.0, -0.1);
-            try testArgs(f32, 1.0, -fmin(f32));
-            try testArgs(f32, 1.0, -tmin(f32));
-            try testArgs(f32, 1.0, -0.0);
-            try testArgs(f32, 1.0, 0.0);
-            try testArgs(f32, 1.0, tmin(f32));
-            try testArgs(f32, 1.0, fmin(f32));
-            try testArgs(f32, 1.0, 0.1);
-            try testArgs(f32, 1.0, 1.0);
-            try testArgs(f32, 1.0, 10.0);
-            try testArgs(f32, 1.0, fmax(f32));
-            try testArgs(f32, 1.0, inf(f32));
-            try testArgs(f32, 1.0, nan(f32));
-
-            try testArgs(f32, 10.0, -nan(f32));
-            try testArgs(f32, 10.0, -inf(f32));
-            try testArgs(f32, 10.0, -fmax(f32));
-            try testArgs(f32, 10.0, -10.0);
-            try testArgs(f32, 10.0, -1.0);
-            try testArgs(f32, 10.0, -0.1);
-            try testArgs(f32, 10.0, -fmin(f32));
-            try testArgs(f32, 10.0, -tmin(f32));
-            try testArgs(f32, 10.0, -0.0);
-            try testArgs(f32, 10.0, 0.0);
-            try testArgs(f32, 10.0, tmin(f32));
-            try testArgs(f32, 10.0, fmin(f32));
-            try testArgs(f32, 10.0, 0.1);
-            try testArgs(f32, 10.0, 1.0);
-            try testArgs(f32, 10.0, 10.0);
-            try testArgs(f32, 10.0, fmax(f32));
-            try testArgs(f32, 10.0, inf(f32));
-            try testArgs(f32, 10.0, nan(f32));
+            try testArgs(f32, 1e-1, -nan(f32));
+            try testArgs(f32, 1e-1, -inf(f32));
+            try testArgs(f32, 1e-1, -fmax(f32));
+            try testArgs(f32, 1e-1, -1e1);
+            try testArgs(f32, 1e-1, -1e0);
+            try testArgs(f32, 1e-1, -1e-1);
+            try testArgs(f32, 1e-1, -fmin(f32));
+            try testArgs(f32, 1e-1, -tmin(f32));
+            try testArgs(f32, 1e-1, -0.0);
+            try testArgs(f32, 1e-1, 0.0);
+            try testArgs(f32, 1e-1, tmin(f32));
+            try testArgs(f32, 1e-1, fmin(f32));
+            try testArgs(f32, 1e-1, 1e-1);
+            try testArgs(f32, 1e-1, 1e0);
+            try testArgs(f32, 1e-1, 1e1);
+            try testArgs(f32, 1e-1, fmax(f32));
+            try testArgs(f32, 1e-1, inf(f32));
+            try testArgs(f32, 1e-1, nan(f32));
+
+            try testArgs(f32, 1e0, -nan(f32));
+            try testArgs(f32, 1e0, -inf(f32));
+            try testArgs(f32, 1e0, -fmax(f32));
+            try testArgs(f32, 1e0, -1e1);
+            try testArgs(f32, 1e0, -1e0);
+            try testArgs(f32, 1e0, -1e-1);
+            try testArgs(f32, 1e0, -fmin(f32));
+            try testArgs(f32, 1e0, -tmin(f32));
+            try testArgs(f32, 1e0, -0.0);
+            try testArgs(f32, 1e0, 0.0);
+            try testArgs(f32, 1e0, tmin(f32));
+            try testArgs(f32, 1e0, fmin(f32));
+            try testArgs(f32, 1e0, 1e-1);
+            try testArgs(f32, 1e0, 1e0);
+            try testArgs(f32, 1e0, 1e1);
+            try testArgs(f32, 1e0, fmax(f32));
+            try testArgs(f32, 1e0, inf(f32));
+            try testArgs(f32, 1e0, nan(f32));
+
+            try testArgs(f32, 1e1, -nan(f32));
+            try testArgs(f32, 1e1, -inf(f32));
+            try testArgs(f32, 1e1, -fmax(f32));
+            try testArgs(f32, 1e1, -1e1);
+            try testArgs(f32, 1e1, -1e0);
+            try testArgs(f32, 1e1, -1e-1);
+            try testArgs(f32, 1e1, -fmin(f32));
+            try testArgs(f32, 1e1, -tmin(f32));
+            try testArgs(f32, 1e1, -0.0);
+            try testArgs(f32, 1e1, 0.0);
+            try testArgs(f32, 1e1, tmin(f32));
+            try testArgs(f32, 1e1, fmin(f32));
+            try testArgs(f32, 1e1, 1e-1);
+            try testArgs(f32, 1e1, 1e0);
+            try testArgs(f32, 1e1, 1e1);
+            try testArgs(f32, 1e1, fmax(f32));
+            try testArgs(f32, 1e1, inf(f32));
+            try testArgs(f32, 1e1, nan(f32));
 
             try testArgs(f32, fmax(f32), -nan(f32));
             try testArgs(f32, fmax(f32), -inf(f32));
             try testArgs(f32, fmax(f32), -fmax(f32));
-            try testArgs(f32, fmax(f32), -10.0);
-            try testArgs(f32, fmax(f32), -1.0);
-            try testArgs(f32, fmax(f32), -0.1);
+            try testArgs(f32, fmax(f32), -1e1);
+            try testArgs(f32, fmax(f32), -1e0);
+            try testArgs(f32, fmax(f32), -1e-1);
             try testArgs(f32, fmax(f32), -fmin(f32));
             try testArgs(f32, fmax(f32), -tmin(f32));
             try testArgs(f32, fmax(f32), -0.0);
             try testArgs(f32, fmax(f32), 0.0);
             try testArgs(f32, fmax(f32), tmin(f32));
             try testArgs(f32, fmax(f32), fmin(f32));
-            try testArgs(f32, fmax(f32), 0.1);
-            try testArgs(f32, fmax(f32), 1.0);
-            try testArgs(f32, fmax(f32), 10.0);
+            try testArgs(f32, fmax(f32), 1e-1);
+            try testArgs(f32, fmax(f32), 1e0);
+            try testArgs(f32, fmax(f32), 1e1);
             try testArgs(f32, fmax(f32), fmax(f32));
             try testArgs(f32, fmax(f32), inf(f32));
             try testArgs(f32, fmax(f32), nan(f32));
@@ -2360,18 +8701,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, inf(f32), -nan(f32));
             try testArgs(f32, inf(f32), -inf(f32));
             try testArgs(f32, inf(f32), -fmax(f32));
-            try testArgs(f32, inf(f32), -10.0);
-            try testArgs(f32, inf(f32), -1.0);
-            try testArgs(f32, inf(f32), -0.1);
+            try testArgs(f32, inf(f32), -1e1);
+            try testArgs(f32, inf(f32), -1e0);
+            try testArgs(f32, inf(f32), -1e-1);
             try testArgs(f32, inf(f32), -fmin(f32));
             try testArgs(f32, inf(f32), -tmin(f32));
             try testArgs(f32, inf(f32), -0.0);
             try testArgs(f32, inf(f32), 0.0);
             try testArgs(f32, inf(f32), tmin(f32));
             try testArgs(f32, inf(f32), fmin(f32));
-            try testArgs(f32, inf(f32), 0.1);
-            try testArgs(f32, inf(f32), 1.0);
-            try testArgs(f32, inf(f32), 10.0);
+            try testArgs(f32, inf(f32), 1e-1);
+            try testArgs(f32, inf(f32), 1e0);
+            try testArgs(f32, inf(f32), 1e1);
             try testArgs(f32, inf(f32), fmax(f32));
             try testArgs(f32, inf(f32), inf(f32));
             try testArgs(f32, inf(f32), nan(f32));
@@ -2379,18 +8720,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f32, nan(f32), -nan(f32));
             try testArgs(f32, nan(f32), -inf(f32));
             try testArgs(f32, nan(f32), -fmax(f32));
-            try testArgs(f32, nan(f32), -10.0);
-            try testArgs(f32, nan(f32), -1.0);
-            try testArgs(f32, nan(f32), -0.1);
+            try testArgs(f32, nan(f32), -1e1);
+            try testArgs(f32, nan(f32), -1e0);
+            try testArgs(f32, nan(f32), -1e-1);
             try testArgs(f32, nan(f32), -fmin(f32));
             try testArgs(f32, nan(f32), -tmin(f32));
             try testArgs(f32, nan(f32), -0.0);
             try testArgs(f32, nan(f32), 0.0);
             try testArgs(f32, nan(f32), tmin(f32));
             try testArgs(f32, nan(f32), fmin(f32));
-            try testArgs(f32, nan(f32), 0.1);
-            try testArgs(f32, nan(f32), 1.0);
-            try testArgs(f32, nan(f32), 10.0);
+            try testArgs(f32, nan(f32), 1e-1);
+            try testArgs(f32, nan(f32), 1e0);
+            try testArgs(f32, nan(f32), 1e1);
             try testArgs(f32, nan(f32), fmax(f32));
             try testArgs(f32, nan(f32), inf(f32));
             try testArgs(f32, nan(f32), nan(f32));
@@ -2398,18 +8739,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, -nan(f64), -nan(f64));
             try testArgs(f64, -nan(f64), -inf(f64));
             try testArgs(f64, -nan(f64), -fmax(f64));
-            try testArgs(f64, -nan(f64), -10.0);
-            try testArgs(f64, -nan(f64), -1.0);
-            try testArgs(f64, -nan(f64), -0.1);
+            try testArgs(f64, -nan(f64), -1e1);
+            try testArgs(f64, -nan(f64), -1e0);
+            try testArgs(f64, -nan(f64), -1e-1);
             try testArgs(f64, -nan(f64), -fmin(f64));
             try testArgs(f64, -nan(f64), -tmin(f64));
             try testArgs(f64, -nan(f64), -0.0);
             try testArgs(f64, -nan(f64), 0.0);
             try testArgs(f64, -nan(f64), tmin(f64));
             try testArgs(f64, -nan(f64), fmin(f64));
-            try testArgs(f64, -nan(f64), 0.1);
-            try testArgs(f64, -nan(f64), 1.0);
-            try testArgs(f64, -nan(f64), 10.0);
+            try testArgs(f64, -nan(f64), 1e-1);
+            try testArgs(f64, -nan(f64), 1e0);
+            try testArgs(f64, -nan(f64), 1e1);
             try testArgs(f64, -nan(f64), fmax(f64));
             try testArgs(f64, -nan(f64), inf(f64));
             try testArgs(f64, -nan(f64), nan(f64));
@@ -2417,18 +8758,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, -inf(f64), -nan(f64));
             try testArgs(f64, -inf(f64), -inf(f64));
             try testArgs(f64, -inf(f64), -fmax(f64));
-            try testArgs(f64, -inf(f64), -10.0);
-            try testArgs(f64, -inf(f64), -1.0);
-            try testArgs(f64, -inf(f64), -0.1);
+            try testArgs(f64, -inf(f64), -1e1);
+            try testArgs(f64, -inf(f64), -1e0);
+            try testArgs(f64, -inf(f64), -1e-1);
             try testArgs(f64, -inf(f64), -fmin(f64));
             try testArgs(f64, -inf(f64), -tmin(f64));
             try testArgs(f64, -inf(f64), -0.0);
             try testArgs(f64, -inf(f64), 0.0);
             try testArgs(f64, -inf(f64), tmin(f64));
             try testArgs(f64, -inf(f64), fmin(f64));
-            try testArgs(f64, -inf(f64), 0.1);
-            try testArgs(f64, -inf(f64), 1.0);
-            try testArgs(f64, -inf(f64), 10.0);
+            try testArgs(f64, -inf(f64), 1e-1);
+            try testArgs(f64, -inf(f64), 1e0);
+            try testArgs(f64, -inf(f64), 1e1);
             try testArgs(f64, -inf(f64), fmax(f64));
             try testArgs(f64, -inf(f64), inf(f64));
             try testArgs(f64, -inf(f64), nan(f64));
@@ -2436,94 +8777,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, -fmax(f64), -nan(f64));
             try testArgs(f64, -fmax(f64), -inf(f64));
             try testArgs(f64, -fmax(f64), -fmax(f64));
-            try testArgs(f64, -fmax(f64), -10.0);
-            try testArgs(f64, -fmax(f64), -1.0);
-            try testArgs(f64, -fmax(f64), -0.1);
+            try testArgs(f64, -fmax(f64), -1e1);
+            try testArgs(f64, -fmax(f64), -1e0);
+            try testArgs(f64, -fmax(f64), -1e-1);
             try testArgs(f64, -fmax(f64), -fmin(f64));
             try testArgs(f64, -fmax(f64), -tmin(f64));
             try testArgs(f64, -fmax(f64), -0.0);
             try testArgs(f64, -fmax(f64), 0.0);
             try testArgs(f64, -fmax(f64), tmin(f64));
             try testArgs(f64, -fmax(f64), fmin(f64));
-            try testArgs(f64, -fmax(f64), 0.1);
-            try testArgs(f64, -fmax(f64), 1.0);
-            try testArgs(f64, -fmax(f64), 10.0);
+            try testArgs(f64, -fmax(f64), 1e-1);
+            try testArgs(f64, -fmax(f64), 1e0);
+            try testArgs(f64, -fmax(f64), 1e1);
             try testArgs(f64, -fmax(f64), fmax(f64));
             try testArgs(f64, -fmax(f64), inf(f64));
             try testArgs(f64, -fmax(f64), nan(f64));
 
-            try testArgs(f64, -10.0, -nan(f64));
-            try testArgs(f64, -10.0, -inf(f64));
-            try testArgs(f64, -10.0, -fmax(f64));
-            try testArgs(f64, -10.0, -10.0);
-            try testArgs(f64, -10.0, -1.0);
-            try testArgs(f64, -10.0, -0.1);
-            try testArgs(f64, -10.0, -fmin(f64));
-            try testArgs(f64, -10.0, -tmin(f64));
-            try testArgs(f64, -10.0, -0.0);
-            try testArgs(f64, -10.0, 0.0);
-            try testArgs(f64, -10.0, tmin(f64));
-            try testArgs(f64, -10.0, fmin(f64));
-            try testArgs(f64, -10.0, 0.1);
-            try testArgs(f64, -10.0, 1.0);
-            try testArgs(f64, -10.0, 10.0);
-            try testArgs(f64, -10.0, fmax(f64));
-            try testArgs(f64, -10.0, inf(f64));
-            try testArgs(f64, -10.0, nan(f64));
-
-            try testArgs(f64, -1.0, -nan(f64));
-            try testArgs(f64, -1.0, -inf(f64));
-            try testArgs(f64, -1.0, -fmax(f64));
-            try testArgs(f64, -1.0, -10.0);
-            try testArgs(f64, -1.0, -1.0);
-            try testArgs(f64, -1.0, -0.1);
-            try testArgs(f64, -1.0, -fmin(f64));
-            try testArgs(f64, -1.0, -tmin(f64));
-            try testArgs(f64, -1.0, -0.0);
-            try testArgs(f64, -1.0, 0.0);
-            try testArgs(f64, -1.0, tmin(f64));
-            try testArgs(f64, -1.0, fmin(f64));
-            try testArgs(f64, -1.0, 0.1);
-            try testArgs(f64, -1.0, 1.0);
-            try testArgs(f64, -1.0, 10.0);
-            try testArgs(f64, -1.0, fmax(f64));
-            try testArgs(f64, -1.0, inf(f64));
-            try testArgs(f64, -1.0, nan(f64));
-
-            try testArgs(f64, -0.1, -nan(f64));
-            try testArgs(f64, -0.1, -inf(f64));
-            try testArgs(f64, -0.1, -fmax(f64));
-            try testArgs(f64, -0.1, -10.0);
-            try testArgs(f64, -0.1, -1.0);
-            try testArgs(f64, -0.1, -0.1);
-            try testArgs(f64, -0.1, -fmin(f64));
-            try testArgs(f64, -0.1, -tmin(f64));
-            try testArgs(f64, -0.1, -0.0);
-            try testArgs(f64, -0.1, 0.0);
-            try testArgs(f64, -0.1, tmin(f64));
-            try testArgs(f64, -0.1, fmin(f64));
-            try testArgs(f64, -0.1, 0.1);
-            try testArgs(f64, -0.1, 1.0);
-            try testArgs(f64, -0.1, 10.0);
-            try testArgs(f64, -0.1, fmax(f64));
-            try testArgs(f64, -0.1, inf(f64));
-            try testArgs(f64, -0.1, nan(f64));
+            try testArgs(f64, -1e1, -nan(f64));
+            try testArgs(f64, -1e1, -inf(f64));
+            try testArgs(f64, -1e1, -fmax(f64));
+            try testArgs(f64, -1e1, -1e1);
+            try testArgs(f64, -1e1, -1e0);
+            try testArgs(f64, -1e1, -1e-1);
+            try testArgs(f64, -1e1, -fmin(f64));
+            try testArgs(f64, -1e1, -tmin(f64));
+            try testArgs(f64, -1e1, -0.0);
+            try testArgs(f64, -1e1, 0.0);
+            try testArgs(f64, -1e1, tmin(f64));
+            try testArgs(f64, -1e1, fmin(f64));
+            try testArgs(f64, -1e1, 1e-1);
+            try testArgs(f64, -1e1, 1e0);
+            try testArgs(f64, -1e1, 1e1);
+            try testArgs(f64, -1e1, fmax(f64));
+            try testArgs(f64, -1e1, inf(f64));
+            try testArgs(f64, -1e1, nan(f64));
+
+            try testArgs(f64, -1e0, -nan(f64));
+            try testArgs(f64, -1e0, -inf(f64));
+            try testArgs(f64, -1e0, -fmax(f64));
+            try testArgs(f64, -1e0, -1e1);
+            try testArgs(f64, -1e0, -1e0);
+            try testArgs(f64, -1e0, -1e-1);
+            try testArgs(f64, -1e0, -fmin(f64));
+            try testArgs(f64, -1e0, -tmin(f64));
+            try testArgs(f64, -1e0, -0.0);
+            try testArgs(f64, -1e0, 0.0);
+            try testArgs(f64, -1e0, tmin(f64));
+            try testArgs(f64, -1e0, fmin(f64));
+            try testArgs(f64, -1e0, 1e-1);
+            try testArgs(f64, -1e0, 1e0);
+            try testArgs(f64, -1e0, 1e1);
+            try testArgs(f64, -1e0, fmax(f64));
+            try testArgs(f64, -1e0, inf(f64));
+            try testArgs(f64, -1e0, nan(f64));
+
+            try testArgs(f64, -1e-1, -nan(f64));
+            try testArgs(f64, -1e-1, -inf(f64));
+            try testArgs(f64, -1e-1, -fmax(f64));
+            try testArgs(f64, -1e-1, -1e1);
+            try testArgs(f64, -1e-1, -1e0);
+            try testArgs(f64, -1e-1, -1e-1);
+            try testArgs(f64, -1e-1, -fmin(f64));
+            try testArgs(f64, -1e-1, -tmin(f64));
+            try testArgs(f64, -1e-1, -0.0);
+            try testArgs(f64, -1e-1, 0.0);
+            try testArgs(f64, -1e-1, tmin(f64));
+            try testArgs(f64, -1e-1, fmin(f64));
+            try testArgs(f64, -1e-1, 1e-1);
+            try testArgs(f64, -1e-1, 1e0);
+            try testArgs(f64, -1e-1, 1e1);
+            try testArgs(f64, -1e-1, fmax(f64));
+            try testArgs(f64, -1e-1, inf(f64));
+            try testArgs(f64, -1e-1, nan(f64));
 
             try testArgs(f64, -fmin(f64), -nan(f64));
             try testArgs(f64, -fmin(f64), -inf(f64));
             try testArgs(f64, -fmin(f64), -fmax(f64));
-            try testArgs(f64, -fmin(f64), -10.0);
-            try testArgs(f64, -fmin(f64), -1.0);
-            try testArgs(f64, -fmin(f64), -0.1);
+            try testArgs(f64, -fmin(f64), -1e1);
+            try testArgs(f64, -fmin(f64), -1e0);
+            try testArgs(f64, -fmin(f64), -1e-1);
             try testArgs(f64, -fmin(f64), -fmin(f64));
             try testArgs(f64, -fmin(f64), -tmin(f64));
             try testArgs(f64, -fmin(f64), -0.0);
             try testArgs(f64, -fmin(f64), 0.0);
             try testArgs(f64, -fmin(f64), tmin(f64));
             try testArgs(f64, -fmin(f64), fmin(f64));
-            try testArgs(f64, -fmin(f64), 0.1);
-            try testArgs(f64, -fmin(f64), 1.0);
-            try testArgs(f64, -fmin(f64), 10.0);
+            try testArgs(f64, -fmin(f64), 1e-1);
+            try testArgs(f64, -fmin(f64), 1e0);
+            try testArgs(f64, -fmin(f64), 1e1);
             try testArgs(f64, -fmin(f64), fmax(f64));
             try testArgs(f64, -fmin(f64), inf(f64));
             try testArgs(f64, -fmin(f64), nan(f64));
@@ -2531,18 +8872,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, -tmin(f64), -nan(f64));
             try testArgs(f64, -tmin(f64), -inf(f64));
             try testArgs(f64, -tmin(f64), -fmax(f64));
-            try testArgs(f64, -tmin(f64), -10.0);
-            try testArgs(f64, -tmin(f64), -1.0);
-            try testArgs(f64, -tmin(f64), -0.1);
+            try testArgs(f64, -tmin(f64), -1e1);
+            try testArgs(f64, -tmin(f64), -1e0);
+            try testArgs(f64, -tmin(f64), -1e-1);
             try testArgs(f64, -tmin(f64), -fmin(f64));
             try testArgs(f64, -tmin(f64), -tmin(f64));
             try testArgs(f64, -tmin(f64), -0.0);
             try testArgs(f64, -tmin(f64), 0.0);
             try testArgs(f64, -tmin(f64), tmin(f64));
             try testArgs(f64, -tmin(f64), fmin(f64));
-            try testArgs(f64, -tmin(f64), 0.1);
-            try testArgs(f64, -tmin(f64), 1.0);
-            try testArgs(f64, -tmin(f64), 10.0);
+            try testArgs(f64, -tmin(f64), 1e-1);
+            try testArgs(f64, -tmin(f64), 1e0);
+            try testArgs(f64, -tmin(f64), 1e1);
             try testArgs(f64, -tmin(f64), fmax(f64));
             try testArgs(f64, -tmin(f64), inf(f64));
             try testArgs(f64, -tmin(f64), nan(f64));
@@ -2550,18 +8891,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, -0.0, -nan(f64));
             try testArgs(f64, -0.0, -inf(f64));
             try testArgs(f64, -0.0, -fmax(f64));
-            try testArgs(f64, -0.0, -10.0);
-            try testArgs(f64, -0.0, -1.0);
-            try testArgs(f64, -0.0, -0.1);
+            try testArgs(f64, -0.0, -1e1);
+            try testArgs(f64, -0.0, -1e0);
+            try testArgs(f64, -0.0, -1e-1);
             try testArgs(f64, -0.0, -fmin(f64));
             try testArgs(f64, -0.0, -tmin(f64));
             try testArgs(f64, -0.0, -0.0);
             try testArgs(f64, -0.0, 0.0);
             try testArgs(f64, -0.0, tmin(f64));
             try testArgs(f64, -0.0, fmin(f64));
-            try testArgs(f64, -0.0, 0.1);
-            try testArgs(f64, -0.0, 1.0);
-            try testArgs(f64, -0.0, 10.0);
+            try testArgs(f64, -0.0, 1e-1);
+            try testArgs(f64, -0.0, 1e0);
+            try testArgs(f64, -0.0, 1e1);
             try testArgs(f64, -0.0, fmax(f64));
             try testArgs(f64, -0.0, inf(f64));
             try testArgs(f64, -0.0, nan(f64));
@@ -2569,18 +8910,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, 0.0, -nan(f64));
             try testArgs(f64, 0.0, -inf(f64));
             try testArgs(f64, 0.0, -fmax(f64));
-            try testArgs(f64, 0.0, -10.0);
-            try testArgs(f64, 0.0, -1.0);
-            try testArgs(f64, 0.0, -0.1);
+            try testArgs(f64, 0.0, -1e1);
+            try testArgs(f64, 0.0, -1e0);
+            try testArgs(f64, 0.0, -1e-1);
             try testArgs(f64, 0.0, -fmin(f64));
             try testArgs(f64, 0.0, -tmin(f64));
             try testArgs(f64, 0.0, -0.0);
             try testArgs(f64, 0.0, 0.0);
             try testArgs(f64, 0.0, tmin(f64));
             try testArgs(f64, 0.0, fmin(f64));
-            try testArgs(f64, 0.0, 0.1);
-            try testArgs(f64, 0.0, 1.0);
-            try testArgs(f64, 0.0, 10.0);
+            try testArgs(f64, 0.0, 1e-1);
+            try testArgs(f64, 0.0, 1e0);
+            try testArgs(f64, 0.0, 1e1);
             try testArgs(f64, 0.0, fmax(f64));
             try testArgs(f64, 0.0, inf(f64));
             try testArgs(f64, 0.0, nan(f64));
@@ -2588,18 +8929,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, tmin(f64), -nan(f64));
             try testArgs(f64, tmin(f64), -inf(f64));
             try testArgs(f64, tmin(f64), -fmax(f64));
-            try testArgs(f64, tmin(f64), -10.0);
-            try testArgs(f64, tmin(f64), -1.0);
-            try testArgs(f64, tmin(f64), -0.1);
+            try testArgs(f64, tmin(f64), -1e1);
+            try testArgs(f64, tmin(f64), -1e0);
+            try testArgs(f64, tmin(f64), -1e-1);
             try testArgs(f64, tmin(f64), -fmin(f64));
             try testArgs(f64, tmin(f64), -tmin(f64));
             try testArgs(f64, tmin(f64), -0.0);
             try testArgs(f64, tmin(f64), 0.0);
             try testArgs(f64, tmin(f64), tmin(f64));
             try testArgs(f64, tmin(f64), fmin(f64));
-            try testArgs(f64, tmin(f64), 0.1);
-            try testArgs(f64, tmin(f64), 1.0);
-            try testArgs(f64, tmin(f64), 10.0);
+            try testArgs(f64, tmin(f64), 1e-1);
+            try testArgs(f64, tmin(f64), 1e0);
+            try testArgs(f64, tmin(f64), 1e1);
             try testArgs(f64, tmin(f64), fmax(f64));
             try testArgs(f64, tmin(f64), inf(f64));
             try testArgs(f64, tmin(f64), nan(f64));
@@ -2607,94 +8948,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, fmin(f64), -nan(f64));
             try testArgs(f64, fmin(f64), -inf(f64));
             try testArgs(f64, fmin(f64), -fmax(f64));
-            try testArgs(f64, fmin(f64), -10.0);
-            try testArgs(f64, fmin(f64), -1.0);
-            try testArgs(f64, fmin(f64), -0.1);
+            try testArgs(f64, fmin(f64), -1e1);
+            try testArgs(f64, fmin(f64), -1e0);
+            try testArgs(f64, fmin(f64), -1e-1);
             try testArgs(f64, fmin(f64), -fmin(f64));
             try testArgs(f64, fmin(f64), -tmin(f64));
             try testArgs(f64, fmin(f64), -0.0);
             try testArgs(f64, fmin(f64), 0.0);
             try testArgs(f64, fmin(f64), tmin(f64));
             try testArgs(f64, fmin(f64), fmin(f64));
-            try testArgs(f64, fmin(f64), 0.1);
-            try testArgs(f64, fmin(f64), 1.0);
-            try testArgs(f64, fmin(f64), 10.0);
+            try testArgs(f64, fmin(f64), 1e-1);
+            try testArgs(f64, fmin(f64), 1e0);
+            try testArgs(f64, fmin(f64), 1e1);
             try testArgs(f64, fmin(f64), fmax(f64));
             try testArgs(f64, fmin(f64), inf(f64));
             try testArgs(f64, fmin(f64), nan(f64));
 
-            try testArgs(f64, 0.1, -nan(f64));
-            try testArgs(f64, 0.1, -inf(f64));
-            try testArgs(f64, 0.1, -fmax(f64));
-            try testArgs(f64, 0.1, -10.0);
-            try testArgs(f64, 0.1, -1.0);
-            try testArgs(f64, 0.1, -0.1);
-            try testArgs(f64, 0.1, -fmin(f64));
-            try testArgs(f64, 0.1, -tmin(f64));
-            try testArgs(f64, 0.1, -0.0);
-            try testArgs(f64, 0.1, 0.0);
-            try testArgs(f64, 0.1, tmin(f64));
-            try testArgs(f64, 0.1, fmin(f64));
-            try testArgs(f64, 0.1, 0.1);
-            try testArgs(f64, 0.1, 1.0);
-            try testArgs(f64, 0.1, 10.0);
-            try testArgs(f64, 0.1, fmax(f64));
-            try testArgs(f64, 0.1, inf(f64));
-            try testArgs(f64, 0.1, nan(f64));
-
-            try testArgs(f64, 1.0, -nan(f64));
-            try testArgs(f64, 1.0, -inf(f64));
-            try testArgs(f64, 1.0, -fmax(f64));
-            try testArgs(f64, 1.0, -10.0);
-            try testArgs(f64, 1.0, -1.0);
-            try testArgs(f64, 1.0, -0.1);
-            try testArgs(f64, 1.0, -fmin(f64));
-            try testArgs(f64, 1.0, -tmin(f64));
-            try testArgs(f64, 1.0, -0.0);
-            try testArgs(f64, 1.0, 0.0);
-            try testArgs(f64, 1.0, tmin(f64));
-            try testArgs(f64, 1.0, fmin(f64));
-            try testArgs(f64, 1.0, 0.1);
-            try testArgs(f64, 1.0, 1.0);
-            try testArgs(f64, 1.0, 10.0);
-            try testArgs(f64, 1.0, fmax(f64));
-            try testArgs(f64, 1.0, inf(f64));
-            try testArgs(f64, 1.0, nan(f64));
-
-            try testArgs(f64, 10.0, -nan(f64));
-            try testArgs(f64, 10.0, -inf(f64));
-            try testArgs(f64, 10.0, -fmax(f64));
-            try testArgs(f64, 10.0, -10.0);
-            try testArgs(f64, 10.0, -1.0);
-            try testArgs(f64, 10.0, -0.1);
-            try testArgs(f64, 10.0, -fmin(f64));
-            try testArgs(f64, 10.0, -tmin(f64));
-            try testArgs(f64, 10.0, -0.0);
-            try testArgs(f64, 10.0, 0.0);
-            try testArgs(f64, 10.0, tmin(f64));
-            try testArgs(f64, 10.0, fmin(f64));
-            try testArgs(f64, 10.0, 0.1);
-            try testArgs(f64, 10.0, 1.0);
-            try testArgs(f64, 10.0, 10.0);
-            try testArgs(f64, 10.0, fmax(f64));
-            try testArgs(f64, 10.0, inf(f64));
-            try testArgs(f64, 10.0, nan(f64));
+            try testArgs(f64, 1e-1, -nan(f64));
+            try testArgs(f64, 1e-1, -inf(f64));
+            try testArgs(f64, 1e-1, -fmax(f64));
+            try testArgs(f64, 1e-1, -1e1);
+            try testArgs(f64, 1e-1, -1e0);
+            try testArgs(f64, 1e-1, -1e-1);
+            try testArgs(f64, 1e-1, -fmin(f64));
+            try testArgs(f64, 1e-1, -tmin(f64));
+            try testArgs(f64, 1e-1, -0.0);
+            try testArgs(f64, 1e-1, 0.0);
+            try testArgs(f64, 1e-1, tmin(f64));
+            try testArgs(f64, 1e-1, fmin(f64));
+            try testArgs(f64, 1e-1, 1e-1);
+            try testArgs(f64, 1e-1, 1e0);
+            try testArgs(f64, 1e-1, 1e1);
+            try testArgs(f64, 1e-1, fmax(f64));
+            try testArgs(f64, 1e-1, inf(f64));
+            try testArgs(f64, 1e-1, nan(f64));
+
+            try testArgs(f64, 1e0, -nan(f64));
+            try testArgs(f64, 1e0, -inf(f64));
+            try testArgs(f64, 1e0, -fmax(f64));
+            try testArgs(f64, 1e0, -1e1);
+            try testArgs(f64, 1e0, -1e0);
+            try testArgs(f64, 1e0, -1e-1);
+            try testArgs(f64, 1e0, -fmin(f64));
+            try testArgs(f64, 1e0, -tmin(f64));
+            try testArgs(f64, 1e0, -0.0);
+            try testArgs(f64, 1e0, 0.0);
+            try testArgs(f64, 1e0, tmin(f64));
+            try testArgs(f64, 1e0, fmin(f64));
+            try testArgs(f64, 1e0, 1e-1);
+            try testArgs(f64, 1e0, 1e0);
+            try testArgs(f64, 1e0, 1e1);
+            try testArgs(f64, 1e0, fmax(f64));
+            try testArgs(f64, 1e0, inf(f64));
+            try testArgs(f64, 1e0, nan(f64));
+
+            try testArgs(f64, 1e1, -nan(f64));
+            try testArgs(f64, 1e1, -inf(f64));
+            try testArgs(f64, 1e1, -fmax(f64));
+            try testArgs(f64, 1e1, -1e1);
+            try testArgs(f64, 1e1, -1e0);
+            try testArgs(f64, 1e1, -1e-1);
+            try testArgs(f64, 1e1, -fmin(f64));
+            try testArgs(f64, 1e1, -tmin(f64));
+            try testArgs(f64, 1e1, -0.0);
+            try testArgs(f64, 1e1, 0.0);
+            try testArgs(f64, 1e1, tmin(f64));
+            try testArgs(f64, 1e1, fmin(f64));
+            try testArgs(f64, 1e1, 1e-1);
+            try testArgs(f64, 1e1, 1e0);
+            try testArgs(f64, 1e1, 1e1);
+            try testArgs(f64, 1e1, fmax(f64));
+            try testArgs(f64, 1e1, inf(f64));
+            try testArgs(f64, 1e1, nan(f64));
 
             try testArgs(f64, fmax(f64), -nan(f64));
             try testArgs(f64, fmax(f64), -inf(f64));
             try testArgs(f64, fmax(f64), -fmax(f64));
-            try testArgs(f64, fmax(f64), -10.0);
-            try testArgs(f64, fmax(f64), -1.0);
-            try testArgs(f64, fmax(f64), -0.1);
+            try testArgs(f64, fmax(f64), -1e1);
+            try testArgs(f64, fmax(f64), -1e0);
+            try testArgs(f64, fmax(f64), -1e-1);
             try testArgs(f64, fmax(f64), -fmin(f64));
             try testArgs(f64, fmax(f64), -tmin(f64));
             try testArgs(f64, fmax(f64), -0.0);
             try testArgs(f64, fmax(f64), 0.0);
             try testArgs(f64, fmax(f64), tmin(f64));
             try testArgs(f64, fmax(f64), fmin(f64));
-            try testArgs(f64, fmax(f64), 0.1);
-            try testArgs(f64, fmax(f64), 1.0);
-            try testArgs(f64, fmax(f64), 10.0);
+            try testArgs(f64, fmax(f64), 1e-1);
+            try testArgs(f64, fmax(f64), 1e0);
+            try testArgs(f64, fmax(f64), 1e1);
             try testArgs(f64, fmax(f64), fmax(f64));
             try testArgs(f64, fmax(f64), inf(f64));
             try testArgs(f64, fmax(f64), nan(f64));
@@ -2702,18 +9043,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, inf(f64), -nan(f64));
             try testArgs(f64, inf(f64), -inf(f64));
             try testArgs(f64, inf(f64), -fmax(f64));
-            try testArgs(f64, inf(f64), -10.0);
-            try testArgs(f64, inf(f64), -1.0);
-            try testArgs(f64, inf(f64), -0.1);
+            try testArgs(f64, inf(f64), -1e1);
+            try testArgs(f64, inf(f64), -1e0);
+            try testArgs(f64, inf(f64), -1e-1);
             try testArgs(f64, inf(f64), -fmin(f64));
             try testArgs(f64, inf(f64), -tmin(f64));
             try testArgs(f64, inf(f64), -0.0);
             try testArgs(f64, inf(f64), 0.0);
             try testArgs(f64, inf(f64), tmin(f64));
             try testArgs(f64, inf(f64), fmin(f64));
-            try testArgs(f64, inf(f64), 0.1);
-            try testArgs(f64, inf(f64), 1.0);
-            try testArgs(f64, inf(f64), 10.0);
+            try testArgs(f64, inf(f64), 1e-1);
+            try testArgs(f64, inf(f64), 1e0);
+            try testArgs(f64, inf(f64), 1e1);
             try testArgs(f64, inf(f64), fmax(f64));
             try testArgs(f64, inf(f64), inf(f64));
             try testArgs(f64, inf(f64), nan(f64));
@@ -2721,18 +9062,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f64, nan(f64), -nan(f64));
             try testArgs(f64, nan(f64), -inf(f64));
             try testArgs(f64, nan(f64), -fmax(f64));
-            try testArgs(f64, nan(f64), -10.0);
-            try testArgs(f64, nan(f64), -1.0);
-            try testArgs(f64, nan(f64), -0.1);
+            try testArgs(f64, nan(f64), -1e1);
+            try testArgs(f64, nan(f64), -1e0);
+            try testArgs(f64, nan(f64), -1e-1);
             try testArgs(f64, nan(f64), -fmin(f64));
             try testArgs(f64, nan(f64), -tmin(f64));
             try testArgs(f64, nan(f64), -0.0);
             try testArgs(f64, nan(f64), 0.0);
             try testArgs(f64, nan(f64), tmin(f64));
             try testArgs(f64, nan(f64), fmin(f64));
-            try testArgs(f64, nan(f64), 0.1);
-            try testArgs(f64, nan(f64), 1.0);
-            try testArgs(f64, nan(f64), 10.0);
+            try testArgs(f64, nan(f64), 1e-1);
+            try testArgs(f64, nan(f64), 1e0);
+            try testArgs(f64, nan(f64), 1e1);
             try testArgs(f64, nan(f64), fmax(f64));
             try testArgs(f64, nan(f64), inf(f64));
             try testArgs(f64, nan(f64), nan(f64));
@@ -2740,18 +9081,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, -nan(f80), -nan(f80));
             try testArgs(f80, -nan(f80), -inf(f80));
             try testArgs(f80, -nan(f80), -fmax(f80));
-            try testArgs(f80, -nan(f80), -10.0);
-            try testArgs(f80, -nan(f80), -1.0);
-            try testArgs(f80, -nan(f80), -0.1);
+            try testArgs(f80, -nan(f80), -1e1);
+            try testArgs(f80, -nan(f80), -1e0);
+            try testArgs(f80, -nan(f80), -1e-1);
             try testArgs(f80, -nan(f80), -fmin(f80));
             try testArgs(f80, -nan(f80), -tmin(f80));
             try testArgs(f80, -nan(f80), -0.0);
             try testArgs(f80, -nan(f80), 0.0);
             try testArgs(f80, -nan(f80), tmin(f80));
             try testArgs(f80, -nan(f80), fmin(f80));
-            try testArgs(f80, -nan(f80), 0.1);
-            try testArgs(f80, -nan(f80), 1.0);
-            try testArgs(f80, -nan(f80), 10.0);
+            try testArgs(f80, -nan(f80), 1e-1);
+            try testArgs(f80, -nan(f80), 1e0);
+            try testArgs(f80, -nan(f80), 1e1);
             try testArgs(f80, -nan(f80), fmax(f80));
             try testArgs(f80, -nan(f80), inf(f80));
             try testArgs(f80, -nan(f80), nan(f80));
@@ -2759,18 +9100,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, -inf(f80), -nan(f80));
             try testArgs(f80, -inf(f80), -inf(f80));
             try testArgs(f80, -inf(f80), -fmax(f80));
-            try testArgs(f80, -inf(f80), -10.0);
-            try testArgs(f80, -inf(f80), -1.0);
-            try testArgs(f80, -inf(f80), -0.1);
+            try testArgs(f80, -inf(f80), -1e1);
+            try testArgs(f80, -inf(f80), -1e0);
+            try testArgs(f80, -inf(f80), -1e-1);
             try testArgs(f80, -inf(f80), -fmin(f80));
             try testArgs(f80, -inf(f80), -tmin(f80));
             try testArgs(f80, -inf(f80), -0.0);
             try testArgs(f80, -inf(f80), 0.0);
             try testArgs(f80, -inf(f80), tmin(f80));
             try testArgs(f80, -inf(f80), fmin(f80));
-            try testArgs(f80, -inf(f80), 0.1);
-            try testArgs(f80, -inf(f80), 1.0);
-            try testArgs(f80, -inf(f80), 10.0);
+            try testArgs(f80, -inf(f80), 1e-1);
+            try testArgs(f80, -inf(f80), 1e0);
+            try testArgs(f80, -inf(f80), 1e1);
             try testArgs(f80, -inf(f80), fmax(f80));
             try testArgs(f80, -inf(f80), inf(f80));
             try testArgs(f80, -inf(f80), nan(f80));
@@ -2778,94 +9119,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, -fmax(f80), -nan(f80));
             try testArgs(f80, -fmax(f80), -inf(f80));
             try testArgs(f80, -fmax(f80), -fmax(f80));
-            try testArgs(f80, -fmax(f80), -10.0);
-            try testArgs(f80, -fmax(f80), -1.0);
-            try testArgs(f80, -fmax(f80), -0.1);
+            try testArgs(f80, -fmax(f80), -1e1);
+            try testArgs(f80, -fmax(f80), -1e0);
+            try testArgs(f80, -fmax(f80), -1e-1);
             try testArgs(f80, -fmax(f80), -fmin(f80));
             try testArgs(f80, -fmax(f80), -tmin(f80));
             try testArgs(f80, -fmax(f80), -0.0);
             try testArgs(f80, -fmax(f80), 0.0);
             try testArgs(f80, -fmax(f80), tmin(f80));
             try testArgs(f80, -fmax(f80), fmin(f80));
-            try testArgs(f80, -fmax(f80), 0.1);
-            try testArgs(f80, -fmax(f80), 1.0);
-            try testArgs(f80, -fmax(f80), 10.0);
+            try testArgs(f80, -fmax(f80), 1e-1);
+            try testArgs(f80, -fmax(f80), 1e0);
+            try testArgs(f80, -fmax(f80), 1e1);
             try testArgs(f80, -fmax(f80), fmax(f80));
             try testArgs(f80, -fmax(f80), inf(f80));
             try testArgs(f80, -fmax(f80), nan(f80));
 
-            try testArgs(f80, -10.0, -nan(f80));
-            try testArgs(f80, -10.0, -inf(f80));
-            try testArgs(f80, -10.0, -fmax(f80));
-            try testArgs(f80, -10.0, -10.0);
-            try testArgs(f80, -10.0, -1.0);
-            try testArgs(f80, -10.0, -0.1);
-            try testArgs(f80, -10.0, -fmin(f80));
-            try testArgs(f80, -10.0, -tmin(f80));
-            try testArgs(f80, -10.0, -0.0);
-            try testArgs(f80, -10.0, 0.0);
-            try testArgs(f80, -10.0, tmin(f80));
-            try testArgs(f80, -10.0, fmin(f80));
-            try testArgs(f80, -10.0, 0.1);
-            try testArgs(f80, -10.0, 1.0);
-            try testArgs(f80, -10.0, 10.0);
-            try testArgs(f80, -10.0, fmax(f80));
-            try testArgs(f80, -10.0, inf(f80));
-            try testArgs(f80, -10.0, nan(f80));
-
-            try testArgs(f80, -1.0, -nan(f80));
-            try testArgs(f80, -1.0, -inf(f80));
-            try testArgs(f80, -1.0, -fmax(f80));
-            try testArgs(f80, -1.0, -10.0);
-            try testArgs(f80, -1.0, -1.0);
-            try testArgs(f80, -1.0, -0.1);
-            try testArgs(f80, -1.0, -fmin(f80));
-            try testArgs(f80, -1.0, -tmin(f80));
-            try testArgs(f80, -1.0, -0.0);
-            try testArgs(f80, -1.0, 0.0);
-            try testArgs(f80, -1.0, tmin(f80));
-            try testArgs(f80, -1.0, fmin(f80));
-            try testArgs(f80, -1.0, 0.1);
-            try testArgs(f80, -1.0, 1.0);
-            try testArgs(f80, -1.0, 10.0);
-            try testArgs(f80, -1.0, fmax(f80));
-            try testArgs(f80, -1.0, inf(f80));
-            try testArgs(f80, -1.0, nan(f80));
-
-            try testArgs(f80, -0.1, -nan(f80));
-            try testArgs(f80, -0.1, -inf(f80));
-            try testArgs(f80, -0.1, -fmax(f80));
-            try testArgs(f80, -0.1, -10.0);
-            try testArgs(f80, -0.1, -1.0);
-            try testArgs(f80, -0.1, -0.1);
-            try testArgs(f80, -0.1, -fmin(f80));
-            try testArgs(f80, -0.1, -tmin(f80));
-            try testArgs(f80, -0.1, -0.0);
-            try testArgs(f80, -0.1, 0.0);
-            try testArgs(f80, -0.1, tmin(f80));
-            try testArgs(f80, -0.1, fmin(f80));
-            try testArgs(f80, -0.1, 0.1);
-            try testArgs(f80, -0.1, 1.0);
-            try testArgs(f80, -0.1, 10.0);
-            try testArgs(f80, -0.1, fmax(f80));
-            try testArgs(f80, -0.1, inf(f80));
-            try testArgs(f80, -0.1, nan(f80));
+            try testArgs(f80, -1e1, -nan(f80));
+            try testArgs(f80, -1e1, -inf(f80));
+            try testArgs(f80, -1e1, -fmax(f80));
+            try testArgs(f80, -1e1, -1e1);
+            try testArgs(f80, -1e1, -1e0);
+            try testArgs(f80, -1e1, -1e-1);
+            try testArgs(f80, -1e1, -fmin(f80));
+            try testArgs(f80, -1e1, -tmin(f80));
+            try testArgs(f80, -1e1, -0.0);
+            try testArgs(f80, -1e1, 0.0);
+            try testArgs(f80, -1e1, tmin(f80));
+            try testArgs(f80, -1e1, fmin(f80));
+            try testArgs(f80, -1e1, 1e-1);
+            try testArgs(f80, -1e1, 1e0);
+            try testArgs(f80, -1e1, 1e1);
+            try testArgs(f80, -1e1, fmax(f80));
+            try testArgs(f80, -1e1, inf(f80));
+            try testArgs(f80, -1e1, nan(f80));
+
+            try testArgs(f80, -1e0, -nan(f80));
+            try testArgs(f80, -1e0, -inf(f80));
+            try testArgs(f80, -1e0, -fmax(f80));
+            try testArgs(f80, -1e0, -1e1);
+            try testArgs(f80, -1e0, -1e0);
+            try testArgs(f80, -1e0, -1e-1);
+            try testArgs(f80, -1e0, -fmin(f80));
+            try testArgs(f80, -1e0, -tmin(f80));
+            try testArgs(f80, -1e0, -0.0);
+            try testArgs(f80, -1e0, 0.0);
+            try testArgs(f80, -1e0, tmin(f80));
+            try testArgs(f80, -1e0, fmin(f80));
+            try testArgs(f80, -1e0, 1e-1);
+            try testArgs(f80, -1e0, 1e0);
+            try testArgs(f80, -1e0, 1e1);
+            try testArgs(f80, -1e0, fmax(f80));
+            try testArgs(f80, -1e0, inf(f80));
+            try testArgs(f80, -1e0, nan(f80));
+
+            try testArgs(f80, -1e-1, -nan(f80));
+            try testArgs(f80, -1e-1, -inf(f80));
+            try testArgs(f80, -1e-1, -fmax(f80));
+            try testArgs(f80, -1e-1, -1e1);
+            try testArgs(f80, -1e-1, -1e0);
+            try testArgs(f80, -1e-1, -1e-1);
+            try testArgs(f80, -1e-1, -fmin(f80));
+            try testArgs(f80, -1e-1, -tmin(f80));
+            try testArgs(f80, -1e-1, -0.0);
+            try testArgs(f80, -1e-1, 0.0);
+            try testArgs(f80, -1e-1, tmin(f80));
+            try testArgs(f80, -1e-1, fmin(f80));
+            try testArgs(f80, -1e-1, 1e-1);
+            try testArgs(f80, -1e-1, 1e0);
+            try testArgs(f80, -1e-1, 1e1);
+            try testArgs(f80, -1e-1, fmax(f80));
+            try testArgs(f80, -1e-1, inf(f80));
+            try testArgs(f80, -1e-1, nan(f80));
 
             try testArgs(f80, -fmin(f80), -nan(f80));
             try testArgs(f80, -fmin(f80), -inf(f80));
             try testArgs(f80, -fmin(f80), -fmax(f80));
-            try testArgs(f80, -fmin(f80), -10.0);
-            try testArgs(f80, -fmin(f80), -1.0);
-            try testArgs(f80, -fmin(f80), -0.1);
+            try testArgs(f80, -fmin(f80), -1e1);
+            try testArgs(f80, -fmin(f80), -1e0);
+            try testArgs(f80, -fmin(f80), -1e-1);
             try testArgs(f80, -fmin(f80), -fmin(f80));
             try testArgs(f80, -fmin(f80), -tmin(f80));
             try testArgs(f80, -fmin(f80), -0.0);
             try testArgs(f80, -fmin(f80), 0.0);
             try testArgs(f80, -fmin(f80), tmin(f80));
             try testArgs(f80, -fmin(f80), fmin(f80));
-            try testArgs(f80, -fmin(f80), 0.1);
-            try testArgs(f80, -fmin(f80), 1.0);
-            try testArgs(f80, -fmin(f80), 10.0);
+            try testArgs(f80, -fmin(f80), 1e-1);
+            try testArgs(f80, -fmin(f80), 1e0);
+            try testArgs(f80, -fmin(f80), 1e1);
             try testArgs(f80, -fmin(f80), fmax(f80));
             try testArgs(f80, -fmin(f80), inf(f80));
             try testArgs(f80, -fmin(f80), nan(f80));
@@ -2873,18 +9214,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, -tmin(f80), -nan(f80));
             try testArgs(f80, -tmin(f80), -inf(f80));
             try testArgs(f80, -tmin(f80), -fmax(f80));
-            try testArgs(f80, -tmin(f80), -10.0);
-            try testArgs(f80, -tmin(f80), -1.0);
-            try testArgs(f80, -tmin(f80), -0.1);
+            try testArgs(f80, -tmin(f80), -1e1);
+            try testArgs(f80, -tmin(f80), -1e0);
+            try testArgs(f80, -tmin(f80), -1e-1);
             try testArgs(f80, -tmin(f80), -fmin(f80));
             try testArgs(f80, -tmin(f80), -tmin(f80));
             try testArgs(f80, -tmin(f80), -0.0);
             try testArgs(f80, -tmin(f80), 0.0);
             try testArgs(f80, -tmin(f80), tmin(f80));
             try testArgs(f80, -tmin(f80), fmin(f80));
-            try testArgs(f80, -tmin(f80), 0.1);
-            try testArgs(f80, -tmin(f80), 1.0);
-            try testArgs(f80, -tmin(f80), 10.0);
+            try testArgs(f80, -tmin(f80), 1e-1);
+            try testArgs(f80, -tmin(f80), 1e0);
+            try testArgs(f80, -tmin(f80), 1e1);
             try testArgs(f80, -tmin(f80), fmax(f80));
             try testArgs(f80, -tmin(f80), inf(f80));
             try testArgs(f80, -tmin(f80), nan(f80));
@@ -2892,18 +9233,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, -0.0, -nan(f80));
             try testArgs(f80, -0.0, -inf(f80));
             try testArgs(f80, -0.0, -fmax(f80));
-            try testArgs(f80, -0.0, -10.0);
-            try testArgs(f80, -0.0, -1.0);
-            try testArgs(f80, -0.0, -0.1);
+            try testArgs(f80, -0.0, -1e1);
+            try testArgs(f80, -0.0, -1e0);
+            try testArgs(f80, -0.0, -1e-1);
             try testArgs(f80, -0.0, -fmin(f80));
             try testArgs(f80, -0.0, -tmin(f80));
             try testArgs(f80, -0.0, -0.0);
             try testArgs(f80, -0.0, 0.0);
             try testArgs(f80, -0.0, tmin(f80));
             try testArgs(f80, -0.0, fmin(f80));
-            try testArgs(f80, -0.0, 0.1);
-            try testArgs(f80, -0.0, 1.0);
-            try testArgs(f80, -0.0, 10.0);
+            try testArgs(f80, -0.0, 1e-1);
+            try testArgs(f80, -0.0, 1e0);
+            try testArgs(f80, -0.0, 1e1);
             try testArgs(f80, -0.0, fmax(f80));
             try testArgs(f80, -0.0, inf(f80));
             try testArgs(f80, -0.0, nan(f80));
@@ -2911,18 +9252,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, 0.0, -nan(f80));
             try testArgs(f80, 0.0, -inf(f80));
             try testArgs(f80, 0.0, -fmax(f80));
-            try testArgs(f80, 0.0, -10.0);
-            try testArgs(f80, 0.0, -1.0);
-            try testArgs(f80, 0.0, -0.1);
+            try testArgs(f80, 0.0, -1e1);
+            try testArgs(f80, 0.0, -1e0);
+            try testArgs(f80, 0.0, -1e-1);
             try testArgs(f80, 0.0, -fmin(f80));
             try testArgs(f80, 0.0, -tmin(f80));
             try testArgs(f80, 0.0, -0.0);
             try testArgs(f80, 0.0, 0.0);
             try testArgs(f80, 0.0, tmin(f80));
             try testArgs(f80, 0.0, fmin(f80));
-            try testArgs(f80, 0.0, 0.1);
-            try testArgs(f80, 0.0, 1.0);
-            try testArgs(f80, 0.0, 10.0);
+            try testArgs(f80, 0.0, 1e-1);
+            try testArgs(f80, 0.0, 1e0);
+            try testArgs(f80, 0.0, 1e1);
             try testArgs(f80, 0.0, fmax(f80));
             try testArgs(f80, 0.0, inf(f80));
             try testArgs(f80, 0.0, nan(f80));
@@ -2930,18 +9271,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, tmin(f80), -nan(f80));
             try testArgs(f80, tmin(f80), -inf(f80));
             try testArgs(f80, tmin(f80), -fmax(f80));
-            try testArgs(f80, tmin(f80), -10.0);
-            try testArgs(f80, tmin(f80), -1.0);
-            try testArgs(f80, tmin(f80), -0.1);
+            try testArgs(f80, tmin(f80), -1e1);
+            try testArgs(f80, tmin(f80), -1e0);
+            try testArgs(f80, tmin(f80), -1e-1);
             try testArgs(f80, tmin(f80), -fmin(f80));
             try testArgs(f80, tmin(f80), -tmin(f80));
             try testArgs(f80, tmin(f80), -0.0);
             try testArgs(f80, tmin(f80), 0.0);
             try testArgs(f80, tmin(f80), tmin(f80));
             try testArgs(f80, tmin(f80), fmin(f80));
-            try testArgs(f80, tmin(f80), 0.1);
-            try testArgs(f80, tmin(f80), 1.0);
-            try testArgs(f80, tmin(f80), 10.0);
+            try testArgs(f80, tmin(f80), 1e-1);
+            try testArgs(f80, tmin(f80), 1e0);
+            try testArgs(f80, tmin(f80), 1e1);
             try testArgs(f80, tmin(f80), fmax(f80));
             try testArgs(f80, tmin(f80), inf(f80));
             try testArgs(f80, tmin(f80), nan(f80));
@@ -2949,94 +9290,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, fmin(f80), -nan(f80));
             try testArgs(f80, fmin(f80), -inf(f80));
             try testArgs(f80, fmin(f80), -fmax(f80));
-            try testArgs(f80, fmin(f80), -10.0);
-            try testArgs(f80, fmin(f80), -1.0);
-            try testArgs(f80, fmin(f80), -0.1);
+            try testArgs(f80, fmin(f80), -1e1);
+            try testArgs(f80, fmin(f80), -1e0);
+            try testArgs(f80, fmin(f80), -1e-1);
             try testArgs(f80, fmin(f80), -fmin(f80));
             try testArgs(f80, fmin(f80), -tmin(f80));
             try testArgs(f80, fmin(f80), -0.0);
             try testArgs(f80, fmin(f80), 0.0);
             try testArgs(f80, fmin(f80), tmin(f80));
             try testArgs(f80, fmin(f80), fmin(f80));
-            try testArgs(f80, fmin(f80), 0.1);
-            try testArgs(f80, fmin(f80), 1.0);
-            try testArgs(f80, fmin(f80), 10.0);
+            try testArgs(f80, fmin(f80), 1e-1);
+            try testArgs(f80, fmin(f80), 1e0);
+            try testArgs(f80, fmin(f80), 1e1);
             try testArgs(f80, fmin(f80), fmax(f80));
             try testArgs(f80, fmin(f80), inf(f80));
             try testArgs(f80, fmin(f80), nan(f80));
 
-            try testArgs(f80, 0.1, -nan(f80));
-            try testArgs(f80, 0.1, -inf(f80));
-            try testArgs(f80, 0.1, -fmax(f80));
-            try testArgs(f80, 0.1, -10.0);
-            try testArgs(f80, 0.1, -1.0);
-            try testArgs(f80, 0.1, -0.1);
-            try testArgs(f80, 0.1, -fmin(f80));
-            try testArgs(f80, 0.1, -tmin(f80));
-            try testArgs(f80, 0.1, -0.0);
-            try testArgs(f80, 0.1, 0.0);
-            try testArgs(f80, 0.1, tmin(f80));
-            try testArgs(f80, 0.1, fmin(f80));
-            try testArgs(f80, 0.1, 0.1);
-            try testArgs(f80, 0.1, 1.0);
-            try testArgs(f80, 0.1, 10.0);
-            try testArgs(f80, 0.1, fmax(f80));
-            try testArgs(f80, 0.1, inf(f80));
-            try testArgs(f80, 0.1, nan(f80));
-
-            try testArgs(f80, 1.0, -nan(f80));
-            try testArgs(f80, 1.0, -inf(f80));
-            try testArgs(f80, 1.0, -fmax(f80));
-            try testArgs(f80, 1.0, -10.0);
-            try testArgs(f80, 1.0, -1.0);
-            try testArgs(f80, 1.0, -0.1);
-            try testArgs(f80, 1.0, -fmin(f80));
-            try testArgs(f80, 1.0, -tmin(f80));
-            try testArgs(f80, 1.0, -0.0);
-            try testArgs(f80, 1.0, 0.0);
-            try testArgs(f80, 1.0, tmin(f80));
-            try testArgs(f80, 1.0, fmin(f80));
-            try testArgs(f80, 1.0, 0.1);
-            try testArgs(f80, 1.0, 1.0);
-            try testArgs(f80, 1.0, 10.0);
-            try testArgs(f80, 1.0, fmax(f80));
-            try testArgs(f80, 1.0, inf(f80));
-            try testArgs(f80, 1.0, nan(f80));
-
-            try testArgs(f80, 10.0, -nan(f80));
-            try testArgs(f80, 10.0, -inf(f80));
-            try testArgs(f80, 10.0, -fmax(f80));
-            try testArgs(f80, 10.0, -10.0);
-            try testArgs(f80, 10.0, -1.0);
-            try testArgs(f80, 10.0, -0.1);
-            try testArgs(f80, 10.0, -fmin(f80));
-            try testArgs(f80, 10.0, -tmin(f80));
-            try testArgs(f80, 10.0, -0.0);
-            try testArgs(f80, 10.0, 0.0);
-            try testArgs(f80, 10.0, tmin(f80));
-            try testArgs(f80, 10.0, fmin(f80));
-            try testArgs(f80, 10.0, 0.1);
-            try testArgs(f80, 10.0, 1.0);
-            try testArgs(f80, 10.0, 10.0);
-            try testArgs(f80, 10.0, fmax(f80));
-            try testArgs(f80, 10.0, inf(f80));
-            try testArgs(f80, 10.0, nan(f80));
+            try testArgs(f80, 1e-1, -nan(f80));
+            try testArgs(f80, 1e-1, -inf(f80));
+            try testArgs(f80, 1e-1, -fmax(f80));
+            try testArgs(f80, 1e-1, -1e1);
+            try testArgs(f80, 1e-1, -1e0);
+            try testArgs(f80, 1e-1, -1e-1);
+            try testArgs(f80, 1e-1, -fmin(f80));
+            try testArgs(f80, 1e-1, -tmin(f80));
+            try testArgs(f80, 1e-1, -0.0);
+            try testArgs(f80, 1e-1, 0.0);
+            try testArgs(f80, 1e-1, tmin(f80));
+            try testArgs(f80, 1e-1, fmin(f80));
+            try testArgs(f80, 1e-1, 1e-1);
+            try testArgs(f80, 1e-1, 1e0);
+            try testArgs(f80, 1e-1, 1e1);
+            try testArgs(f80, 1e-1, fmax(f80));
+            try testArgs(f80, 1e-1, inf(f80));
+            try testArgs(f80, 1e-1, nan(f80));
+
+            try testArgs(f80, 1e0, -nan(f80));
+            try testArgs(f80, 1e0, -inf(f80));
+            try testArgs(f80, 1e0, -fmax(f80));
+            try testArgs(f80, 1e0, -1e1);
+            try testArgs(f80, 1e0, -1e0);
+            try testArgs(f80, 1e0, -1e-1);
+            try testArgs(f80, 1e0, -fmin(f80));
+            try testArgs(f80, 1e0, -tmin(f80));
+            try testArgs(f80, 1e0, -0.0);
+            try testArgs(f80, 1e0, 0.0);
+            try testArgs(f80, 1e0, tmin(f80));
+            try testArgs(f80, 1e0, fmin(f80));
+            try testArgs(f80, 1e0, 1e-1);
+            try testArgs(f80, 1e0, 1e0);
+            try testArgs(f80, 1e0, 1e1);
+            try testArgs(f80, 1e0, fmax(f80));
+            try testArgs(f80, 1e0, inf(f80));
+            try testArgs(f80, 1e0, nan(f80));
+
+            try testArgs(f80, 1e1, -nan(f80));
+            try testArgs(f80, 1e1, -inf(f80));
+            try testArgs(f80, 1e1, -fmax(f80));
+            try testArgs(f80, 1e1, -1e1);
+            try testArgs(f80, 1e1, -1e0);
+            try testArgs(f80, 1e1, -1e-1);
+            try testArgs(f80, 1e1, -fmin(f80));
+            try testArgs(f80, 1e1, -tmin(f80));
+            try testArgs(f80, 1e1, -0.0);
+            try testArgs(f80, 1e1, 0.0);
+            try testArgs(f80, 1e1, tmin(f80));
+            try testArgs(f80, 1e1, fmin(f80));
+            try testArgs(f80, 1e1, 1e-1);
+            try testArgs(f80, 1e1, 1e0);
+            try testArgs(f80, 1e1, 1e1);
+            try testArgs(f80, 1e1, fmax(f80));
+            try testArgs(f80, 1e1, inf(f80));
+            try testArgs(f80, 1e1, nan(f80));
 
             try testArgs(f80, fmax(f80), -nan(f80));
             try testArgs(f80, fmax(f80), -inf(f80));
             try testArgs(f80, fmax(f80), -fmax(f80));
-            try testArgs(f80, fmax(f80), -10.0);
-            try testArgs(f80, fmax(f80), -1.0);
-            try testArgs(f80, fmax(f80), -0.1);
+            try testArgs(f80, fmax(f80), -1e1);
+            try testArgs(f80, fmax(f80), -1e0);
+            try testArgs(f80, fmax(f80), -1e-1);
             try testArgs(f80, fmax(f80), -fmin(f80));
             try testArgs(f80, fmax(f80), -tmin(f80));
             try testArgs(f80, fmax(f80), -0.0);
             try testArgs(f80, fmax(f80), 0.0);
             try testArgs(f80, fmax(f80), tmin(f80));
             try testArgs(f80, fmax(f80), fmin(f80));
-            try testArgs(f80, fmax(f80), 0.1);
-            try testArgs(f80, fmax(f80), 1.0);
-            try testArgs(f80, fmax(f80), 10.0);
+            try testArgs(f80, fmax(f80), 1e-1);
+            try testArgs(f80, fmax(f80), 1e0);
+            try testArgs(f80, fmax(f80), 1e1);
             try testArgs(f80, fmax(f80), fmax(f80));
             try testArgs(f80, fmax(f80), inf(f80));
             try testArgs(f80, fmax(f80), nan(f80));
@@ -3044,18 +9385,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, inf(f80), -nan(f80));
             try testArgs(f80, inf(f80), -inf(f80));
             try testArgs(f80, inf(f80), -fmax(f80));
-            try testArgs(f80, inf(f80), -10.0);
-            try testArgs(f80, inf(f80), -1.0);
-            try testArgs(f80, inf(f80), -0.1);
+            try testArgs(f80, inf(f80), -1e1);
+            try testArgs(f80, inf(f80), -1e0);
+            try testArgs(f80, inf(f80), -1e-1);
             try testArgs(f80, inf(f80), -fmin(f80));
             try testArgs(f80, inf(f80), -tmin(f80));
             try testArgs(f80, inf(f80), -0.0);
             try testArgs(f80, inf(f80), 0.0);
             try testArgs(f80, inf(f80), tmin(f80));
             try testArgs(f80, inf(f80), fmin(f80));
-            try testArgs(f80, inf(f80), 0.1);
-            try testArgs(f80, inf(f80), 1.0);
-            try testArgs(f80, inf(f80), 10.0);
+            try testArgs(f80, inf(f80), 1e-1);
+            try testArgs(f80, inf(f80), 1e0);
+            try testArgs(f80, inf(f80), 1e1);
             try testArgs(f80, inf(f80), fmax(f80));
             try testArgs(f80, inf(f80), inf(f80));
             try testArgs(f80, inf(f80), nan(f80));
@@ -3063,18 +9404,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f80, nan(f80), -nan(f80));
             try testArgs(f80, nan(f80), -inf(f80));
             try testArgs(f80, nan(f80), -fmax(f80));
-            try testArgs(f80, nan(f80), -10.0);
-            try testArgs(f80, nan(f80), -1.0);
-            try testArgs(f80, nan(f80), -0.1);
+            try testArgs(f80, nan(f80), -1e1);
+            try testArgs(f80, nan(f80), -1e0);
+            try testArgs(f80, nan(f80), -1e-1);
             try testArgs(f80, nan(f80), -fmin(f80));
             try testArgs(f80, nan(f80), -tmin(f80));
             try testArgs(f80, nan(f80), -0.0);
             try testArgs(f80, nan(f80), 0.0);
             try testArgs(f80, nan(f80), tmin(f80));
             try testArgs(f80, nan(f80), fmin(f80));
-            try testArgs(f80, nan(f80), 0.1);
-            try testArgs(f80, nan(f80), 1.0);
-            try testArgs(f80, nan(f80), 10.0);
+            try testArgs(f80, nan(f80), 1e-1);
+            try testArgs(f80, nan(f80), 1e0);
+            try testArgs(f80, nan(f80), 1e1);
             try testArgs(f80, nan(f80), fmax(f80));
             try testArgs(f80, nan(f80), inf(f80));
             try testArgs(f80, nan(f80), nan(f80));
@@ -3082,18 +9423,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, -nan(f128), -nan(f128));
             try testArgs(f128, -nan(f128), -inf(f128));
             try testArgs(f128, -nan(f128), -fmax(f128));
-            try testArgs(f128, -nan(f128), -10.0);
-            try testArgs(f128, -nan(f128), -1.0);
-            try testArgs(f128, -nan(f128), -0.1);
+            try testArgs(f128, -nan(f128), -1e1);
+            try testArgs(f128, -nan(f128), -1e0);
+            try testArgs(f128, -nan(f128), -1e-1);
             try testArgs(f128, -nan(f128), -fmin(f128));
             try testArgs(f128, -nan(f128), -tmin(f128));
             try testArgs(f128, -nan(f128), -0.0);
             try testArgs(f128, -nan(f128), 0.0);
             try testArgs(f128, -nan(f128), tmin(f128));
             try testArgs(f128, -nan(f128), fmin(f128));
-            try testArgs(f128, -nan(f128), 0.1);
-            try testArgs(f128, -nan(f128), 1.0);
-            try testArgs(f128, -nan(f128), 10.0);
+            try testArgs(f128, -nan(f128), 1e-1);
+            try testArgs(f128, -nan(f128), 1e0);
+            try testArgs(f128, -nan(f128), 1e1);
             try testArgs(f128, -nan(f128), fmax(f128));
             try testArgs(f128, -nan(f128), inf(f128));
             try testArgs(f128, -nan(f128), nan(f128));
@@ -3101,18 +9442,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, -inf(f128), -nan(f128));
             try testArgs(f128, -inf(f128), -inf(f128));
             try testArgs(f128, -inf(f128), -fmax(f128));
-            try testArgs(f128, -inf(f128), -10.0);
-            try testArgs(f128, -inf(f128), -1.0);
-            try testArgs(f128, -inf(f128), -0.1);
+            try testArgs(f128, -inf(f128), -1e1);
+            try testArgs(f128, -inf(f128), -1e0);
+            try testArgs(f128, -inf(f128), -1e-1);
             try testArgs(f128, -inf(f128), -fmin(f128));
             try testArgs(f128, -inf(f128), -tmin(f128));
             try testArgs(f128, -inf(f128), -0.0);
             try testArgs(f128, -inf(f128), 0.0);
             try testArgs(f128, -inf(f128), tmin(f128));
             try testArgs(f128, -inf(f128), fmin(f128));
-            try testArgs(f128, -inf(f128), 0.1);
-            try testArgs(f128, -inf(f128), 1.0);
-            try testArgs(f128, -inf(f128), 10.0);
+            try testArgs(f128, -inf(f128), 1e-1);
+            try testArgs(f128, -inf(f128), 1e0);
+            try testArgs(f128, -inf(f128), 1e1);
             try testArgs(f128, -inf(f128), fmax(f128));
             try testArgs(f128, -inf(f128), inf(f128));
             try testArgs(f128, -inf(f128), nan(f128));
@@ -3120,94 +9461,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, -fmax(f128), -nan(f128));
             try testArgs(f128, -fmax(f128), -inf(f128));
             try testArgs(f128, -fmax(f128), -fmax(f128));
-            try testArgs(f128, -fmax(f128), -10.0);
-            try testArgs(f128, -fmax(f128), -1.0);
-            try testArgs(f128, -fmax(f128), -0.1);
+            try testArgs(f128, -fmax(f128), -1e1);
+            try testArgs(f128, -fmax(f128), -1e0);
+            try testArgs(f128, -fmax(f128), -1e-1);
             try testArgs(f128, -fmax(f128), -fmin(f128));
             try testArgs(f128, -fmax(f128), -tmin(f128));
             try testArgs(f128, -fmax(f128), -0.0);
             try testArgs(f128, -fmax(f128), 0.0);
             try testArgs(f128, -fmax(f128), tmin(f128));
             try testArgs(f128, -fmax(f128), fmin(f128));
-            try testArgs(f128, -fmax(f128), 0.1);
-            try testArgs(f128, -fmax(f128), 1.0);
-            try testArgs(f128, -fmax(f128), 10.0);
+            try testArgs(f128, -fmax(f128), 1e-1);
+            try testArgs(f128, -fmax(f128), 1e0);
+            try testArgs(f128, -fmax(f128), 1e1);
             try testArgs(f128, -fmax(f128), fmax(f128));
             try testArgs(f128, -fmax(f128), inf(f128));
             try testArgs(f128, -fmax(f128), nan(f128));
 
-            try testArgs(f128, -10.0, -nan(f128));
-            try testArgs(f128, -10.0, -inf(f128));
-            try testArgs(f128, -10.0, -fmax(f128));
-            try testArgs(f128, -10.0, -10.0);
-            try testArgs(f128, -10.0, -1.0);
-            try testArgs(f128, -10.0, -0.1);
-            try testArgs(f128, -10.0, -fmin(f128));
-            try testArgs(f128, -10.0, -tmin(f128));
-            try testArgs(f128, -10.0, -0.0);
-            try testArgs(f128, -10.0, 0.0);
-            try testArgs(f128, -10.0, tmin(f128));
-            try testArgs(f128, -10.0, fmin(f128));
-            try testArgs(f128, -10.0, 0.1);
-            try testArgs(f128, -10.0, 1.0);
-            try testArgs(f128, -10.0, 10.0);
-            try testArgs(f128, -10.0, fmax(f128));
-            try testArgs(f128, -10.0, inf(f128));
-            try testArgs(f128, -10.0, nan(f128));
-
-            try testArgs(f128, -1.0, -nan(f128));
-            try testArgs(f128, -1.0, -inf(f128));
-            try testArgs(f128, -1.0, -fmax(f128));
-            try testArgs(f128, -1.0, -10.0);
-            try testArgs(f128, -1.0, -1.0);
-            try testArgs(f128, -1.0, -0.1);
-            try testArgs(f128, -1.0, -fmin(f128));
-            try testArgs(f128, -1.0, -tmin(f128));
-            try testArgs(f128, -1.0, -0.0);
-            try testArgs(f128, -1.0, 0.0);
-            try testArgs(f128, -1.0, tmin(f128));
-            try testArgs(f128, -1.0, fmin(f128));
-            try testArgs(f128, -1.0, 0.1);
-            try testArgs(f128, -1.0, 1.0);
-            try testArgs(f128, -1.0, 10.0);
-            try testArgs(f128, -1.0, fmax(f128));
-            try testArgs(f128, -1.0, inf(f128));
-            try testArgs(f128, -1.0, nan(f128));
-
-            try testArgs(f128, -0.1, -nan(f128));
-            try testArgs(f128, -0.1, -inf(f128));
-            try testArgs(f128, -0.1, -fmax(f128));
-            try testArgs(f128, -0.1, -10.0);
-            try testArgs(f128, -0.1, -1.0);
-            try testArgs(f128, -0.1, -0.1);
-            try testArgs(f128, -0.1, -fmin(f128));
-            try testArgs(f128, -0.1, -tmin(f128));
-            try testArgs(f128, -0.1, -0.0);
-            try testArgs(f128, -0.1, 0.0);
-            try testArgs(f128, -0.1, tmin(f128));
-            try testArgs(f128, -0.1, fmin(f128));
-            try testArgs(f128, -0.1, 0.1);
-            try testArgs(f128, -0.1, 1.0);
-            try testArgs(f128, -0.1, 10.0);
-            try testArgs(f128, -0.1, fmax(f128));
-            try testArgs(f128, -0.1, inf(f128));
-            try testArgs(f128, -0.1, nan(f128));
+            try testArgs(f128, -1e1, -nan(f128));
+            try testArgs(f128, -1e1, -inf(f128));
+            try testArgs(f128, -1e1, -fmax(f128));
+            try testArgs(f128, -1e1, -1e1);
+            try testArgs(f128, -1e1, -1e0);
+            try testArgs(f128, -1e1, -1e-1);
+            try testArgs(f128, -1e1, -fmin(f128));
+            try testArgs(f128, -1e1, -tmin(f128));
+            try testArgs(f128, -1e1, -0.0);
+            try testArgs(f128, -1e1, 0.0);
+            try testArgs(f128, -1e1, tmin(f128));
+            try testArgs(f128, -1e1, fmin(f128));
+            try testArgs(f128, -1e1, 1e-1);
+            try testArgs(f128, -1e1, 1e0);
+            try testArgs(f128, -1e1, 1e1);
+            try testArgs(f128, -1e1, fmax(f128));
+            try testArgs(f128, -1e1, inf(f128));
+            try testArgs(f128, -1e1, nan(f128));
+
+            try testArgs(f128, -1e0, -nan(f128));
+            try testArgs(f128, -1e0, -inf(f128));
+            try testArgs(f128, -1e0, -fmax(f128));
+            try testArgs(f128, -1e0, -1e1);
+            try testArgs(f128, -1e0, -1e0);
+            try testArgs(f128, -1e0, -1e-1);
+            try testArgs(f128, -1e0, -fmin(f128));
+            try testArgs(f128, -1e0, -tmin(f128));
+            try testArgs(f128, -1e0, -0.0);
+            try testArgs(f128, -1e0, 0.0);
+            try testArgs(f128, -1e0, tmin(f128));
+            try testArgs(f128, -1e0, fmin(f128));
+            try testArgs(f128, -1e0, 1e-1);
+            try testArgs(f128, -1e0, 1e0);
+            try testArgs(f128, -1e0, 1e1);
+            try testArgs(f128, -1e0, fmax(f128));
+            try testArgs(f128, -1e0, inf(f128));
+            try testArgs(f128, -1e0, nan(f128));
+
+            try testArgs(f128, -1e-1, -nan(f128));
+            try testArgs(f128, -1e-1, -inf(f128));
+            try testArgs(f128, -1e-1, -fmax(f128));
+            try testArgs(f128, -1e-1, -1e1);
+            try testArgs(f128, -1e-1, -1e0);
+            try testArgs(f128, -1e-1, -1e-1);
+            try testArgs(f128, -1e-1, -fmin(f128));
+            try testArgs(f128, -1e-1, -tmin(f128));
+            try testArgs(f128, -1e-1, -0.0);
+            try testArgs(f128, -1e-1, 0.0);
+            try testArgs(f128, -1e-1, tmin(f128));
+            try testArgs(f128, -1e-1, fmin(f128));
+            try testArgs(f128, -1e-1, 1e-1);
+            try testArgs(f128, -1e-1, 1e0);
+            try testArgs(f128, -1e-1, 1e1);
+            try testArgs(f128, -1e-1, fmax(f128));
+            try testArgs(f128, -1e-1, inf(f128));
+            try testArgs(f128, -1e-1, nan(f128));
 
             try testArgs(f128, -fmin(f128), -nan(f128));
             try testArgs(f128, -fmin(f128), -inf(f128));
             try testArgs(f128, -fmin(f128), -fmax(f128));
-            try testArgs(f128, -fmin(f128), -10.0);
-            try testArgs(f128, -fmin(f128), -1.0);
-            try testArgs(f128, -fmin(f128), -0.1);
+            try testArgs(f128, -fmin(f128), -1e1);
+            try testArgs(f128, -fmin(f128), -1e0);
+            try testArgs(f128, -fmin(f128), -1e-1);
             try testArgs(f128, -fmin(f128), -fmin(f128));
             try testArgs(f128, -fmin(f128), -tmin(f128));
             try testArgs(f128, -fmin(f128), -0.0);
             try testArgs(f128, -fmin(f128), 0.0);
             try testArgs(f128, -fmin(f128), tmin(f128));
             try testArgs(f128, -fmin(f128), fmin(f128));
-            try testArgs(f128, -fmin(f128), 0.1);
-            try testArgs(f128, -fmin(f128), 1.0);
-            try testArgs(f128, -fmin(f128), 10.0);
+            try testArgs(f128, -fmin(f128), 1e-1);
+            try testArgs(f128, -fmin(f128), 1e0);
+            try testArgs(f128, -fmin(f128), 1e1);
             try testArgs(f128, -fmin(f128), fmax(f128));
             try testArgs(f128, -fmin(f128), inf(f128));
             try testArgs(f128, -fmin(f128), nan(f128));
@@ -3215,18 +9556,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, -tmin(f128), -nan(f128));
             try testArgs(f128, -tmin(f128), -inf(f128));
             try testArgs(f128, -tmin(f128), -fmax(f128));
-            try testArgs(f128, -tmin(f128), -10.0);
-            try testArgs(f128, -tmin(f128), -1.0);
-            try testArgs(f128, -tmin(f128), -0.1);
+            try testArgs(f128, -tmin(f128), -1e1);
+            try testArgs(f128, -tmin(f128), -1e0);
+            try testArgs(f128, -tmin(f128), -1e-1);
             try testArgs(f128, -tmin(f128), -fmin(f128));
             try testArgs(f128, -tmin(f128), -tmin(f128));
             try testArgs(f128, -tmin(f128), -0.0);
             try testArgs(f128, -tmin(f128), 0.0);
             try testArgs(f128, -tmin(f128), tmin(f128));
             try testArgs(f128, -tmin(f128), fmin(f128));
-            try testArgs(f128, -tmin(f128), 0.1);
-            try testArgs(f128, -tmin(f128), 1.0);
-            try testArgs(f128, -tmin(f128), 10.0);
+            try testArgs(f128, -tmin(f128), 1e-1);
+            try testArgs(f128, -tmin(f128), 1e0);
+            try testArgs(f128, -tmin(f128), 1e1);
             try testArgs(f128, -tmin(f128), fmax(f128));
             try testArgs(f128, -tmin(f128), inf(f128));
             try testArgs(f128, -tmin(f128), nan(f128));
@@ -3234,18 +9575,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, -0.0, -nan(f128));
             try testArgs(f128, -0.0, -inf(f128));
             try testArgs(f128, -0.0, -fmax(f128));
-            try testArgs(f128, -0.0, -10.0);
-            try testArgs(f128, -0.0, -1.0);
-            try testArgs(f128, -0.0, -0.1);
+            try testArgs(f128, -0.0, -1e1);
+            try testArgs(f128, -0.0, -1e0);
+            try testArgs(f128, -0.0, -1e-1);
             try testArgs(f128, -0.0, -fmin(f128));
             try testArgs(f128, -0.0, -tmin(f128));
             try testArgs(f128, -0.0, -0.0);
             try testArgs(f128, -0.0, 0.0);
             try testArgs(f128, -0.0, tmin(f128));
             try testArgs(f128, -0.0, fmin(f128));
-            try testArgs(f128, -0.0, 0.1);
-            try testArgs(f128, -0.0, 1.0);
-            try testArgs(f128, -0.0, 10.0);
+            try testArgs(f128, -0.0, 1e-1);
+            try testArgs(f128, -0.0, 1e0);
+            try testArgs(f128, -0.0, 1e1);
             try testArgs(f128, -0.0, fmax(f128));
             try testArgs(f128, -0.0, inf(f128));
             try testArgs(f128, -0.0, nan(f128));
@@ -3253,18 +9594,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, 0.0, -nan(f128));
             try testArgs(f128, 0.0, -inf(f128));
             try testArgs(f128, 0.0, -fmax(f128));
-            try testArgs(f128, 0.0, -10.0);
-            try testArgs(f128, 0.0, -1.0);
-            try testArgs(f128, 0.0, -0.1);
+            try testArgs(f128, 0.0, -1e1);
+            try testArgs(f128, 0.0, -1e0);
+            try testArgs(f128, 0.0, -1e-1);
             try testArgs(f128, 0.0, -fmin(f128));
             try testArgs(f128, 0.0, -tmin(f128));
             try testArgs(f128, 0.0, -0.0);
             try testArgs(f128, 0.0, 0.0);
             try testArgs(f128, 0.0, tmin(f128));
             try testArgs(f128, 0.0, fmin(f128));
-            try testArgs(f128, 0.0, 0.1);
-            try testArgs(f128, 0.0, 1.0);
-            try testArgs(f128, 0.0, 10.0);
+            try testArgs(f128, 0.0, 1e-1);
+            try testArgs(f128, 0.0, 1e0);
+            try testArgs(f128, 0.0, 1e1);
             try testArgs(f128, 0.0, fmax(f128));
             try testArgs(f128, 0.0, inf(f128));
             try testArgs(f128, 0.0, nan(f128));
@@ -3272,18 +9613,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, tmin(f128), -nan(f128));
             try testArgs(f128, tmin(f128), -inf(f128));
             try testArgs(f128, tmin(f128), -fmax(f128));
-            try testArgs(f128, tmin(f128), -10.0);
-            try testArgs(f128, tmin(f128), -1.0);
-            try testArgs(f128, tmin(f128), -0.1);
+            try testArgs(f128, tmin(f128), -1e1);
+            try testArgs(f128, tmin(f128), -1e0);
+            try testArgs(f128, tmin(f128), -1e-1);
             try testArgs(f128, tmin(f128), -fmin(f128));
             try testArgs(f128, tmin(f128), -tmin(f128));
             try testArgs(f128, tmin(f128), -0.0);
             try testArgs(f128, tmin(f128), 0.0);
             try testArgs(f128, tmin(f128), tmin(f128));
             try testArgs(f128, tmin(f128), fmin(f128));
-            try testArgs(f128, tmin(f128), 0.1);
-            try testArgs(f128, tmin(f128), 1.0);
-            try testArgs(f128, tmin(f128), 10.0);
+            try testArgs(f128, tmin(f128), 1e-1);
+            try testArgs(f128, tmin(f128), 1e0);
+            try testArgs(f128, tmin(f128), 1e1);
             try testArgs(f128, tmin(f128), fmax(f128));
             try testArgs(f128, tmin(f128), inf(f128));
             try testArgs(f128, tmin(f128), nan(f128));
@@ -3291,94 +9632,94 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, fmin(f128), -nan(f128));
             try testArgs(f128, fmin(f128), -inf(f128));
             try testArgs(f128, fmin(f128), -fmax(f128));
-            try testArgs(f128, fmin(f128), -10.0);
-            try testArgs(f128, fmin(f128), -1.0);
-            try testArgs(f128, fmin(f128), -0.1);
+            try testArgs(f128, fmin(f128), -1e1);
+            try testArgs(f128, fmin(f128), -1e0);
+            try testArgs(f128, fmin(f128), -1e-1);
             try testArgs(f128, fmin(f128), -fmin(f128));
             try testArgs(f128, fmin(f128), -tmin(f128));
             try testArgs(f128, fmin(f128), -0.0);
             try testArgs(f128, fmin(f128), 0.0);
             try testArgs(f128, fmin(f128), tmin(f128));
             try testArgs(f128, fmin(f128), fmin(f128));
-            try testArgs(f128, fmin(f128), 0.1);
-            try testArgs(f128, fmin(f128), 1.0);
-            try testArgs(f128, fmin(f128), 10.0);
+            try testArgs(f128, fmin(f128), 1e-1);
+            try testArgs(f128, fmin(f128), 1e0);
+            try testArgs(f128, fmin(f128), 1e1);
             try testArgs(f128, fmin(f128), fmax(f128));
             try testArgs(f128, fmin(f128), inf(f128));
             try testArgs(f128, fmin(f128), nan(f128));
 
-            try testArgs(f128, 0.1, -nan(f128));
-            try testArgs(f128, 0.1, -inf(f128));
-            try testArgs(f128, 0.1, -fmax(f128));
-            try testArgs(f128, 0.1, -10.0);
-            try testArgs(f128, 0.1, -1.0);
-            try testArgs(f128, 0.1, -0.1);
-            try testArgs(f128, 0.1, -fmin(f128));
-            try testArgs(f128, 0.1, -tmin(f128));
-            try testArgs(f128, 0.1, -0.0);
-            try testArgs(f128, 0.1, 0.0);
-            try testArgs(f128, 0.1, tmin(f128));
-            try testArgs(f128, 0.1, fmin(f128));
-            try testArgs(f128, 0.1, 0.1);
-            try testArgs(f128, 0.1, 1.0);
-            try testArgs(f128, 0.1, 10.0);
-            try testArgs(f128, 0.1, fmax(f128));
-            try testArgs(f128, 0.1, inf(f128));
-            try testArgs(f128, 0.1, nan(f128));
-
-            try testArgs(f128, 1.0, -nan(f128));
-            try testArgs(f128, 1.0, -inf(f128));
-            try testArgs(f128, 1.0, -fmax(f128));
-            try testArgs(f128, 1.0, -10.0);
-            try testArgs(f128, 1.0, -1.0);
-            try testArgs(f128, 1.0, -0.1);
-            try testArgs(f128, 1.0, -fmin(f128));
-            try testArgs(f128, 1.0, -tmin(f128));
-            try testArgs(f128, 1.0, -0.0);
-            try testArgs(f128, 1.0, 0.0);
-            try testArgs(f128, 1.0, tmin(f128));
-            try testArgs(f128, 1.0, fmin(f128));
-            try testArgs(f128, 1.0, 0.1);
-            try testArgs(f128, 1.0, 1.0);
-            try testArgs(f128, 1.0, 10.0);
-            try testArgs(f128, 1.0, fmax(f128));
-            try testArgs(f128, 1.0, inf(f128));
-            try testArgs(f128, 1.0, nan(f128));
-
-            try testArgs(f128, 10.0, -nan(f128));
-            try testArgs(f128, 10.0, -inf(f128));
-            try testArgs(f128, 10.0, -fmax(f128));
-            try testArgs(f128, 10.0, -10.0);
-            try testArgs(f128, 10.0, -1.0);
-            try testArgs(f128, 10.0, -0.1);
-            try testArgs(f128, 10.0, -fmin(f128));
-            try testArgs(f128, 10.0, -tmin(f128));
-            try testArgs(f128, 10.0, -0.0);
-            try testArgs(f128, 10.0, 0.0);
-            try testArgs(f128, 10.0, tmin(f128));
-            try testArgs(f128, 10.0, fmin(f128));
-            try testArgs(f128, 10.0, 0.1);
-            try testArgs(f128, 10.0, 1.0);
-            try testArgs(f128, 10.0, 10.0);
-            try testArgs(f128, 10.0, fmax(f128));
-            try testArgs(f128, 10.0, inf(f128));
-            try testArgs(f128, 10.0, nan(f128));
+            try testArgs(f128, 1e-1, -nan(f128));
+            try testArgs(f128, 1e-1, -inf(f128));
+            try testArgs(f128, 1e-1, -fmax(f128));
+            try testArgs(f128, 1e-1, -1e1);
+            try testArgs(f128, 1e-1, -1e0);
+            try testArgs(f128, 1e-1, -1e-1);
+            try testArgs(f128, 1e-1, -fmin(f128));
+            try testArgs(f128, 1e-1, -tmin(f128));
+            try testArgs(f128, 1e-1, -0.0);
+            try testArgs(f128, 1e-1, 0.0);
+            try testArgs(f128, 1e-1, tmin(f128));
+            try testArgs(f128, 1e-1, fmin(f128));
+            try testArgs(f128, 1e-1, 1e-1);
+            try testArgs(f128, 1e-1, 1e0);
+            try testArgs(f128, 1e-1, 1e1);
+            try testArgs(f128, 1e-1, fmax(f128));
+            try testArgs(f128, 1e-1, inf(f128));
+            try testArgs(f128, 1e-1, nan(f128));
+
+            try testArgs(f128, 1e0, -nan(f128));
+            try testArgs(f128, 1e0, -inf(f128));
+            try testArgs(f128, 1e0, -fmax(f128));
+            try testArgs(f128, 1e0, -1e1);
+            try testArgs(f128, 1e0, -1e0);
+            try testArgs(f128, 1e0, -1e-1);
+            try testArgs(f128, 1e0, -fmin(f128));
+            try testArgs(f128, 1e0, -tmin(f128));
+            try testArgs(f128, 1e0, -0.0);
+            try testArgs(f128, 1e0, 0.0);
+            try testArgs(f128, 1e0, tmin(f128));
+            try testArgs(f128, 1e0, fmin(f128));
+            try testArgs(f128, 1e0, 1e-1);
+            try testArgs(f128, 1e0, 1e0);
+            try testArgs(f128, 1e0, 1e1);
+            try testArgs(f128, 1e0, fmax(f128));
+            try testArgs(f128, 1e0, inf(f128));
+            try testArgs(f128, 1e0, nan(f128));
+
+            try testArgs(f128, 1e1, -nan(f128));
+            try testArgs(f128, 1e1, -inf(f128));
+            try testArgs(f128, 1e1, -fmax(f128));
+            try testArgs(f128, 1e1, -1e1);
+            try testArgs(f128, 1e1, -1e0);
+            try testArgs(f128, 1e1, -1e-1);
+            try testArgs(f128, 1e1, -fmin(f128));
+            try testArgs(f128, 1e1, -tmin(f128));
+            try testArgs(f128, 1e1, -0.0);
+            try testArgs(f128, 1e1, 0.0);
+            try testArgs(f128, 1e1, tmin(f128));
+            try testArgs(f128, 1e1, fmin(f128));
+            try testArgs(f128, 1e1, 1e-1);
+            try testArgs(f128, 1e1, 1e0);
+            try testArgs(f128, 1e1, 1e1);
+            try testArgs(f128, 1e1, fmax(f128));
+            try testArgs(f128, 1e1, inf(f128));
+            try testArgs(f128, 1e1, nan(f128));
 
             try testArgs(f128, fmax(f128), -nan(f128));
             try testArgs(f128, fmax(f128), -inf(f128));
             try testArgs(f128, fmax(f128), -fmax(f128));
-            try testArgs(f128, fmax(f128), -10.0);
-            try testArgs(f128, fmax(f128), -1.0);
-            try testArgs(f128, fmax(f128), -0.1);
+            try testArgs(f128, fmax(f128), -1e1);
+            try testArgs(f128, fmax(f128), -1e0);
+            try testArgs(f128, fmax(f128), -1e-1);
             try testArgs(f128, fmax(f128), -fmin(f128));
             try testArgs(f128, fmax(f128), -tmin(f128));
             try testArgs(f128, fmax(f128), -0.0);
             try testArgs(f128, fmax(f128), 0.0);
             try testArgs(f128, fmax(f128), tmin(f128));
             try testArgs(f128, fmax(f128), fmin(f128));
-            try testArgs(f128, fmax(f128), 0.1);
-            try testArgs(f128, fmax(f128), 1.0);
-            try testArgs(f128, fmax(f128), 10.0);
+            try testArgs(f128, fmax(f128), 1e-1);
+            try testArgs(f128, fmax(f128), 1e0);
+            try testArgs(f128, fmax(f128), 1e1);
             try testArgs(f128, fmax(f128), fmax(f128));
             try testArgs(f128, fmax(f128), inf(f128));
             try testArgs(f128, fmax(f128), nan(f128));
@@ -3386,18 +9727,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, inf(f128), -nan(f128));
             try testArgs(f128, inf(f128), -inf(f128));
             try testArgs(f128, inf(f128), -fmax(f128));
-            try testArgs(f128, inf(f128), -10.0);
-            try testArgs(f128, inf(f128), -1.0);
-            try testArgs(f128, inf(f128), -0.1);
+            try testArgs(f128, inf(f128), -1e1);
+            try testArgs(f128, inf(f128), -1e0);
+            try testArgs(f128, inf(f128), -1e-1);
             try testArgs(f128, inf(f128), -fmin(f128));
             try testArgs(f128, inf(f128), -tmin(f128));
             try testArgs(f128, inf(f128), -0.0);
             try testArgs(f128, inf(f128), 0.0);
             try testArgs(f128, inf(f128), tmin(f128));
             try testArgs(f128, inf(f128), fmin(f128));
-            try testArgs(f128, inf(f128), 0.1);
-            try testArgs(f128, inf(f128), 1.0);
-            try testArgs(f128, inf(f128), 10.0);
+            try testArgs(f128, inf(f128), 1e-1);
+            try testArgs(f128, inf(f128), 1e0);
+            try testArgs(f128, inf(f128), 1e1);
             try testArgs(f128, inf(f128), fmax(f128));
             try testArgs(f128, inf(f128), inf(f128));
             try testArgs(f128, inf(f128), nan(f128));
@@ -3405,18 +9746,18 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(f128, nan(f128), -nan(f128));
             try testArgs(f128, nan(f128), -inf(f128));
             try testArgs(f128, nan(f128), -fmax(f128));
-            try testArgs(f128, nan(f128), -10.0);
-            try testArgs(f128, nan(f128), -1.0);
-            try testArgs(f128, nan(f128), -0.1);
+            try testArgs(f128, nan(f128), -1e1);
+            try testArgs(f128, nan(f128), -1e0);
+            try testArgs(f128, nan(f128), -1e-1);
             try testArgs(f128, nan(f128), -fmin(f128));
             try testArgs(f128, nan(f128), -tmin(f128));
             try testArgs(f128, nan(f128), -0.0);
             try testArgs(f128, nan(f128), 0.0);
             try testArgs(f128, nan(f128), tmin(f128));
             try testArgs(f128, nan(f128), fmin(f128));
-            try testArgs(f128, nan(f128), 0.1);
-            try testArgs(f128, nan(f128), 1.0);
-            try testArgs(f128, nan(f128), 10.0);
+            try testArgs(f128, nan(f128), 1e-1);
+            try testArgs(f128, nan(f128), 1e0);
+            try testArgs(f128, nan(f128), 1e1);
             try testArgs(f128, nan(f128), fmax(f128));
             try testArgs(f128, nan(f128), inf(f128));
             try testArgs(f128, nan(f128), nan(f128));
@@ -4050,73 +10391,73 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
                 fmax(f16),
             });
             try testArgs(@Vector(2, f16), .{
-                0.1, 1.0,
+                1e-1, 1e0,
             }, .{
                 -nan(f16), -fmin(f16),
             });
             try testArgs(@Vector(4, f16), .{
-                0.1, -fmax(f16), 0.0, 0.1,
+                1e-1, -fmax(f16), 0.0, 1e-1,
             }, .{
-                -fmin(f16), -10.0, 1.0, -tmin(f16),
+                -fmin(f16), -1e1, 1e0, -tmin(f16),
             });
             try testArgs(@Vector(8, f16), .{
-                -fmax(f16), -fmin(f16), -nan(f16), -0.0, tmin(f16), -0.0, 0.0, 0.1,
+                -fmax(f16), -fmin(f16), -nan(f16), -0.0, tmin(f16), -0.0, 0.0, 1e-1,
             }, .{
-                -1.0, tmin(f16), nan(f16), nan(f16), -fmax(f16), -10.0, -nan(f16), 10.0,
+                -1e0, tmin(f16), nan(f16), nan(f16), -fmax(f16), -1e1, -nan(f16), 1e1,
             });
             try testArgs(@Vector(16, f16), .{
-                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),
+                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),
             }, .{
-                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),
+                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),
             });
             try testArgs(@Vector(32, f16), .{
-                -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),
-                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,
+                -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),
+                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,
             }, .{
-                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),
-                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,
+                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),
+                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,
             });
             try testArgs(@Vector(64, f16), .{
-                -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),
-                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),
-                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,
-                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),
+                -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),
+                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),
+                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,
+                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),
             }, .{
-                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,
-                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,
-                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,
-                -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),
+                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,
+                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,
+                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,
+                -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),
             });
             try testArgs(@Vector(128, f16), .{
-                -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),
-                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),
-                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),
-                -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,
-                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),
-                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,
-                -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),
-                -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,
+                -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),
+                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),
+                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),
+                -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,
+                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),
+                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,
+                -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),
+                -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,
             }, .{
-                -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),
-                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),
-                -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,
-                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),
-                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),
-                -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),
-                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,
-                -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,
+                -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),
+                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),
+                -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,
+                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),
+                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),
+                -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),
+                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,
+                -fmin(f16), tmin(f16),  -1e0,      1e-1,       0.0,       nan(f16),  1e0,        fmax(f16),  -1e0,       1e1,        nan(f16),   1e0,       fmin(f16),  1e0,       -1e1,       -1e1,
             });
             try testArgs(@Vector(69, f16), .{
-                -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),
-                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,
-                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),
-                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,
-                -10.0,     -0.0,      -fmax(f16), nan(f16),  fmax(f16),
+                -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),
+                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,
+                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),
+                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,
+                -1e1,      -0.0,      -fmax(f16), nan(f16),  fmax(f16),
             }, .{
-                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),
-                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,
-                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),
-                -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),
+                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),
+                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,
+                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),
+                -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),
                 inf(f16),   fmin(f16),  -nan(f16), -inf(f16), inf(f16),
             });
 
@@ -4126,229 +10467,229 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
                 -tmin(f32),
             });
             try testArgs(@Vector(2, f32), .{
-                nan(f32), -10.0,
+                nan(f32), -1e1,
             }, .{
                 -tmin(f32), fmin(f32),
             });
             try testArgs(@Vector(4, f32), .{
-                fmax(f32), -fmax(f32), -10.0, 0.0,
+                fmax(f32), -fmax(f32), -1e1, 0.0,
             }, .{
-                inf(f32), inf(f32), -10.0, inf(f32),
+                inf(f32), inf(f32), -1e1, inf(f32),
             });
             try testArgs(@Vector(8, f32), .{
-                -10.0, fmax(f32), inf(f32), -0.0, -tmin(f32), -tmin(f32), 10.0, 0.1,
+                -1e1, fmax(f32), inf(f32), -0.0, -tmin(f32), -tmin(f32), 1e1, 1e-1,
             }, .{
-                10.0, -1.0, -1.0, inf(f32), 1.0, -tmin(f32), nan(f32), 10.0,
+                1e1, -1e0, -1e0, inf(f32), 1e0, -tmin(f32), nan(f32), 1e1,
             });
             try testArgs(@Vector(16, f32), .{
-                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),
+                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),
             }, .{
-                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),
+                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),
             });
             try testArgs(@Vector(32, f32), .{
-                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,
-                -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,
+                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,
+                -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,
             }, .{
-                -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),
-                -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),
+                -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),
+                -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),
                 -fmin(f32), fmax(f32),
             });
             try testArgs(@Vector(64, f32), .{
-                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,
-                -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),
-                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),
-                -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,
+                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,
+                -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),
+                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),
+                -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,
             }, .{
-                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,
-                -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,
-                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),
-                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),
+                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,
+                -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,
+                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),
+                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),
             });
             try testArgs(@Vector(128, f32), .{
-                -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,
-                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),
-                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,
-                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,
-                -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),
-                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),
-                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),
-                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),
+                -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,
+                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),
+                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,
+                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,
+                -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),
+                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),
+                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),
+                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),
             }, .{
-                -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),
-                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),
-                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,
-                -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),
-                -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,
-                -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),
-                -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),
-                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),
+                -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),
+                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),
+                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,
+                -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),
+                -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,
+                -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),
+                -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),
+                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),
             });
             try testArgs(@Vector(69, f32), .{
-                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,
-                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,
-                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),
-                -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,
-                10.0,       -nan(f32), -nan(f32),  tmin(f32),  -nan(f32),
+                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,
+                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,
+                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),
+                -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,
+                1e1,        -nan(f32), -nan(f32),  tmin(f32),  -nan(f32),
             }, .{
-                -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),
-                -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),
-                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),
-                -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,
-                -10.0,     fmin(f32), inf(f32),  fmin(f32),  0.0,
+                -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),
+                -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),
+                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),
+                -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,
+                -1e1,      fmin(f32), inf(f32),  fmin(f32),  0.0,
             });
 
             try testArgs(@Vector(1, f64), .{
                 -0.0,
             }, .{
-                1.0,
+                1e0,
             });
             try testArgs(@Vector(2, f64), .{
-                -1.0, 0.0,
+                -1e0, 0.0,
             }, .{
                 -inf(f64), -fmax(f64),
             });
             try testArgs(@Vector(4, f64), .{
-                -inf(f64), inf(f64), 10.0, 0.0,
+                -inf(f64), inf(f64), 1e1, 0.0,
             }, .{
-                -tmin(f64), 1.0, nan(f64), 0.0,
+                -tmin(f64), 1e0, nan(f64), 0.0,
             });
             try testArgs(@Vector(8, f64), .{
-                0.1, -tmin(f64), -fmax(f64), 1.0, inf(f64), -10.0, -tmin(f64), -10.0,
+                1e-1, -tmin(f64), -fmax(f64), 1e0, inf(f64), -1e1, -tmin(f64), -1e1,
             }, .{
-                tmin(f64), fmin(f64), 0.1, 10.0, -0.0, -0.0, fmax(f64), -1.0,
+                tmin(f64), fmin(f64), 1e-1, 1e1, -0.0, -0.0, fmax(f64), -1e0,
             });
             try testArgs(@Vector(16, f64), .{
-                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,
+                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,
             }, .{
-                -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),
+                -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),
             });
             try testArgs(@Vector(32, f64), .{
-                -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,
-                -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),
+                -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,
+                -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),
             }, .{
-                -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),
-                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),
+                -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),
+                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),
             });
             try testArgs(@Vector(64, f64), .{
-                -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,
-                -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,
-                -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),
-                -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,
+                -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,
+                -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,
+                -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),
+                -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,
             }, .{
-                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),
-                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,
-                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),
-                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,
+                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),
+                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,
+                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),
+                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,
             });
             try testArgs(@Vector(128, f64), .{
-                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),
-                -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),
-                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),
-                -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,
-                -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),
-                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),
-                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,
-                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),
-                -fmin(f64), -fmin(f64), -1.0,       inf(f64),  nan(f64),   tmin(f64), 0.1,       -1.0,
+                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),
+                -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),
+                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),
+                -fmin(f64), 1e0,        -inf(f64),  -1e1,      1e-1,       1e0,       1e1,       1e1,        tmin(f64),  nan(f64),   inf(f64),   0.0,       -1e0,       -1e1,       1e0,
+                -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),
+                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),
+                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,
+                1e-1,       1e-1,       1e-1,       inf(f64),  -inf(f64),  1e0,       1e1,       1e1,        nan(f64),   1e1,        -tmin(f64), 1e0,       -fmin(f64), -1e0,       -fmax(f64),
+                -fmin(f64), -fmin(f64), -1e0,       inf(f64),  nan(f64),   tmin(f64), 1e-1,      -1e0,
             }, .{
-                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),
-                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,
-                -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),
-                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),
-                -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,
-                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,
-                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,
-                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),
-                tmin(f64), -10.0,      -nan(f64), 10.0,       -inf(f64),  -fmax(f64), -inf(f64),  -1.0,
+                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),
+                nan(f64),  -tmin(f64), tmin(f64), 1e0,        1e-1,       -1e1,       -nan(f64),  1e0,       inf(f64),   -1e1,       fmin(f64), 1e-1,       1e1,        -1e1,       1e1,
+                -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),
+                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),
+                -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,
+                1e-1,      0.0,        -1e1,      -nan(f64),  1e1,        -fmin(f64), -tmin(f64), 1e1,       1e0,        -tmin(f64), -1e0,      -fmin(f64), -0.0,       -1e1,       1e-1,
+                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,
+                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),
+                tmin(f64), -1e1,       -nan(f64), 1e1,        -inf(f64),  -fmax(f64), -inf(f64),  -1e0,
             });
             try testArgs(@Vector(69, f64), .{
-                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),
-                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),
-                -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),
-                -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,
-                -nan(f64),  10.0,      -1.0,       0.1,        0.0,
+                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),
+                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),
+                -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),
+                -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,
+                -nan(f64),  1e1,       -1e0,       1e-1,       0.0,
             }, .{
-                -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),
-                -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),
-                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),
-                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,
-                -nan(f64),  -fmin(f64), 0.1,       nan(f64),   0.1,
+                -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),
+                -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),
+                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),
+                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,
+                -nan(f64),  -fmin(f64), 1e-1,      nan(f64),   1e-1,
             });
 
             try testArgs(@Vector(1, f80), .{
                 -nan(f80),
             }, .{
-                -1.0,
+                -1e0,
             });
             try testArgs(@Vector(2, f80), .{
                 -fmax(f80), -inf(f80),
             }, .{
-                0.1, 10.0,
+                1e-1, 1e1,
             });
             try testArgs(@Vector(4, f80), .{
-                -0.0, -inf(f80), 0.1, 10.0,
+                -0.0, -inf(f80), 1e-1, 1e1,
             }, .{
-                -1.0, 0.0, 0.1, -10.0,
+                -1e0, 0.0, 1e-1, -1e1,
             });
             try testArgs(@Vector(8, f80), .{
-                1.0, -0.0, -inf(f80), 0.1, -inf(f80), fmin(f80), 0.0, 10.0,
+                1e0, -0.0, -inf(f80), 1e-1, -inf(f80), fmin(f80), 0.0, 1e1,
             }, .{
-                -0.0, -fmin(f80), fmin(f80), -nan(f80), nan(f80), inf(f80), fmin(f80), 10.0,
+                -0.0, -fmin(f80), fmin(f80), -nan(f80), nan(f80), inf(f80), fmin(f80), 1e1,
             });
             try testArgs(@Vector(16, f80), .{
-                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),
+                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),
             }, .{
-                -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,
+                -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,
             });
             try testArgs(@Vector(32, f80), .{
-                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),
-                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),
+                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),
+                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),
             }, .{
-                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,
-                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),
+                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,
+                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),
             });
             try testArgs(@Vector(64, f80), .{
-                -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),
-                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,
-                -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,
-                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),
+                -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),
+                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,
+                -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,
+                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),
             }, .{
-                -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),
-                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),
-                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,
-                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,
+                -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),
+                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),
+                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,
+                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,
             });
             try testArgs(@Vector(128, f80), .{
-                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),
-                -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,
-                -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,
-                -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),
-                -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),
-                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,
-                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,
-                -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),
+                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),
+                -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,
+                -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,
+                -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),
+                -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),
+                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,
+                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,
+                -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),
             }, .{
-                -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),
-                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,
-                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),
-                -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),
-                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,
-                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),
-                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),
-                -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,
+                -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),
+                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,
+                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),
+                -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),
+                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,
+                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),
+                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),
+                -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,
             });
             try testArgs(@Vector(69, f80), .{
-                -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,
-                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),
-                -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),
-                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,
-                -fmax(f80), -1.0,      0.1,        -1.0,      fmax(f80),
+                -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,
+                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),
+                -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),
+                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,
+                -fmax(f80), -1e0,      1e-1,       -1e0,      fmax(f80),
             }, .{
-                -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),
-                -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,
-                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),
-                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,
-                nan(f80),  10.0,       -10.0,      0.0,       -fmin(f80),
+                -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),
+                -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,
+                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),
+                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,
+                nan(f80),  1e1,        -1e1,       0.0,       -fmin(f80),
             });
 
             try testArgs(@Vector(1, f128), .{
@@ -4359,76 +10700,76 @@ fn binary(comptime op: anytype, comptime opts: struct { strict: bool = false })
             try testArgs(@Vector(2, f128), .{
                 0.0, -inf(f128),
             }, .{
-                0.1, -fmin(f128),
+                1e-1, -fmin(f128),
             });
             try testArgs(@Vector(4, f128), .{
-                0.1, fmax(f128), 10.0, -fmax(f128),
+                1e-1, fmax(f128), 1e1, -fmax(f128),
             }, .{
                 -tmin(f128), fmax(f128), -0.0, -0.0,
             });
             try testArgs(@Vector(8, f128), .{
-                10.0, -fmin(f128), 0.0, -inf(f128), 10.0, -0.0, -1.0, -fmin(f128),
+                1e1, -fmin(f128), 0.0, -inf(f128), 1e1, -0.0, -1e0, -fmin(f128),
             }, .{
-                fmin(f128), tmin(f128), -1.0, -10.0, 0.0, -tmin(f128), 0.0, 0.1,
+                fmin(f128), tmin(f128), -1e0, -1e1, 0.0, -tmin(f128), 0.0, 1e-1,
             });
             try testArgs(@Vector(16, f128), .{
-                -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),
+                -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),
             }, .{
-                -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),
+                -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),
             });
             try testArgs(@Vector(32, f128), .{
-                -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),
-                -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),
+                -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),
+                -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),
             }, .{
-                -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,
-                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,
+                -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,
+                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,
             });
             try testArgs(@Vector(64, f128), .{
-                -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,
-                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,
-                -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,
-                -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,
-                fmax(f128), fmax(f128), 0.1,         -fmax(f128),
+                -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,
+                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,
+                -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,
+                -1e0,       -1e0,       -1e0,        -inf(f128),  1e1,         -tmin(f128), nan(f128),   nan(f128), 1e-1,       fmin(f128),  1e-1,       tmin(f128), -1e1,       1e-1,        1e1,
+                fmax(f128), fmax(f128), 1e-1,        -fmax(f128),
             }, .{
-                -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,
-                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),
-                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),
-                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),
+                -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,
+                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),
+                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),
+                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),
             });
             try testArgs(@Vector(128, f128), .{
-                -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),
-                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),
-                -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,
-                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),
-                -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,
-                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,
-                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),
-                -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,
-                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),
-                0.1,         fmax(f128),
+                -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),
+                inf(f128),   -1e0,        tmin(f128),  -inf(f128),  0.0,         fmax(f128),  tmin(f128),  -fmin(f128), fmin(f128),  -1e1,        -fmin(f128), -1e1,        1e0,        -nan(f128),
+                -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,
+                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),
+                -fmin(f128), 0.0,         1e-1,        -nan(f128),  1e-1,        -inf(f128),  -nan(f128),  -1e0,        fmin(f128),  -0.0,        1e1,         -tmin(f128), 1e1,        1e0,
+                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,
+                1e-1,        0.0,         -fmin(f128), 0.0,         1e1,         1e1,         tmin(f128),  inf(f128),   -nan(f128),  -inf(f128),  -1e0,        -fmin(f128), -1e1,       -fmin(f128),
+                -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,
+                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),
+                1e-1,        fmax(f128),
             }, .{
-                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,
-                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),
-                -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),
-                -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,
-                -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),
-                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),
-                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,
-                -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,
-                fmin(f128),  10.0,        -tmin(f128), -tmin(f128), 0.0,         -10.0,       1.0,        -fmin(f128),
+                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,
+                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),
+                -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),
+                -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,
+                -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),
+                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),
+                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,
+                -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,
+                fmin(f128),  1e1,         -tmin(f128), -tmin(f128), 0.0,         -1e1,        1e0,        -fmin(f128),
             });
             try testArgs(@Vector(69, f128), .{
-                -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),
-                -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),
-                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,
-                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),
-                nan(f128),  -inf(f128), 1.0,        fmin(f128), -nan(f128),
+                -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),
+                -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),
+                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,
+                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),
+                nan(f128),  -inf(f128), 1e0,        fmin(f128), -nan(f128),
             }, .{
-                -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),
-                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,
-                -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,
-                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,
-                -1.0,       -inf(f128), tmin(f128), inf(f128),   inf(f128),
+                -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),
+                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,
+                -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,
+                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,
+                -1e0,       -inf(f128), tmin(f128), inf(f128),   inf(f128),
             });
         }
     };
@@ -4463,6 +10804,14 @@ test clz {
     try test_clz.testIntVectors();
 }
 
+inline fn floatCast(comptime Result: type, comptime Type: type, rhs: Type) Result {
+    return @floatCast(rhs);
+}
+test floatCast {
+    const test_float_cast = cast(floatCast, .{ .strict = true });
+    try test_float_cast.testFloats();
+}
+
 inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
     return lhs == rhs;
 }