diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 75bad7d585d6..42267f0ae13f 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -1240,13 +1240,10 @@ pub const Cpu = struct { /// Adds the specified feature set but not its dependencies. pub fn addFeatureSet(set: *Set, other_set: Set) void { - switch (builtin.zig_backend) { - .stage2_x86_64 => { - for (&set.ints, other_set.ints) |*set_int, other_set_int| set_int.* |= other_set_int; - }, - else => { - set.ints = @as(@Vector(usize_count, usize), set.ints) | @as(@Vector(usize_count, usize), other_set.ints); - }, + if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff) { + for (&set.ints, other_set.ints) |*set_int, other_set_int| set_int.* |= other_set_int; + } else { + set.ints = @as(@Vector(usize_count, usize), set.ints) | @as(@Vector(usize_count, usize), other_set.ints); } } @@ -1259,13 +1256,10 @@ pub const Cpu = struct { /// Removes the specified feature but not its dependents. pub fn removeFeatureSet(set: *Set, other_set: Set) void { - switch (builtin.zig_backend) { - .stage2_x86_64 => { - for (&set.ints, other_set.ints) |*set_int, other_set_int| set_int.* &= ~other_set_int; - }, - else => { - set.ints = @as(@Vector(usize_count, usize), set.ints) & ~@as(@Vector(usize_count, usize), other_set.ints); - }, + if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff) { + for (&set.ints, other_set.ints) |*set_int, other_set_int| set_int.* &= ~other_set_int; + } else { + set.ints = @as(@Vector(usize_count, usize), set.ints) & ~@as(@Vector(usize_count, usize), other_set.ints); } } @@ -1295,19 +1289,16 @@ pub const Cpu = struct { } pub fn isSuperSetOf(set: Set, other_set: Set) bool { - switch (builtin.zig_backend) { - .stage2_x86_64 => { - var result = true; - for (&set.ints, other_set.ints) |*set_int, other_set_int| - result = result and (set_int.* & other_set_int) == other_set_int; - return result; - }, - else => { - const V = @Vector(usize_count, usize); - const set_v: V = set.ints; - const other_v: V = other_set.ints; - return @reduce(.And, (set_v & other_v) == other_v); - }, + if (builtin.zig_backend == .stage2_x86_64 and builtin.object_format == .coff) { + var result = true; + for (&set.ints, other_set.ints) |*set_int, other_set_int| + result = result and (set_int.* & other_set_int) == other_set_int; + return result; + } else { + const V = @Vector(usize_count, usize); + const set_v: V = set.ints; + const other_v: V = other_set.ints; + return @reduce(.And, (set_v & other_v) == other_v); } } }; diff --git a/lib/std/math.zig b/lib/std/math.zig index 1e7858aaa93c..262d741e4342 100644 --- a/lib/std/math.zig +++ b/lib/std/math.zig @@ -1356,7 +1356,7 @@ pub fn lerp(a: anytype, b: anytype, t: anytype) @TypeOf(a, b, t) { test lerp { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/17884 if (builtin.zig_backend == .stage2_x86_64 and - !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .fma)) return error.SkipZigTest; + !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .fma)) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/17884 try testing.expectEqual(@as(f64, 75), lerp(50, 100, 0.5)); try testing.expectEqual(@as(f32, 43.75), lerp(50, 25, 0.25)); diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index d3a749ec4642..798391b63ecf 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -2414,7 +2414,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { - @setEvalBranchQuota(9_800); + @setEvalBranchQuota(11_900); const pt = cg.pt; const zcu = pt.zcu; const ip = &zcu.intern_pool; @@ -23900,8 +23900,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ss, .cmp, .dst0x, .src0x, .src1d, .vp(switch (cc) { + else => unreachable, + .l => .gt, + .le => .ge, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .{ .scalar_float = .{ .of = .dword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ @@ -23925,7 +23946,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .patterns = &.{ .{ .src = .{ .to_mut_sse, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ @@ -23947,8 +23967,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { + else => unreachable, + .l => .gt, + .le => .ge, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .{ .scalar_float = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ @@ -23972,7 +24013,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .patterns = &.{ .{ .src = .{ .to_mut_sse, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ @@ -23994,8 +24034,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .dword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { + else => unreachable, + .l => .gt, + .le => .ge, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .{ .scalar_float = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ @@ -24018,8 +24079,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_sd, .cmp, .dst0x, .src0x, .src1q, .vp(switch (cc) { + else => unreachable, + .l => .gt, + .le => .ge, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .{ .scalar_float = .{ .of = .qword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ @@ -24043,7 +24125,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .patterns = &.{ .{ .src = .{ .to_mut_sse, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ @@ -24065,8 +24146,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .cmp, .dst0x, .src0x, .src1x, .vp(switch (cc) { + else => unreachable, + .l => .gt, + .le => .ge, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .{ .scalar_float = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ @@ -24090,7 +24192,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .patterns = &.{ .{ .src = .{ .to_mut_sse, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, .{ .src = .{ .to_mut_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .ref_mask = .{ @@ -24112,8 +24213,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .any, }, .patterns = &.{ - .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ + .ref = .src0, + .rc = .sse, + .info = .{ .kind = .all, .scalar = .qword }, + } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .cmp, .dst0y, .src0y, .src1y, .vp(switch (cc) { + else => unreachable, + .l => .gt, + .le => .ge, + }) }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .{ .scalar_float = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, .{ .src = .{ .to_sse, .to_sse, .none } }, }, .dst_temps = .{.{ .mut_rc_mask = .{ @@ -26088,306 +26210,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { })) { else => unreachable, inline .e, .ne => |cc| comptime &.{ .{ - .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, - .patterns = &.{ - .{ .src = .{ .to_ymm, .mem, .none } }, - .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .byte, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_b, .cmpeq, .dst0y, .src0y, .src1y, ._ }, - } }, - }, .{ - .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, - .patterns = &.{ - .{ .src = .{ .to_ymm, .mem, .none } }, - .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .word, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_w, .cmpeq, .dst0y, .src0y, .src1y, ._ }, - } }, - }, .{ - .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_ymm, .mem, .none } }, - .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .dword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_d, .cmpeq, .dst0y, .src0y, .src1y, ._ }, - } }, - }, .{ - .required_features = .{ .avx2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_ymm, .mem, .none } }, - .{ .src = .{ .mem, .to_ymm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_ymm, .to_ymm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .qword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_q, .cmpeq, .dst0y, .src0y, .src1y, ._ }, - } }, - }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, - .patterns = &.{ - .{ .src = .{ .to_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .byte, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_b, .cmpeq, .dst0x, .src0x, .src1x, ._ }, - } }, - }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, - .patterns = &.{ - .{ .src = .{ .to_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .word, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_w, .cmpeq, .dst0x, .src0x, .src1x, ._ }, - } }, - }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .dword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_d, .cmpeq, .dst0x, .src0x, .src1x, ._ }, - } }, - }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .qword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .vp_q, .cmpeq, .dst0x, .src0x, .src1x, ._ }, - } }, - }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .byte, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_b, .cmpeq, .dst0x, .src1x, ._, ._ }, - } }, - }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .word, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_w, .cmpeq, .dst0x, .src1x, ._, ._ }, - } }, - }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .dword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_d, .cmpeq, .dst0x, .src1x, ._, ._ }, - } }, - }, .{ - .required_features = .{ .sse4_1, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_xmm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_xmm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_xmm, .to_xmm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .qword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_q, .cmpeq, .dst0x, .src1x, ._, ._ }, - } }, - }, .{ - .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .byte, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_b, .cmpeq, .dst0q, .src1q, ._, ._ }, - } }, - }, .{ - .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .word, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_w, .cmpeq, .dst0q, .src1q, ._, ._ }, - } }, - }, .{ - .required_features = .{ .mmx, null, null, null }, - .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, - .patterns = &.{ - .{ .src = .{ .to_mut_mm, .mem, .none } }, - .{ .src = .{ .mem, .to_mut_mm, .none }, .commute = .{ 0, 1 } }, - .{ .src = .{ .to_mut_mm, .to_mm, .none } }, - }, - .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ - .kind = .all, - .inverted = switch (cc) { - else => unreachable, - .e => false, - .ne => true, - }, - .scalar = .dword, - } } }}, - .each = .{ .once = &.{ - .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ }, - } }, - }, .{ .src_constraints = .{ .{ .bool_vec = .byte }, .{ .bool_vec = .byte }, .any }, .patterns = &.{ .{ .src = .{ .mut_mem, .imm8, .none } }, @@ -26526,6 +26348,366 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, }, } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .byte } }, + .{ .scalar_int = .{ .of = .xword, .is = .byte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .byte, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_b, .cmpeq, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .word } }, + .{ .scalar_int = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .word, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_w, .cmpeq, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .dword } }, + .{ .scalar_int = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .dword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .cmpeq, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .qword } }, + .{ .scalar_int = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .qword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_q, .cmpeq, .dst0x, .src0x, .src1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .byte } }, + .{ .scalar_int = .{ .of = .xword, .is = .byte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .byte, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_b, .cmpeq, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .word } }, + .{ .scalar_int = .{ .of = .xword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .word, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_w, .cmpeq, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .dword } }, + .{ .scalar_int = .{ .of = .xword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .dword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .cmpeq, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .xword, .is = .qword } }, + .{ .scalar_int = .{ .of = .xword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .qword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_q, .cmpeq, .dst0x, .src1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .mmx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .qword, .is = .byte } }, + .{ .scalar_int = .{ .of = .qword, .is = .byte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .byte, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_b, .cmpeq, .dst0q, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .mmx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .qword, .is = .word } }, + .{ .scalar_int = .{ .of = .qword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .word, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_w, .cmpeq, .dst0q, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .mmx, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .qword, .is = .dword } }, + .{ .scalar_int = .{ .of = .qword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_mut_mmx, .mem, .none } }, + .{ .src = .{ .mem, .to_mut_mmx, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_mut_mmx, .to_mmx, .none } }, + }, + .dst_temps = .{.{ .ref_mask = .{ .ref = .src0, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .dword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .cmpeq, .dst0q, .src1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .yword, .is = .byte } }, + .{ .scalar_int = .{ .of = .yword, .is = .byte } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .byte, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_b, .cmpeq, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .yword, .is = .word } }, + .{ .scalar_int = .{ .of = .yword, .is = .word } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .word, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_w, .cmpeq, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .yword, .is = .dword } }, + .{ .scalar_int = .{ .of = .yword, .is = .dword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .dword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .cmpeq, .dst0y, .src0y, .src1y, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ + .{ .scalar_int = .{ .of = .yword, .is = .qword } }, + .{ .scalar_int = .{ .of = .yword, .is = .qword } }, + .any, + }, + .patterns = &.{ + .{ .src = .{ .to_sse, .mem, .none } }, + .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } }, + .{ .src = .{ .to_sse, .to_sse, .none } }, + }, + .dst_temps = .{.{ .mut_rc_mask = .{ .ref = .src0, .rc = .sse, .info = .{ + .kind = .all, + .inverted = switch (cc) { + else => unreachable, + .e => false, + .ne => true, + }, + .scalar = .qword, + } } }}, + .each = .{ .once = &.{ + .{ ._, .vp_q, .cmpeq, .dst0y, .src0y, .src1y, ._ }, + } }, }, .{ .required_features = .{ .avx2, null, null, null }, .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any }, @@ -27511,7 +27693,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ }, .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ }, .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ }, - .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ @@ -27683,7 +27865,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ }, .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ }, .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ }, - .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ @@ -27852,8 +28034,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ }, .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ }, - .{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, - .{ ._, ._, .cmp, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .cmp, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ }, .{ ._, ._l, .sh, .tmp2q, .tmp1b, ._, ._ }, .{ ._, ._, .@"or", .dst0q, .tmp2q, ._, ._ }, @@ -27944,6 +28126,133 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ }, } }, + }, .{ + .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp4w, .memia(.src0w, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .cmp, .tmp4w, .memia(.src1w, .tmp0, .add_size), ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ }, + .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ }, + } }, + }, .{ + .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .memia(.src0d, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .cmp, .tmp4d, .memia(.src1d, .tmp0, .add_size), ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ }, + .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .to_mem, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"0:", ._, .xor, .tmp3d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .memia(.src0q, .tmp0, .add_size), ._, ._ }, + .{ ._, ._, .cmp, .tmp4q, .memia(.src1q, .tmp0, .add_size), ._, ._ }, + .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ }, + .{ ._, ._l, .sh, .tmp3p, .tmp1b, ._, ._ }, + .{ ._, ._, .@"or", .tmp2p, .tmp3p, ._, ._ }, + .{ ._, ._, .add, .tmp1d, .si(1), ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ }, + .{ ._, ._nz, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ }, + .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0p, .tmp3, .sub_ptr_size), .tmp2p, ._, ._ }, + .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ }, + .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp1d, .sia(-1, .none, .add_ptr_bit_size), ._, ._ }, + .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(6), ._, ._ }, + .{ ._, ._, .mov, .memsi(.dst0p, .@"8", .tmp1), .tmp2p, ._, ._ }, + } }, }, .{ .required_features = .{ .f16c, null, null, null }, .src_constraints = .{ @@ -48604,9 +48913,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { try ops[0].toPair(&len, cg); try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg); }, - .int_from_float, .int_from_float_optimized => |air_tag| if (use_old) try cg.airIntFromFloat(inst) else fallback: { + .int_from_float, .int_from_float_optimized => |air_tag| if (use_old) try cg.airIntFromFloat(inst) else { const ty_op = air_datas[@intFromEnum(inst)].ty_op; - if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airIntFromFloat(inst); var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}); var res: [1]Temp = undefined; cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{ @@ -48991,292 +49299,226 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_sse, .none, .none } }, - }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .each = .{ .once = &.{ - .{ ._, .v_, .cvttss2si, .dst0d, .src0d, ._, ._ }, - } }, - }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_sse, .none, .none } }, - }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .each = .{ .once = &.{ - .{ ._, ._, .cvttss2si, .dst0d, .src0d, ._, ._ }, - } }, - }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_sse, .none, .none } }, - }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .each = .{ .once = &.{ - .{ ._, .v_, .cvttss2si, .dst0q, .src0d, ._, ._ }, - } }, - }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_sse, .none, .none } }, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .each = .{ .once = &.{ - .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ }, - } }, - }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, - .patterns = &.{ - .{ .src = .{ .to_sse, .none, .none } }, - }, .extra_temps = .{ - .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .unused, + .unused, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, - .{ ._, .v_, .cvttss2si, .tmp2q, .src0d, ._, ._ }, - .{ ._, .v_ss, .sub, .tmp0x, .src0x, .lea(.tmp1d), ._ }, - .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ }, - .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ }, - .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ }, - .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ }, - .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, ._, .cvttss2si, .tmp1q, .src0d, ._, ._ }, - .{ ._, ._ss, .sub, .src0x, .lea(.tmp0d), ._, ._ }, - .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ }, - .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, - .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, - .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .xword }}, + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .xword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .i64, .kind = .{ .reg = .rax } }, - .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, - .{ .type = .i64, .kind = .{ .reg = .rdx } }, - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, .unused, .unused, }, .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_d, .mov, .tmp0d, .src0x, ._, ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ }, - .{ ._, .v_ps, .@"and", .src0x, .src0x, .lea(.tmp1x), ._ }, - .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, - .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, - .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, - .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ }, - .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ }, - .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ }, - .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ }, - .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ }, - .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, - .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .i64, .kind = .{ .reg = .rax } }, - .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, - .{ .type = .i64, .kind = .{ .reg = .rdx } }, - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, .unused, .unused, }, .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ }, - .{ ._, ._ps, .@"and", .src0x, .lea(.tmp1x), ._, ._ }, - .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, - .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, - .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, - .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ }, - .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ }, - .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ }, - .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ }, - .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ }, - .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, - .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, - .{ .type = .i64, .kind = .{ .reg = .rax } }, - .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, - .{ .type = .u32, .kind = .{ .reg = .ecx } }, - .{ .type = .i64, .kind = .{ .reg = .rdx } }, - .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .unused, + .unused, .unused, .unused, }, .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._ss, .mov, .tmp0x, .src0d, ._, ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, ._ps, .@"and", .tmp0x, .lea(.tmp1x), ._, ._ }, - .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, - .{ ._, ._d, .movsx, .tmp4q, .src0d, ._, ._ }, - .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ }, - .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ }, - .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ }, - .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ }, - .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ }, - .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ }, - .{ ._, ._, .lea, .tmp6p, .memd(.dst0, 16), ._, ._ }, - .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, - .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .dword }, .any, .any }, - .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, - .{ .type = .i64, .kind = .{ .reg = .rax } }, - .{ .type = .i64, .kind = .{ .reg = .rdx } }, - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, .unused, .unused, .unused, @@ -49285,48 +49527,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ }, - .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, - .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ }, - .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, - .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .word } }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_sse, .none, .none } }, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, .v_, .cvttsd2si, .dst0d, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_sse, .none, .none } }, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, ._, .cvttsd2si, .dst0d, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .byte }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .{ .type = .i16, .kind = .mem }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -49335,22 +49582,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, - .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .byte }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .{ .type = .i16, .kind = .mem }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -49359,24 +49610,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, - .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, @@ -49384,22 +49640,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, @@ -49407,44 +49670,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_sse, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .each = .{ .once = &.{ - .{ ._, .v_, .cvttsd2si, .dst0q, .src0q, ._, ._ }, - } }, - }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_sse, .none, .none } }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .unused, + .unused, + .unused, + .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .cvttsd2si, .dst0q, .src0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -49455,164 +49731,176 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_sse, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .rc = .sse } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, - .{ ._, .v_, .cvttsd2si, .tmp2q, .src0d, ._, ._ }, - .{ ._, .v_sd, .sub, .tmp0x, .src0x, .lea(.tmp1q), ._ }, - .{ ._, .v_, .cvttsd2si, .dst0q, .tmp0d, ._, ._ }, - .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ }, - .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ }, - .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ }, - .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp2d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_sse, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, ._, .cvttsd2si, .tmp1q, .src0d, ._, ._ }, - .{ ._, ._sd, .sub, .src0x, .lea(.tmp0q), ._, ._ }, - .{ ._, ._, .cvttsd2si, .dst0q, .src0d, ._, ._ }, - .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, - .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, - .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .x87, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, - .{ .type = .f64, .kind = .{ .reg = .st6 } }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .{ .type = .i64, .kind = .mem }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, - .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, - .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ }, - .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ }, - .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, - .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, - .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ }, - .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .xword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .xword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } }, .unused, .unused, .unused, @@ -49621,24 +49909,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .qword }, .any, .any }, - .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } }, .unused, .unused, .unused, @@ -49647,22 +49940,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .byte }}, + .required_features = .{ .@"64bit", .f16c, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_x87, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .{ .type = .i16, .kind = .mem }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .rc = .sse } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, .unused, .unused, .unused, @@ -49670,50 +49967,60 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, - .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp2q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .byte }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_x87, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .{ .type = .i16, .kind = .mem }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, - .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_x87, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, .unused, .unused, .unused, @@ -49721,23 +50028,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_x87, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, .unused, .unused, .unused, @@ -49745,23 +50058,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_x87, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, .unused, .unused, .unused, @@ -49769,215 +50088,249 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .x87, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_x87, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, - .{ .type = .f64, .kind = .{ .reg = .st6 } }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .{ .type = .i64, .kind = .mem }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .general_purpose }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, - .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, - .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ }, - .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ }, - .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, - .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, - .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, - .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ }, - .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .xword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .xword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .xword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .xword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .xword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .xword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ }, - .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, .unused, .unused, .unused, @@ -49985,27 +50338,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ }, .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, - .unused, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } }, .unused, .unused, .unused, @@ -50013,27 +50370,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ }, - .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, - .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, - .unused, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } }, .unused, .unused, .unused, @@ -50041,27 +50403,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ }, - .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, - .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, - .unused, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } }, .unused, .unused, .unused, @@ -50069,27 +50436,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, - .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, - .unused, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } }, .unused, .unused, .unused, @@ -50097,124 +50469,174 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ }, - .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, - .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, - .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .size = 16, .alignment = .@"16" }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, - .{ .type = .f80, .kind = .{ .frame = .call_frame } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, - .unused, - .unused, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } }, .unused, .unused, }, .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ }, - .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, - .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .dword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, - .unused, - .unused, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } }, .unused, .unused, }, - .dst_temps = .{.{ .reg = .eax }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttss2si, .dst0d, .src0d, ._, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .dword }}, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, - .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } }, - .unused, - .unused, - .unused, - .unused, - .unused, - .unused, - .unused, - .unused, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttss2si, .dst0d, .src0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, - .dst_temps = .{.{ .reg = .eax }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.{ .rc = .general_purpose }}, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, .v_, .cvttss2si, .dst0q, .src0d, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, - .dst_constraints = .{.{ .signed_int = .qword }}, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } }, - .unused, - .unused, - .unused, + .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .rax }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_, .cvttss2si, .tmp2q, .src0d, ._, ._ }, + .{ ._, .v_ss, .sub, .tmp0x, .src0x, .lea(.tmp1d), ._ }, + .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ }, + .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ }, + .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ }, + .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, - .dst_constraints = .{.{ .unsigned_int = .qword }}, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + .{ .src = .{ .to_mut_sse, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } }, - .unused, - .unused, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, .unused, .unused, .unused, @@ -50222,21 +50644,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .rax }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._, .cvttss2si, .tmp1q, .src0d, ._, ._ }, + .{ ._, ._ss, .sub, .src0x, .lea(.tmp0d), ._, ._ }, + .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, + .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, .dst_constraints = .{.{ .signed_int = .xword }}, .patterns = &.{ .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } }, .unused, .unused, .unused, @@ -50253,14 +50682,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, .dst_constraints = .{.{ .unsigned_int = .xword }}, .patterns = &.{ .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, .unused, .unused, .unused, @@ -50276,110 +50705,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, - .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, .unused, .unused, }, .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_d, .mov, .tmp0d, .src0x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ }, + .{ ._, .v_ps, .@"and", .src0x, .src0x, .lea(.tmp1x), ._ }, + .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ }, + .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .float = .xword }, .any, .any }, - .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, .unused, .unused, }, .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ }, + .{ ._, ._ps, .@"and", .src0x, .lea(.tmp1x), ._, ._ }, + .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, + .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ }, + .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ }, + .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, - } }) 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); - }, - .float_from_int => |air_tag| if (use_old) try cg.airFloatFromInt(inst) else fallback: { - const ty_op = air_datas[@intFromEnum(inst)].ty_op; - if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airFloatFromInt(inst); - 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 = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ss, .mov, .tmp0x, .src0d, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, ._ps, .@"and", .tmp0x, .lea(.tmp1x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._d, .movsx, .tmp4q, .src0d, ._, ._ }, + .{ ._, ._r, .sa, .tmp4q, .ui(63), ._, ._ }, + .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ }, + .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ }, + .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ }, + .{ ._, ._, .lea, .tmp6p, .memd(.dst0, 16), ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .dword }, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .u32, .kind = .{ .reg = .ecx } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ }, + .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, + .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ }, + .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, .unused, .unused, .unused, @@ -50388,24 +50870,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ }, } }, }, .{ - .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .ssse3, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, .unused, .unused, .unused, @@ -50414,64 +50895,106 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ }, } }, }, .{ - .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .ssse3, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .f16c, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .f16c, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, .unused, .unused, .unused, @@ -50480,97 +51003,192 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .f16c, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, - .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .f16c, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, - .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, - .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, - .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, - .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ }, - .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, - .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, - .{ .@"0:", .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .dil }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ }, - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .dil }, .none, .none } }, + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -50579,23 +51197,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ }, - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .di }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -50604,23 +51224,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ }, - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .di }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -50629,70 +51251,12586 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ }, - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.mem}, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttsd2si, .dst0d, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttsd2si, .dst0d, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .word }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttsd2si, .dst0q, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttsd2si, .dst0q, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_, .cvttsd2si, .tmp2q, .src0d, ._, ._ }, + .{ ._, .v_sd, .sub, .tmp0x, .src0x, .lea(.tmp1q), ._ }, + .{ ._, .v_, .cvttsd2si, .dst0q, .tmp0d, ._, ._ }, + .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ }, + .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ }, + .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._, .cvttsd2si, .tmp1q, .src0d, ._, ._ }, + .{ ._, ._sd, .sub, .src0x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .cvttsd2si, .dst0q, .src0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, + .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i64, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0q, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ }, + .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, + .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ }, + .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .qword }, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_int = .{ .of = .word, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .ssse3, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_int = .{ .of = .word, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_int = .{ .of = .dword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ }, + .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsia(.src0y, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ }, + .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .ssse3, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pshufb_cm_mem = .{ .from = .dword, .to = .byte } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .dword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ }, + .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ }, + .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i32, .kind = .mem }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i64, .kind = .mem }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .byte }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .i32, .kind = .mem }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .i64, .kind = .mem }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_or_exclusive_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .exact_unsigned_int = 64 }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_x87, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .i64, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .general_purpose }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, .f_, .ld, .src0t, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ }, + .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, + .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ }, + .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, + .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ }, + .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .tbyte }, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .size = 16, .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f80, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f80, .kind = .{ .frame = .call_frame } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, ._, .call, .tmp6d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp1p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_int = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .eax }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .dword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .eax }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } }, + .{ .type = .i32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } }, + .{ .type = .u32, .kind = .{ .reg = .eax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .rax }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .qword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .rax }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } }, + .{ .type = .i64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .signed_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .unsigned_int = .xword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg_pair = .{ .rax, .rdx } }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .i64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } }, + .{ .type = .u64, .kind = .{ .reg = .rax } }, + .{ .type = .u64, .kind = .{ .reg = .rdx } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ }, + .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .float = .xword }, .any, .any }, + .dst_constraints = .{.{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_8_elem_size), ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp5d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + } }) catch |err| switch (err) { + error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ + @tagName(air_tag), + ty_op.ty.toType().fmt(pt), + cg.typeOf(ty_op.operand).fmt(pt), + ops[0].tracking(cg), + }), + else => |e| return e, + }; + try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); + }, + .float_from_int => |air_tag| if (use_old) try cg.airFloatFromInt(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 = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .f16c, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .f16c, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .f16c, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, .dst_constraints = .{.{ .float = .word }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, + .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, + .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ }, + .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, + .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + .{ .@"0:", .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .dil }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .dil }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .di }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .di }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .word }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ }, + .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, .avx2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .f16c, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse4_1, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .word, .is = .word } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } }, + .{ .type = .f16, .kind = .{ .reg = .xmm0 } }, + .{ .type = .f32, .kind = .mem }, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ }, + .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .src0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, + .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, + .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, + .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ }, + .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, + .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, + .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, + .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ }, + .{ ._, ._ss, .add, .dst0x, .dst0d, ._, ._ }, + .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, + .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .dword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ }, + .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ }, + .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ }, + .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ }, + .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._ps, .cvtdq2, .dst0x, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ss, .cvtsi2, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } }, + .{ .type = .f32, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0d, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .src0d, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .fi_, .ld, .src0w, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i32, .kind = .mem }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .fi_, .ld, .src0d, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i64, .kind = .mem }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem }, + .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, .v_q, .mov, .tmp0x, .src0q, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .unpckldq, .tmp0x, .tmp0x, .lea(.tmp1x), ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_pd, .sub, .tmp0x, .tmp0x, .lea(.tmp1x), ._ }, + .{ ._, .v_pd, .unpckh, .dst0x, .tmp0x, .tmp0x, ._ }, + .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem }, + .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .sse }}, + .each = .{ .once = &.{ + .{ ._, ._q, .mov, .tmp0x, .src0q, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .unpckldq, .tmp0x, .lea(.tmp1x), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, + .{ ._, ._pd, .sub, .tmp0x, .lea(.tmp1x), ._, ._ }, + .{ ._, ._pd, .mova, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._pd, .unpckh, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .each = .{ .once = &.{ + .{ ._, .fi_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mut_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, + .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, + .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, + .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ }, + .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ }, + .{ ._, .f_, .add, .tmp1t, .tmp1t, ._, ._ }, + .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, + .{ .pseudo, .f_cstp, .in, ._, ._, ._, ._ }, + .{ .@"1:", ._, .mov, .dst0q, .src0q, ._, ._ }, + .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ }, + .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .qword }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) }, + .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ }, + .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .cvtdq2, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, ._pd, .cvtdq2, .dst0x, .src0q, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }}, + .each = .{ .once = &.{ + .{ ._, .v_pd, .cvtdq2, .dst0y, .src0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._sd, .cvtsi2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } }, + .{ .type = .f64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .fi_, .ld, .src0w, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i32, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, .fi_, .ld, .src0d, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_gpr, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .i64, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .rc = .x87 }}, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, + .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ }, + .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -50702,45 +63840,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.{ .rc = .x87 }}, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, .fi_, .ld, .src0q, ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, + .dst_constraints = .{.{ .float = .tbyte }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } }, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, - .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .dst_temps = .{.{ .rc = .x87 }}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, .fi_, .ld, .src0q, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ }, + .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ }, + .{ ._, .f_, .add, .leasi(.tmp0d, .@"4", .tmp1), ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .dst_constraints = .{.{ .float = .tbyte }}, .patterns = &.{ .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } }, .unused, .unused, .unused, @@ -50750,7 +63892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.{ .reg = .st0 }}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, @@ -50758,13 +63900,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .required_features = .{ .@"64bit", .sse, null, null }, .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .dst_constraints = .{.{ .float = .tbyte }}, .patterns = &.{ .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } }, .unused, .unused, .unused, @@ -50774,7 +63916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.{ .reg = .st0 }}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, @@ -50782,7 +63924,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .required_features = .{ .@"64bit", .sse, null, null }, .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .dst_constraints = .{.{ .float = .tbyte }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, @@ -50790,7 +63932,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .extra_temps = .{ .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } }, .unused, .unused, .unused, @@ -50798,7 +63940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.{ .reg = .st0 }}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, @@ -50808,7 +63950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .{ .required_features = .{ .@"64bit", .sse, null, null }, .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .word }}, + .dst_constraints = .{.{ .float = .tbyte }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, @@ -50816,7 +63958,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .extra_temps = .{ .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } }, .unused, .unused, .unused, @@ -50824,7 +63966,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.{ .reg = .st0 }}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, @@ -50832,166 +63974,267 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .mem }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ }, + .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -51000,74 +64243,85 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, - .each = .{ .once = &.{ - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ }, - } }, - }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .src0d, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -51076,73 +64330,85 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, - .each = .{ .once = &.{ - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, - } }, - }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .unused, + .unused, + .unused, + .unused, + .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .x87, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, @@ -51151,165 +64417,215 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true }, .each = .{ .once = &.{ - .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, - .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, - .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, - .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, - .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, - .{ ._, .v_ss, .add, .dst0x, .dst0x, .dst0d, ._ }, - .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, - .{ .@"1:", .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, - .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, - .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, - .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, - .{ ._, ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ }, - .{ ._, ._ss, .add, .dst0x, .dst0d, ._, ._ }, - .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, - .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } }, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .dword }}, + .required_features = .{ .@"64bit", .x87, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } }, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ }, + .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, + .required_features = .{ .sse, null, null, null }, .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_gpr, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, .unused, .unused, .unused, @@ -51318,23 +64634,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_gpr, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, .unused, .unused, .unused, @@ -51343,23 +64660,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_gpr, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, .unused, .unused, .unused, @@ -51368,23 +64686,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ .{ .src = .{ .mem, .none, .none } }, .{ .src = .{ .to_gpr, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, .unused, .unused, .unused, @@ -51393,22 +64712,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, + .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, .unused, .unused, .unused, @@ -51418,22 +64737,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, .unused, .unused, .unused, @@ -51443,22 +64761,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } }, .unused, .unused, .unused, @@ -51468,22 +64785,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } }, .unused, .unused, .unused, @@ -51493,50 +64809,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0d, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .src0d, ._, ._ }, + .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } }, .unused, .unused, .unused, @@ -51544,284 +64881,424 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse2, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .float = .xword }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } }, + .unused, .unused, .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.{ .reg = .xmm0 }}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i16, .kind = .mem }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .unused, .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .unused, .unused, .unused, .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i16, .kind = .mem }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, .unused, .unused, + }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0w, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .avx, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i32, .kind = .mem }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0d, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .x87, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse2, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i64, .kind = .mem }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, - .dst_temps = .{.{ .rc = .sse }}, - .each = .{ .once = &.{ - .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ }, - .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0q, ._ }, - } }, - }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, - .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .cvtsi2, .dst0x, .src0q, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .avx, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, .slow_incdec, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem }, - .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem }, - .unused, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .v_q, .mov, .tmp0x, .src0q, ._, ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, .vp_, .unpckldq, .tmp0x, .tmp0x, .lea(.tmp1x), ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, - .{ ._, .v_pd, .sub, .tmp0x, .tmp0x, .lea(.tmp1x), ._ }, - .{ ._, .v_pd, .unpckh, .dst0x, .tmp0x, .tmp0x, ._ }, - .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse2, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem }, - .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem }, - .unused, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .sse }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._q, .mov, .tmp0x, .src0q, ._, ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, .p_, .unpckldq, .tmp0x, .lea(.tmp1x), ._, ._ }, - .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ }, - .{ ._, ._pd, .sub, .tmp0x, .lea(.tmp1x), ._, ._ }, - .{ ._, ._pd, .mova, .dst0x, .tmp0x, ._, ._ }, - .{ ._, ._pd, .unpckh, .dst0x, .dst0x, ._, ._ }, - .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ }, + .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, @@ -51829,22 +65306,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .x87, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .to_mut_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, - .{ .type = .f64, .kind = .{ .reg = .st7 } }, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, @@ -51852,723 +65335,850 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, }, .dst_temps = .{.mem}, - .clobbers = .{ .eflags = true }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, - .{ ._, ._ns, .j, .@"1f", ._, ._, ._ }, - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ }, - .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ }, - .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ }, - .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ }, - .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ }, - .{ ._, .f_, .add, .tmp1t, .tmp1t, ._, ._ }, - .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, - .{ .pseudo, .f_cstp, .in, ._, ._, ._, ._ }, - .{ .@"1:", ._, .mov, .dst0q, .src0q, ._, ._ }, - .{ ._, .fi_, .ld, .dst0q, ._, ._, ._ }, - .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .qword }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i16, .kind = .mem }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i16, .kind = .mem }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0w, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .avx, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i32, .kind = .mem }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .sse2, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0d, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .x87, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .sse, null, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, - .{ .type = .i64, .kind = .mem }, - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .reg = .edi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, - .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ }, - .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .f80, .kind = .{ .reg = .st7 } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0q, ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .x87, null, null, null }, - .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, + .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .u1, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .rc = .x87 }}, - .clobbers = .{ .eflags = true }, + .dst_temps = .{.mem}, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, .fi_, .ld, .src0q, ._, ._, ._ }, - .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ }, - .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ }, - .{ ._, .f_, .add, .leasi(.tmp0d, .@"4", .tmp1), ._, ._, ._ }, - .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .st0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .st0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .st0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .tbyte }}, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .reg = .rdi } }, - .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } }, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .st0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i32, .kind = .{ .reg = .edi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u32, .kind = .{ .reg = .edi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ }, - .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .i32, .kind = .{ .reg = .edi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .i64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .mem, .none, .none } }, - .{ .src = .{ .to_gpr, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .u32, .kind = .{ .reg = .edi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ }, - .{ ._, ._, .call, .tmp1d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .signed_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .sse, null, null, null }, - .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .sse, null, null }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .edi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } }, - .unused, - .unused, - .unused, - .unused, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .reg = .rdi } }, + .{ .type = .u64, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ }, + .{ ._, ._, .call, .tmp3d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ }, + .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } }, - .unused, - .unused, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } }, - .unused, - .unused, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .signed_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } }, - .unused, - .unused, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .avx, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ - .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } }, + .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } }, - .unused, - .unused, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .usize, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ - .{ ._, ._, .call, .tmp0d, ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ - .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .required_features = .{ .@"64bit", .sse2, null, null }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, - .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } }, - .unused, - .unused, - .unused, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } }, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, }, .{ .required_features = .{ .@"64bit", .sse, null, null }, - .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, - .dst_constraints = .{.{ .float = .xword }}, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .dst_constraints = .{.{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }}, .patterns = &.{ .{ .src = .{ .to_mem, .none, .none } }, }, .call_frame = .{ .alignment = .@"16" }, .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, .{ .type = .usize, .kind = .{ .reg = .rdi } }, .{ .type = .usize, .kind = .{ .reg = .rsi } }, .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } }, - .unused, - .unused, - .unused, + .{ .type = .f128, .kind = .{ .reg = .xmm0 } }, .unused, .unused, .unused, }, - .dst_temps = .{.{ .reg = .xmm0 }}, + .dst_temps = .{.mem}, .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ }, - .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_8_size), ._, ._ }, - .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ }, + .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_8_elem_size), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ }, + .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, } }, } }) catch |err| switch (err) { error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ @@ -66427,14 +80037,18 @@ fn moveStrategy(self: *CodeGen, ty: Type, class: Register.Class, aligned: bool) .insert = .{ .p_w, .insr }, .extract = .{ .p_w, .extr }, } }, - 3...4 => return .{ .move = if (self.hasFeature(.avx)) - .{ .v_d, .mov } + 3...4 => return .{ .move = .{ if (self.hasFeature(.avx)) + .v_d + else if (self.hasFeature(.sse2)) + ._d else - .{ ._d, .mov } }, + ._ss, .mov } }, 5...8 => return .{ .move = if (self.hasFeature(.avx)) .{ .v_q, .mov } + else if (self.hasFeature(.sse2)) + .{ ._q, .mov } else - .{ ._q, .mov } }, + .{ ._ps, .movl } }, 9...16 => return .{ .move = if (self.hasFeature(.avx)) .{ if (aligned) .v_dqa else .v_dqu, .mov } else if (self.hasFeature(.sse2)) @@ -66494,10 +80108,40 @@ fn moveStrategy(self: *CodeGen, ty: Type, class: Register.Class, aligned: bool) }, .vector => switch (ty.childType(zcu).zigTypeTag(zcu)) { .bool => switch (ty.vectorLen(zcu)) { + 1...8 => if (self.hasFeature(.avx)) return .{ .vex_insert_extract = .{ + .insert = .{ .vp_b, .insr }, + .extract = .{ .vp_b, .extr }, + } } else if (self.hasFeature(.sse4_2)) return .{ .insert_extract = .{ + .insert = .{ .p_b, .insr }, + .extract = .{ .p_b, .extr }, + } }, + 9...16 => return if (self.hasFeature(.avx)) .{ .vex_insert_extract = .{ + .insert = .{ .vp_w, .insr }, + .extract = .{ .vp_w, .extr }, + } } else .{ .insert_extract = .{ + .insert = .{ .p_w, .insr }, + .extract = .{ .p_w, .extr }, + } }, + 17...32 => return .{ .move = .{ if (self.hasFeature(.avx)) + .v_d + else if (self.hasFeature(.sse2)) + ._d + else + ._ss, .mov } }, 33...64 => return .{ .move = if (self.hasFeature(.avx)) .{ .v_q, .mov } + else if (self.hasFeature(.sse2)) + .{ ._q, .mov } else - .{ ._q, .mov } }, + .{ ._ps, .movl } }, + 65...128 => return .{ .move = if (self.hasFeature(.avx)) + .{ if (aligned) .v_dqa else .v_dqu, .mov } + else if (self.hasFeature(.sse2)) + .{ if (aligned) ._dqa else ._dqu, .mov } + else + .{ ._ps, if (aligned) .mova else .movu } }, + 129...256 => if (self.hasFeature(.avx)) + return .{ .move = .{ if (aligned) .v_dqa else .v_dqu, .mov } }, else => {}, }, .int => switch (ty.childType(zcu).intInfo(zcu).bits) { @@ -70347,6 +83991,11 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { if (mask_len % 64 <= 32) acc_reg.to32() else acc_reg.to64(), .u((@as(u64, std.math.maxInt(u64)) >> @truncate(-%mask_len))), ); + const operand_mem_mcv: MCValue = if (!operand_mcv.isBase()) operand_mem: { + const frame_index = try self.allocFrameIndex(.initSpill(operand_ty, zcu)); + try self.genSetMem(.{ .frame = frame_index }, 0, operand_ty, operand_mcv, .{}); + break :operand_mem .{ .load_frame = .{ .index = frame_index } }; + } else operand_mcv; var first = true; while (true) : (limb_offset -= 8) { try self.asmRegisterMemory( @@ -70356,7 +84005,7 @@ fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void { else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}), } }, acc_reg.to64(), - try operand_mcv.mem(self, .{ + try operand_mem_mcv.mem(self, .{ .size = .qword, .disp = limb_offset, }), @@ -74704,6 +88353,7 @@ const Select = struct { f64_0x1p52_0x1p84_mem, u32_0x1p52_hi_0x1p84_hi_0_0_mem, f32_0_0x1p64_mem, + pshufb_cm_mem: struct { from: Memory.Size, to: Memory.Size }, frame: FrameIndex, symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 }, @@ -74875,6 +88525,23 @@ const Select = struct { (try pt.floatValue(.f32, @as(f32, 0x1p64))).toIntern(), } }, } }))), true }, + .pshufb_cm_mem => |info| { + var bytes: [16]u8 = @splat(1 << 7); + const from_bytes: u32 = @intCast(@divExact(info.from.bitSize(cg.target), 8)); + const to_bytes: u32 = @intCast(@divExact(info.to.bitSize(cg.target), 8)); + var from_index: u32 = 0; + var to_index: u32 = 0; + while (from_index < bytes.len) { + for (0..to_bytes) |byte_off| bytes[to_index + byte_off] = @intCast(from_index + byte_off); + from_index += from_bytes; + to_index += to_bytes; + } + const zcu = pt.zcu; + return .{ try cg.tempMemFromValue(.fromInterned(try pt.intern(.{ .aggregate = .{ + .ty = (try pt.vectorType(.{ .len = bytes.len, .child = .u8_type })).toIntern(), + .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, pt.tid, &bytes, .maybe_embedded_nulls) }, + } }))), 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| @@ -74938,6 +88605,7 @@ const Select = struct { elem_limbs, elem_size, src0_elem_size, + dst0_elem_size, src0_elem_size_times_src1, log2_src0_elem_size, smin, @@ -74977,6 +88645,7 @@ const Select = struct { const add_len: Adjust = .{ .sign = .pos, .lhs = .len, .op = .mul, .rhs = .@"1" }; const sub_len: Adjust = .{ .sign = .neg, .lhs = .len, .op = .mul, .rhs = .@"1" }; const add_elem_size_div_8: Adjust = .{ .sign = .pos, .lhs = .elem_size, .op = .div, .rhs = .@"8" }; + const add_8_elem_size: Adjust = .{ .sign = .pos, .lhs = .elem_size, .op = .mul, .rhs = .@"8" }; const add_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"1" }; const add_2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"2" }; const add_4_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size, .op = .mul, .rhs = .@"4" }; @@ -74986,6 +88655,7 @@ const Select = struct { const add_src0_elem_size_times_src1: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" }; const sub_src0_elem_size_times_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_times_src1, .op = .mul, .rhs = .@"1" }; const add_log2_src0_elem_size: Adjust = .{ .sign = .pos, .lhs = .log2_src0_elem_size, .op = .mul, .rhs = .@"1" }; + const add_dst0_elem_size: Adjust = .{ .sign = .pos, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" }; const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" }; const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" }; const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" }; @@ -75391,6 +89061,13 @@ const Select = struct { .index = .{ .ref = index, .scale = scale }, }; } + fn leasia(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust) Select.Operand { + return .{ + .flags = .{ .tag = .lea, .adjust = adjust }, + .base = base, + .index = .{ .ref = index, .scale = scale }, + }; + } fn leasid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand { return .{ .flags = .{ .tag = .lea }, @@ -75522,6 +89199,7 @@ const Select = struct { )), .elem_size => @intCast(op.base.ref.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), .src0_elem_size => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), + .dst0_elem_size => @intCast(Select.Operand.Ref.dst0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu)), .src0_elem_size_times_src1 => @intCast(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu) * Select.Operand.Ref.src1.valueOf(s).immediate), .log2_src0_elem_size => @intCast(std.math.log2(Select.Operand.Ref.src0.typeOf(s).elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu))), diff --git a/src/target.zig b/src/target.zig index 29387f0cd550..2496c4b07faa 100644 --- a/src/target.zig +++ b/src/target.zig @@ -746,6 +746,7 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt else => true, }, .all_vector_instructions => switch (backend) { + .stage2_x86_64 => true, else => false, }, }; diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index a90519379e39..bc6a314dfc44 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -2451,6 +2451,7 @@ test "@ptrFromInt on vector" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; const S = struct { fn doTheTest() !void { @@ -2520,6 +2521,7 @@ test "@intFromFloat on vector" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; const S = struct { fn doTheTest() !void { @@ -2540,6 +2542,7 @@ test "@intFromBool on vector" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; const S = struct { fn doTheTest() !void { diff --git a/test/behavior/x86_64/math.zig b/test/behavior/x86_64/math.zig index 3753a3cc4ca4..ebc9ca569fbd 100644 --- a/test/behavior/x86_64/math.zig +++ b/test/behavior/x86_64/math.zig @@ -10802,6 +10802,5340 @@ fn cast(comptime op: anytype, comptime opts: struct { compare: Compare = .relaxe try testArgs(f128, u256, imax(u256) - 1); try testArgs(f128, u256, imax(u256)); } + fn testIntVectorsFromFloatVectors() !void { + @setEvalBranchQuota(2_500); + + try testArgs(@Vector(1, i8), @Vector(1, f16), .{ + -0x0.8p8, + }); + try testArgs(@Vector(2, i8), @Vector(2, f16), .{ + next(f16, -0x0.8p8, -0.0), next(f16, next(f16, -0x0.8p8, -0.0), -0.0), + }); + try testArgs(@Vector(4, i8), @Vector(4, f16), .{ + -1e2, -1e1, -1e0, -1e-1, + }); + try testArgs(@Vector(8, i8), @Vector(8, f16), .{ + -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, 1e-5, 1e-4, + }); + try testArgs(@Vector(16, i8), @Vector(16, f16), .{ + 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, next(f16, next(f16, 0x0.8p8, 0.0), 0.0), next(f16, 0x0.8p8, 0.0), + -2e1, -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, + }); + try testArgs(@Vector(32, i8), @Vector(32, f16), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, -3e1, -3e0, + -3e-1, -3e-2, -3e-3, -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, -4e1, -4e0, -4e-1, -4e-2, + -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + }); + try testArgs(@Vector(64, i8), @Vector(64, f16), .{ + 4e0, 4e1, -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, + -5e-5, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, + -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, -6e-5, 6e-5, + 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, -7e1, -7e0, + -7e-1, -7e-2, -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, + 7e-2, 7e-1, 7e0, 7e1, -8e1, -8e0, -8e-1, -8e-2, + -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, + 8e0, 8e1, -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, + }); + try testArgs(@Vector(128, i8), @Vector(128, f16), .{ + -9e-5, 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, + -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, -11e-5, 11e-5, + 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, -12e1, -12e0, + -12e-1, -12e-2, -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, + 12e-2, 12e-1, 12e0, 12e1, -13e0, -13e-1, -13e-2, -13e-3, + -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + -14e0, -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, + 14e-3, 14e-2, 14e-1, 14e0, -15e0, -15e-1, -15e-2, -15e-3, + -15e-4, -15e-5, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + -16e0, -16e-1, -16e-2, -16e-3, -16e-4, -16e-5, 16e-5, 16e-4, + 16e-3, 16e-2, 16e-1, 16e0, -17e0, -17e-1, -17e-2, -17e-3, + -17e-4, -17e-5, 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, + -18e0, -18e-1, -18e-2, -18e-3, -18e-4, -18e-5, 18e-5, 18e-4, + 18e-3, 18e-2, 18e-1, 18e0, -19e0, -19e-1, -19e-2, -19e-3, + -19e-4, -19e-5, 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, + -21e0, -21e-1, -21e-2, -21e-3, -21e-4, -21e-5, 21e-5, 21e-4, + }); + + try testArgs(@Vector(1, u8), @Vector(1, f16), .{ + -0.0, + }); + try testArgs(@Vector(2, u8), @Vector(2, f16), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u8), @Vector(4, f16), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u8), @Vector(8, f16), .{ + 1e0, 1e1, 1e2, next(f16, next(f16, 0x1p8, 0.0), 0.0), next(f16, 0x1p8, 0.0), 2e-5, 2e-4, 2e-3, + }); + try testArgs(@Vector(16, u8), @Vector(16, f16), .{ + 2e-2, 2e-1, 2e0, 2e1, 2e2, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, 4e-5, 4e-4, 4e-3, 4e-2, + }); + try testArgs(@Vector(32, u8), @Vector(32, f16), .{ + 4e-1, 4e0, 4e1, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, + 5e0, 5e1, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, + 6e1, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, 7e0, 7e1, + 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 9e-5, + }); + try testArgs(@Vector(64, u8), @Vector(64, f16), .{ + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 11e-5, 11e-4, + 11e-3, 11e-2, 11e-1, 11e0, 11e1, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + 15e1, 16e-5, 16e-4, 16e-3, 16e-2, 16e-1, 16e0, 16e1, + 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, 17e1, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 19e-5, 19e-4, + 19e-3, 19e-2, 19e-1, 19e0, 19e1, 21e-5, 21e-4, 21e-3, + }); + try testArgs(@Vector(128, u8), @Vector(128, f16), .{ + 21e-2, 21e-1, 21e0, 21e1, 22e-5, 22e-4, 22e-3, 22e-2, + 22e-1, 22e0, 22e1, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 24e-5, 24e-4, 24e-3, 24e-2, 24e-1, 24e0, + 24e1, 25e-5, 25e-4, 25e-3, 25e-2, 25e-1, 25e0, 25e1, + 26e-5, 26e-4, 26e-3, 26e-2, 26e-1, 26e0, 27e-5, 27e-4, + 27e-3, 27e-2, 27e-1, 27e0, 28e-5, 28e-4, 28e-3, 28e-2, + 28e-1, 28e0, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, + 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, 32e-5, 32e-4, + 32e-3, 32e-2, 32e-1, 32e0, 33e-5, 33e-4, 33e-3, 33e-2, + 33e-1, 33e0, 34e-5, 34e-4, 34e-3, 34e-2, 34e-1, 34e0, + 35e-5, 35e-4, 35e-3, 35e-2, 35e-1, 35e0, 36e-5, 36e-4, + 36e-3, 36e-2, 36e-1, 36e0, 37e-5, 37e-4, 37e-3, 37e-2, + 37e-1, 37e0, 38e-5, 38e-4, 38e-3, 38e-2, 38e-1, 38e0, + 39e-5, 39e-4, 39e-3, 39e-2, 39e-1, 39e0, 41e-5, 41e-4, + 41e-3, 41e-2, 41e-1, 41e0, 42e-5, 42e-4, 42e-3, 42e-2, + 42e-1, 42e0, 43e-5, 43e-4, 43e-3, 43e-2, 43e-1, 43e0, + }); + + try testArgs(@Vector(1, i16), @Vector(1, f16), .{ + -0x0.8p16, + }); + try testArgs(@Vector(2, i16), @Vector(2, f16), .{ + next(f16, -0x0.8p16, -0.0), next(f16, next(f16, -0x0.8p16, -0.0), -0.0), + }); + try testArgs(@Vector(4, i16), @Vector(4, f16), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i16), @Vector(8, f16), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i16), @Vector(16, f16), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f16, next(f16, 0x0.8p16, 0.0), 0.0), next(f16, 0x0.8p16, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i16), @Vector(32, f16), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i16), @Vector(64, f16), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i16), @Vector(128, f16), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u16), @Vector(1, f16), .{ + -0.0, + }); + try testArgs(@Vector(2, u16), @Vector(2, f16), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u16), @Vector(4, f16), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u16), @Vector(8, f16), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f16, next(f16, 0x1p16, 0.0), 0.0), next(f16, 0x1p16, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u16), @Vector(16, f16), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u16), @Vector(32, f16), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u16), @Vector(64, f16), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u16), @Vector(128, f16), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i32), @Vector(1, f16), .{ + -fmax(f16), + }); + try testArgs(@Vector(2, i32), @Vector(2, f16), .{ + next(f16, -fmax(f16), -0.0), next(f16, next(f16, -fmax(f16), -0.0), -0.0), + }); + try testArgs(@Vector(4, i32), @Vector(4, f16), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i32), @Vector(8, f16), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i32), @Vector(16, f16), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i32), @Vector(32, f16), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i32), @Vector(64, f16), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i32), @Vector(128, f16), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u32), @Vector(1, f16), .{ + -0.0, + }); + try testArgs(@Vector(2, u32), @Vector(2, f16), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u32), @Vector(4, f16), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u32), @Vector(8, f16), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), 2e-5, + }); + try testArgs(@Vector(16, u32), @Vector(16, f16), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u32), @Vector(32, f16), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u32), @Vector(64, f16), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u32), @Vector(128, f16), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i64), @Vector(1, f16), .{ + -fmax(f16), + }); + try testArgs(@Vector(2, i64), @Vector(2, f16), .{ + next(f16, -fmax(f16), -0.0), next(f16, next(f16, -fmax(f16), -0.0), -0.0), + }); + try testArgs(@Vector(4, i64), @Vector(4, f16), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i64), @Vector(8, f16), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i64), @Vector(16, f16), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i64), @Vector(32, f16), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i64), @Vector(64, f16), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i64), @Vector(128, f16), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u64), @Vector(1, f16), .{ + -0.0, + }); + try testArgs(@Vector(2, u64), @Vector(2, f16), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u64), @Vector(4, f16), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u64), @Vector(8, f16), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), 2e-5, + }); + try testArgs(@Vector(16, u64), @Vector(16, f16), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u64), @Vector(32, f16), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u64), @Vector(64, f16), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u64), @Vector(128, f16), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i128), @Vector(1, f16), .{ + -fmax(f16), + }); + try testArgs(@Vector(2, i128), @Vector(2, f16), .{ + next(f16, -fmax(f16), -0.0), next(f16, next(f16, -fmax(f16), -0.0), -0.0), + }); + try testArgs(@Vector(4, i128), @Vector(4, f16), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i128), @Vector(8, f16), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i128), @Vector(16, f16), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i128), @Vector(32, f16), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i128), @Vector(64, f16), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u128), @Vector(1, f16), .{ + -0.0, + }); + try testArgs(@Vector(2, u128), @Vector(2, f16), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u128), @Vector(4, f16), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u128), @Vector(8, f16), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), 2e-5, + }); + try testArgs(@Vector(16, u128), @Vector(16, f16), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u128), @Vector(32, f16), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u128), @Vector(64, f16), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i256), @Vector(1, f16), .{ + -fmax(f16), + }); + try testArgs(@Vector(2, i256), @Vector(2, f16), .{ + next(f16, -fmax(f16), -0.0), next(f16, next(f16, -fmax(f16), -0.0), -0.0), + }); + try testArgs(@Vector(4, i256), @Vector(4, f16), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i256), @Vector(8, f16), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i256), @Vector(16, f16), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i256), @Vector(32, f16), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i256), @Vector(64, f16), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u256), @Vector(1, f16), .{ + -0.0, + }); + try testArgs(@Vector(2, u256), @Vector(2, f16), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u256), @Vector(4, f16), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u256), @Vector(8, f16), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f16, next(f16, fmax(f16), 0.0), 0.0), next(f16, fmax(f16), 0.0), 2e-5, + }); + try testArgs(@Vector(16, u256), @Vector(16, f16), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u256), @Vector(32, f16), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u256), @Vector(64, f16), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i8), @Vector(1, f32), .{ + -0x0.8p8, + }); + try testArgs(@Vector(2, i8), @Vector(2, f32), .{ + next(f32, -0x0.8p8, -0.0), next(f32, next(f32, -0x0.8p8, -0.0), -0.0), + }); + try testArgs(@Vector(4, i8), @Vector(4, f32), .{ + -1e2, -1e1, -1e0, -1e-1, + }); + try testArgs(@Vector(8, i8), @Vector(8, f32), .{ + -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, 1e-5, 1e-4, + }); + try testArgs(@Vector(16, i8), @Vector(16, f32), .{ + 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, next(f32, next(f32, 0x0.8p8, 0.0), 0.0), next(f32, 0x0.8p8, 0.0), + -2e1, -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, + }); + try testArgs(@Vector(32, i8), @Vector(32, f32), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, -3e1, -3e0, + -3e-1, -3e-2, -3e-3, -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, -4e1, -4e0, -4e-1, -4e-2, + -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + }); + try testArgs(@Vector(64, i8), @Vector(64, f32), .{ + 4e0, 4e1, -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, + -5e-5, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, + -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, -6e-5, 6e-5, + 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, -7e1, -7e0, + -7e-1, -7e-2, -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, + 7e-2, 7e-1, 7e0, 7e1, -8e1, -8e0, -8e-1, -8e-2, + -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, + 8e0, 8e1, -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, + }); + try testArgs(@Vector(128, i8), @Vector(128, f32), .{ + -9e-5, 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, + -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, -11e-5, 11e-5, + 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, -12e1, -12e0, + -12e-1, -12e-2, -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, + 12e-2, 12e-1, 12e0, 12e1, -13e0, -13e-1, -13e-2, -13e-3, + -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + -14e0, -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, + 14e-3, 14e-2, 14e-1, 14e0, -15e0, -15e-1, -15e-2, -15e-3, + -15e-4, -15e-5, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + -16e0, -16e-1, -16e-2, -16e-3, -16e-4, -16e-5, 16e-5, 16e-4, + 16e-3, 16e-2, 16e-1, 16e0, -17e0, -17e-1, -17e-2, -17e-3, + -17e-4, -17e-5, 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, + -18e0, -18e-1, -18e-2, -18e-3, -18e-4, -18e-5, 18e-5, 18e-4, + 18e-3, 18e-2, 18e-1, 18e0, -19e0, -19e-1, -19e-2, -19e-3, + -19e-4, -19e-5, 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, + -21e0, -21e-1, -21e-2, -21e-3, -21e-4, -21e-5, 21e-5, 21e-4, + }); + + try testArgs(@Vector(1, u8), @Vector(1, f32), .{ + -0.0, + }); + try testArgs(@Vector(2, u8), @Vector(2, f32), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u8), @Vector(4, f32), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u8), @Vector(8, f32), .{ + 1e0, 1e1, 1e2, next(f32, next(f32, 0x1p8, 0.0), 0.0), next(f32, 0x1p8, 0.0), 2e-5, 2e-4, 2e-3, + }); + try testArgs(@Vector(16, u8), @Vector(16, f32), .{ + 2e-2, 2e-1, 2e0, 2e1, 2e2, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, 4e-5, 4e-4, 4e-3, 4e-2, + }); + try testArgs(@Vector(32, u8), @Vector(32, f32), .{ + 4e-1, 4e0, 4e1, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, + 5e0, 5e1, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, + 6e1, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, 7e0, 7e1, + 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 9e-5, + }); + try testArgs(@Vector(64, u8), @Vector(64, f32), .{ + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 11e-5, 11e-4, + 11e-3, 11e-2, 11e-1, 11e0, 11e1, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + 15e1, 16e-5, 16e-4, 16e-3, 16e-2, 16e-1, 16e0, 16e1, + 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, 17e1, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 19e-5, 19e-4, + 19e-3, 19e-2, 19e-1, 19e0, 19e1, 21e-5, 21e-4, 21e-3, + }); + try testArgs(@Vector(128, u8), @Vector(128, f32), .{ + 21e-2, 21e-1, 21e0, 21e1, 22e-5, 22e-4, 22e-3, 22e-2, + 22e-1, 22e0, 22e1, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 24e-5, 24e-4, 24e-3, 24e-2, 24e-1, 24e0, + 24e1, 25e-5, 25e-4, 25e-3, 25e-2, 25e-1, 25e0, 25e1, + 26e-5, 26e-4, 26e-3, 26e-2, 26e-1, 26e0, 27e-5, 27e-4, + 27e-3, 27e-2, 27e-1, 27e0, 28e-5, 28e-4, 28e-3, 28e-2, + 28e-1, 28e0, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, + 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, 32e-5, 32e-4, + 32e-3, 32e-2, 32e-1, 32e0, 33e-5, 33e-4, 33e-3, 33e-2, + 33e-1, 33e0, 34e-5, 34e-4, 34e-3, 34e-2, 34e-1, 34e0, + 35e-5, 35e-4, 35e-3, 35e-2, 35e-1, 35e0, 36e-5, 36e-4, + 36e-3, 36e-2, 36e-1, 36e0, 37e-5, 37e-4, 37e-3, 37e-2, + 37e-1, 37e0, 38e-5, 38e-4, 38e-3, 38e-2, 38e-1, 38e0, + 39e-5, 39e-4, 39e-3, 39e-2, 39e-1, 39e0, 41e-5, 41e-4, + 41e-3, 41e-2, 41e-1, 41e0, 42e-5, 42e-4, 42e-3, 42e-2, + 42e-1, 42e0, 43e-5, 43e-4, 43e-3, 43e-2, 43e-1, 43e0, + }); + + try testArgs(@Vector(1, i16), @Vector(1, f32), .{ + -0x0.8p16, + }); + try testArgs(@Vector(2, i16), @Vector(2, f32), .{ + next(f32, -0x0.8p16, -0.0), next(f32, next(f32, -0x0.8p16, -0.0), -0.0), + }); + try testArgs(@Vector(4, i16), @Vector(4, f32), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i16), @Vector(8, f32), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i16), @Vector(16, f32), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f32, next(f32, 0x0.8p16, 0.0), 0.0), next(f32, 0x0.8p16, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i16), @Vector(32, f32), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i16), @Vector(64, f32), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i16), @Vector(128, f32), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u16), @Vector(1, f32), .{ + -0.0, + }); + try testArgs(@Vector(2, u16), @Vector(2, f32), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u16), @Vector(4, f32), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u16), @Vector(8, f32), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f32, next(f32, 0x1p16, 0.0), 0.0), next(f32, 0x1p16, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u16), @Vector(16, f32), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u16), @Vector(32, f32), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u16), @Vector(64, f32), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u16), @Vector(128, f32), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i32), @Vector(1, f32), .{ + -0x0.8p32, + }); + try testArgs(@Vector(2, i32), @Vector(2, f32), .{ + next(f32, -0x0.8p32, -0.0), next(f32, next(f32, -0x0.8p32, -0.0), -0.0), + }); + try testArgs(@Vector(4, i32), @Vector(4, f32), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i32), @Vector(8, f32), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i32), @Vector(16, f32), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f32, next(f32, 0x0.8p32, 0.0), 0.0), next(f32, 0x0.8p32, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i32), @Vector(32, f32), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i32), @Vector(64, f32), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i32), @Vector(128, f32), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u32), @Vector(1, f32), .{ + -0.0, + }); + try testArgs(@Vector(2, u32), @Vector(2, f32), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u32), @Vector(4, f32), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u32), @Vector(8, f32), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f32, next(f32, 0x1p32, 0.0), 0.0), next(f32, 0x1p32, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u32), @Vector(16, f32), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u32), @Vector(32, f32), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u32), @Vector(64, f32), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u32), @Vector(128, f32), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i64), @Vector(1, f32), .{ + -0x0.8p64, + }); + try testArgs(@Vector(2, i64), @Vector(2, f32), .{ + next(f32, -0x0.8p64, -0.0), next(f32, next(f32, -0x0.8p64, -0.0), -0.0), + }); + try testArgs(@Vector(4, i64), @Vector(4, f32), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i64), @Vector(8, f32), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i64), @Vector(16, f32), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f32, next(f32, 0x0.8p64, 0.0), 0.0), next(f32, 0x0.8p64, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i64), @Vector(32, f32), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i64), @Vector(64, f32), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i64), @Vector(128, f32), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u64), @Vector(1, f32), .{ + -0.0, + }); + try testArgs(@Vector(2, u64), @Vector(2, f32), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u64), @Vector(4, f32), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u64), @Vector(8, f32), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f32, next(f32, 0x1p64, 0.0), 0.0), next(f32, 0x1p64, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u64), @Vector(16, f32), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u64), @Vector(32, f32), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u64), @Vector(64, f32), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u64), @Vector(128, f32), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i128), @Vector(1, f32), .{ + -0x0.8p128, + }); + try testArgs(@Vector(2, i128), @Vector(2, f32), .{ + next(f32, -0x0.8p128, -0.0), next(f32, next(f32, -0x0.8p128, -0.0), -0.0), + }); + try testArgs(@Vector(4, i128), @Vector(4, f32), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i128), @Vector(8, f32), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i128), @Vector(16, f32), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f32, next(f32, 0x0.8p128, 0.0), 0.0), next(f32, 0x0.8p128, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i128), @Vector(32, f32), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i128), @Vector(64, f32), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u128), @Vector(1, f32), .{ + -0.0, + }); + try testArgs(@Vector(2, u128), @Vector(2, f32), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u128), @Vector(4, f32), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u128), @Vector(8, f32), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f32, next(f32, fmax(f32), 0.0), 0.0), next(f32, fmax(f32), 0.0), 2e-5, + }); + try testArgs(@Vector(16, u128), @Vector(16, f32), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u128), @Vector(32, f32), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u128), @Vector(64, f32), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i256), @Vector(1, f32), .{ + -fmax(f32), + }); + try testArgs(@Vector(2, i256), @Vector(2, f32), .{ + next(f32, -fmax(f32), -0.0), next(f32, next(f32, -fmax(f32), -0.0), -0.0), + }); + try testArgs(@Vector(4, i256), @Vector(4, f32), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i256), @Vector(8, f32), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i256), @Vector(16, f32), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f32, next(f32, fmax(f32), 0.0), 0.0), next(f32, fmax(f32), 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i256), @Vector(32, f32), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i256), @Vector(64, f32), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u256), @Vector(1, f32), .{ + -0.0, + }); + try testArgs(@Vector(2, u256), @Vector(2, f32), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u256), @Vector(4, f32), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u256), @Vector(8, f32), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f32, next(f32, fmax(f32), 0.0), 0.0), next(f32, fmax(f32), 0.0), 2e-5, + }); + try testArgs(@Vector(16, u256), @Vector(16, f32), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u256), @Vector(32, f32), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u256), @Vector(64, f32), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i8), @Vector(1, f64), .{ + -0x0.8p8, + }); + try testArgs(@Vector(2, i8), @Vector(2, f64), .{ + next(f64, -0x0.8p8, -0.0), next(f64, next(f64, -0x0.8p8, -0.0), -0.0), + }); + try testArgs(@Vector(4, i8), @Vector(4, f64), .{ + -1e2, -1e1, -1e0, -1e-1, + }); + try testArgs(@Vector(8, i8), @Vector(8, f64), .{ + -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, 1e-5, 1e-4, + }); + try testArgs(@Vector(16, i8), @Vector(16, f64), .{ + 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, next(f64, next(f64, 0x0.8p8, 0.0), 0.0), next(f64, 0x0.8p8, 0.0), + -2e1, -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, + }); + try testArgs(@Vector(32, i8), @Vector(32, f64), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, -3e1, -3e0, + -3e-1, -3e-2, -3e-3, -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, -4e1, -4e0, -4e-1, -4e-2, + -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + }); + try testArgs(@Vector(64, i8), @Vector(64, f64), .{ + 4e0, 4e1, -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, + -5e-5, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, + -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, -6e-5, 6e-5, + 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, -7e1, -7e0, + -7e-1, -7e-2, -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, + 7e-2, 7e-1, 7e0, 7e1, -8e1, -8e0, -8e-1, -8e-2, + -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, + 8e0, 8e1, -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, + }); + try testArgs(@Vector(128, i8), @Vector(128, f64), .{ + -9e-5, 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, + -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, -11e-5, 11e-5, + 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, -12e1, -12e0, + -12e-1, -12e-2, -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, + 12e-2, 12e-1, 12e0, 12e1, -13e0, -13e-1, -13e-2, -13e-3, + -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + -14e0, -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, + 14e-3, 14e-2, 14e-1, 14e0, -15e0, -15e-1, -15e-2, -15e-3, + -15e-4, -15e-5, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + -16e0, -16e-1, -16e-2, -16e-3, -16e-4, -16e-5, 16e-5, 16e-4, + 16e-3, 16e-2, 16e-1, 16e0, -17e0, -17e-1, -17e-2, -17e-3, + -17e-4, -17e-5, 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, + -18e0, -18e-1, -18e-2, -18e-3, -18e-4, -18e-5, 18e-5, 18e-4, + 18e-3, 18e-2, 18e-1, 18e0, -19e0, -19e-1, -19e-2, -19e-3, + -19e-4, -19e-5, 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, + -21e0, -21e-1, -21e-2, -21e-3, -21e-4, -21e-5, 21e-5, 21e-4, + }); + + try testArgs(@Vector(1, u8), @Vector(1, f64), .{ + -0.0, + }); + try testArgs(@Vector(2, u8), @Vector(2, f64), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u8), @Vector(4, f64), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u8), @Vector(8, f64), .{ + 1e0, 1e1, 1e2, next(f64, next(f64, 0x1p8, 0.0), 0.0), next(f64, 0x1p8, 0.0), 2e-5, 2e-4, 2e-3, + }); + try testArgs(@Vector(16, u8), @Vector(16, f64), .{ + 2e-2, 2e-1, 2e0, 2e1, 2e2, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, 4e-5, 4e-4, 4e-3, 4e-2, + }); + try testArgs(@Vector(32, u8), @Vector(32, f64), .{ + 4e-1, 4e0, 4e1, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, + 5e0, 5e1, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, + 6e1, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, 7e0, 7e1, + 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 9e-5, + }); + try testArgs(@Vector(64, u8), @Vector(64, f64), .{ + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 11e-5, 11e-4, + 11e-3, 11e-2, 11e-1, 11e0, 11e1, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + 15e1, 16e-5, 16e-4, 16e-3, 16e-2, 16e-1, 16e0, 16e1, + 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, 17e1, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 19e-5, 19e-4, + 19e-3, 19e-2, 19e-1, 19e0, 19e1, 21e-5, 21e-4, 21e-3, + }); + try testArgs(@Vector(128, u8), @Vector(128, f64), .{ + 21e-2, 21e-1, 21e0, 21e1, 22e-5, 22e-4, 22e-3, 22e-2, + 22e-1, 22e0, 22e1, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 24e-5, 24e-4, 24e-3, 24e-2, 24e-1, 24e0, + 24e1, 25e-5, 25e-4, 25e-3, 25e-2, 25e-1, 25e0, 25e1, + 26e-5, 26e-4, 26e-3, 26e-2, 26e-1, 26e0, 27e-5, 27e-4, + 27e-3, 27e-2, 27e-1, 27e0, 28e-5, 28e-4, 28e-3, 28e-2, + 28e-1, 28e0, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, + 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, 32e-5, 32e-4, + 32e-3, 32e-2, 32e-1, 32e0, 33e-5, 33e-4, 33e-3, 33e-2, + 33e-1, 33e0, 34e-5, 34e-4, 34e-3, 34e-2, 34e-1, 34e0, + 35e-5, 35e-4, 35e-3, 35e-2, 35e-1, 35e0, 36e-5, 36e-4, + 36e-3, 36e-2, 36e-1, 36e0, 37e-5, 37e-4, 37e-3, 37e-2, + 37e-1, 37e0, 38e-5, 38e-4, 38e-3, 38e-2, 38e-1, 38e0, + 39e-5, 39e-4, 39e-3, 39e-2, 39e-1, 39e0, 41e-5, 41e-4, + 41e-3, 41e-2, 41e-1, 41e0, 42e-5, 42e-4, 42e-3, 42e-2, + 42e-1, 42e0, 43e-5, 43e-4, 43e-3, 43e-2, 43e-1, 43e0, + }); + + try testArgs(@Vector(1, i16), @Vector(1, f64), .{ + -0x0.8p16, + }); + try testArgs(@Vector(2, i16), @Vector(2, f64), .{ + next(f64, -0x0.8p16, -0.0), next(f64, next(f64, -0x0.8p16, -0.0), -0.0), + }); + try testArgs(@Vector(4, i16), @Vector(4, f64), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i16), @Vector(8, f64), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i16), @Vector(16, f64), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f64, next(f64, 0x0.8p16, 0.0), 0.0), next(f64, 0x0.8p16, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i16), @Vector(32, f64), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i16), @Vector(64, f64), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i16), @Vector(128, f64), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u16), @Vector(1, f64), .{ + -0.0, + }); + try testArgs(@Vector(2, u16), @Vector(2, f64), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u16), @Vector(4, f64), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u16), @Vector(8, f64), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f64, next(f64, 0x1p16, 0.0), 0.0), next(f64, 0x1p16, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u16), @Vector(16, f64), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u16), @Vector(32, f64), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u16), @Vector(64, f64), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u16), @Vector(128, f64), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i32), @Vector(1, f64), .{ + -0x0.8p32, + }); + try testArgs(@Vector(2, i32), @Vector(2, f64), .{ + next(f64, -0x0.8p32, -0.0), next(f64, next(f64, -0x0.8p32, -0.0), -0.0), + }); + try testArgs(@Vector(4, i32), @Vector(4, f64), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i32), @Vector(8, f64), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i32), @Vector(16, f64), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f64, next(f64, 0x0.8p32, 0.0), 0.0), next(f64, 0x0.8p32, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i32), @Vector(32, f64), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i32), @Vector(64, f64), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i32), @Vector(128, f64), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u32), @Vector(1, f64), .{ + -0.0, + }); + try testArgs(@Vector(2, u32), @Vector(2, f64), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u32), @Vector(4, f64), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u32), @Vector(8, f64), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f64, next(f64, 0x1p32, 0.0), 0.0), next(f64, 0x1p32, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u32), @Vector(16, f64), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u32), @Vector(32, f64), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u32), @Vector(64, f64), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u32), @Vector(128, f64), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i64), @Vector(1, f64), .{ + -0x0.8p64, + }); + try testArgs(@Vector(2, i64), @Vector(2, f64), .{ + next(f64, -0x0.8p64, -0.0), next(f64, next(f64, -0x0.8p64, -0.0), -0.0), + }); + try testArgs(@Vector(4, i64), @Vector(4, f64), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i64), @Vector(8, f64), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i64), @Vector(16, f64), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f64, next(f64, 0x0.8p64, 0.0), 0.0), next(f64, 0x0.8p64, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i64), @Vector(32, f64), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i64), @Vector(64, f64), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i64), @Vector(128, f64), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u64), @Vector(1, f64), .{ + -0.0, + }); + try testArgs(@Vector(2, u64), @Vector(2, f64), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u64), @Vector(4, f64), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u64), @Vector(8, f64), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f64, next(f64, 0x1p64, 0.0), 0.0), next(f64, 0x1p64, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u64), @Vector(16, f64), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u64), @Vector(32, f64), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u64), @Vector(64, f64), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u64), @Vector(128, f64), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i128), @Vector(1, f64), .{ + -0x0.8p128, + }); + try testArgs(@Vector(2, i128), @Vector(2, f64), .{ + next(f64, -0x0.8p128, -0.0), next(f64, next(f64, -0x0.8p128, -0.0), -0.0), + }); + try testArgs(@Vector(4, i128), @Vector(4, f64), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i128), @Vector(8, f64), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i128), @Vector(16, f64), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f64, next(f64, 0x0.8p128, 0.0), 0.0), next(f64, 0x0.8p128, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i128), @Vector(32, f64), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i128), @Vector(64, f64), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u128), @Vector(1, f64), .{ + -0.0, + }); + try testArgs(@Vector(2, u128), @Vector(2, f64), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u128), @Vector(4, f64), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u128), @Vector(8, f64), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f64, next(f64, 0x1p128, 0.0), 0.0), next(f64, 0x1p128, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u128), @Vector(16, f64), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u128), @Vector(32, f64), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u128), @Vector(64, f64), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i256), @Vector(1, f64), .{ + -0x0.8p256, + }); + try testArgs(@Vector(2, i256), @Vector(2, f64), .{ + next(f64, -0x0.8p256, -0.0), next(f64, next(f64, -0x0.8p256, -0.0), -0.0), + }); + try testArgs(@Vector(4, i256), @Vector(4, f64), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i256), @Vector(8, f64), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i256), @Vector(16, f64), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f64, next(f64, 0x0.8p256, 0.0), 0.0), next(f64, 0x0.8p256, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i256), @Vector(32, f64), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i256), @Vector(64, f64), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u256), @Vector(1, f64), .{ + -0.0, + }); + try testArgs(@Vector(2, u256), @Vector(2, f64), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u256), @Vector(4, f64), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u256), @Vector(8, f64), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f64, next(f64, 0x1p256, 0.0), 0.0), next(f64, 0x1p256, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u256), @Vector(16, f64), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u256), @Vector(32, f64), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u256), @Vector(64, f64), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i8), @Vector(1, f80), .{ + -0x0.8p8, + }); + try testArgs(@Vector(2, i8), @Vector(2, f80), .{ + next(f80, -0x0.8p8, -0.0), next(f80, next(f80, -0x0.8p8, -0.0), -0.0), + }); + try testArgs(@Vector(4, i8), @Vector(4, f80), .{ + -1e2, -1e1, -1e0, -1e-1, + }); + try testArgs(@Vector(8, i8), @Vector(8, f80), .{ + -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, 1e-5, 1e-4, + }); + try testArgs(@Vector(16, i8), @Vector(16, f80), .{ + 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, next(f80, next(f80, 0x0.8p8, 0.0), 0.0), next(f80, 0x0.8p8, 0.0), + -2e1, -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, + }); + try testArgs(@Vector(32, i8), @Vector(32, f80), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, -3e1, -3e0, + -3e-1, -3e-2, -3e-3, -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, -4e1, -4e0, -4e-1, -4e-2, + -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + }); + try testArgs(@Vector(64, i8), @Vector(64, f80), .{ + 4e0, 4e1, -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, + -5e-5, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, + -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, -6e-5, 6e-5, + 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, -7e1, -7e0, + -7e-1, -7e-2, -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, + 7e-2, 7e-1, 7e0, 7e1, -8e1, -8e0, -8e-1, -8e-2, + -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, + 8e0, 8e1, -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, + }); + try testArgs(@Vector(128, i8), @Vector(128, f80), .{ + -9e-5, 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, + -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, -11e-5, 11e-5, + 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, -12e1, -12e0, + -12e-1, -12e-2, -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, + 12e-2, 12e-1, 12e0, 12e1, -13e0, -13e-1, -13e-2, -13e-3, + -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + -14e0, -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, + 14e-3, 14e-2, 14e-1, 14e0, -15e0, -15e-1, -15e-2, -15e-3, + -15e-4, -15e-5, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + -16e0, -16e-1, -16e-2, -16e-3, -16e-4, -16e-5, 16e-5, 16e-4, + 16e-3, 16e-2, 16e-1, 16e0, -17e0, -17e-1, -17e-2, -17e-3, + -17e-4, -17e-5, 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, + -18e0, -18e-1, -18e-2, -18e-3, -18e-4, -18e-5, 18e-5, 18e-4, + 18e-3, 18e-2, 18e-1, 18e0, -19e0, -19e-1, -19e-2, -19e-3, + -19e-4, -19e-5, 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, + -21e0, -21e-1, -21e-2, -21e-3, -21e-4, -21e-5, 21e-5, 21e-4, + }); + + try testArgs(@Vector(1, u8), @Vector(1, f80), .{ + -0.0, + }); + try testArgs(@Vector(2, u8), @Vector(2, f80), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u8), @Vector(4, f80), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u8), @Vector(8, f80), .{ + 1e0, 1e1, 1e2, next(f80, next(f80, 0x1p8, 0.0), 0.0), next(f80, 0x1p8, 0.0), 2e-5, 2e-4, 2e-3, + }); + try testArgs(@Vector(16, u8), @Vector(16, f80), .{ + 2e-2, 2e-1, 2e0, 2e1, 2e2, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, 4e-5, 4e-4, 4e-3, 4e-2, + }); + try testArgs(@Vector(32, u8), @Vector(32, f80), .{ + 4e-1, 4e0, 4e1, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, + 5e0, 5e1, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, + 6e1, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, 7e0, 7e1, + 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 9e-5, + }); + try testArgs(@Vector(64, u8), @Vector(64, f80), .{ + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 11e-5, 11e-4, + 11e-3, 11e-2, 11e-1, 11e0, 11e1, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + 15e1, 16e-5, 16e-4, 16e-3, 16e-2, 16e-1, 16e0, 16e1, + 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, 17e1, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 19e-5, 19e-4, + 19e-3, 19e-2, 19e-1, 19e0, 19e1, 21e-5, 21e-4, 21e-3, + }); + try testArgs(@Vector(128, u8), @Vector(128, f80), .{ + 21e-2, 21e-1, 21e0, 21e1, 22e-5, 22e-4, 22e-3, 22e-2, + 22e-1, 22e0, 22e1, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 24e-5, 24e-4, 24e-3, 24e-2, 24e-1, 24e0, + 24e1, 25e-5, 25e-4, 25e-3, 25e-2, 25e-1, 25e0, 25e1, + 26e-5, 26e-4, 26e-3, 26e-2, 26e-1, 26e0, 27e-5, 27e-4, + 27e-3, 27e-2, 27e-1, 27e0, 28e-5, 28e-4, 28e-3, 28e-2, + 28e-1, 28e0, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, + 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, 32e-5, 32e-4, + 32e-3, 32e-2, 32e-1, 32e0, 33e-5, 33e-4, 33e-3, 33e-2, + 33e-1, 33e0, 34e-5, 34e-4, 34e-3, 34e-2, 34e-1, 34e0, + 35e-5, 35e-4, 35e-3, 35e-2, 35e-1, 35e0, 36e-5, 36e-4, + 36e-3, 36e-2, 36e-1, 36e0, 37e-5, 37e-4, 37e-3, 37e-2, + 37e-1, 37e0, 38e-5, 38e-4, 38e-3, 38e-2, 38e-1, 38e0, + 39e-5, 39e-4, 39e-3, 39e-2, 39e-1, 39e0, 41e-5, 41e-4, + 41e-3, 41e-2, 41e-1, 41e0, 42e-5, 42e-4, 42e-3, 42e-2, + 42e-1, 42e0, 43e-5, 43e-4, 43e-3, 43e-2, 43e-1, 43e0, + }); + + try testArgs(@Vector(1, i16), @Vector(1, f80), .{ + -0x0.8p16, + }); + try testArgs(@Vector(2, i16), @Vector(2, f80), .{ + next(f80, -0x0.8p16, -0.0), next(f80, next(f80, -0x0.8p16, -0.0), -0.0), + }); + try testArgs(@Vector(4, i16), @Vector(4, f80), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i16), @Vector(8, f80), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i16), @Vector(16, f80), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f80, next(f80, 0x0.8p16, 0.0), 0.0), next(f80, 0x0.8p16, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i16), @Vector(32, f80), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i16), @Vector(64, f80), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i16), @Vector(128, f80), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u16), @Vector(1, f80), .{ + -0.0, + }); + try testArgs(@Vector(2, u16), @Vector(2, f80), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u16), @Vector(4, f80), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u16), @Vector(8, f80), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f80, next(f80, 0x1p16, 0.0), 0.0), next(f80, 0x1p16, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u16), @Vector(16, f80), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u16), @Vector(32, f80), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u16), @Vector(64, f80), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u16), @Vector(128, f80), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i32), @Vector(1, f80), .{ + -0x0.8p32, + }); + try testArgs(@Vector(2, i32), @Vector(2, f80), .{ + next(f80, -0x0.8p32, -0.0), next(f80, next(f80, -0x0.8p32, -0.0), -0.0), + }); + try testArgs(@Vector(4, i32), @Vector(4, f80), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i32), @Vector(8, f80), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i32), @Vector(16, f80), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f80, next(f80, 0x0.8p32, 0.0), 0.0), next(f80, 0x0.8p32, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i32), @Vector(32, f80), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i32), @Vector(64, f80), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i32), @Vector(128, f80), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u32), @Vector(1, f80), .{ + -0.0, + }); + try testArgs(@Vector(2, u32), @Vector(2, f80), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u32), @Vector(4, f80), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u32), @Vector(8, f80), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f80, next(f80, 0x1p32, 0.0), 0.0), next(f80, 0x1p32, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u32), @Vector(16, f80), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u32), @Vector(32, f80), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u32), @Vector(64, f80), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u32), @Vector(128, f80), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i64), @Vector(1, f80), .{ + -0x0.8p64, + }); + try testArgs(@Vector(2, i64), @Vector(2, f80), .{ + next(f80, -0x0.8p64, -0.0), next(f80, next(f80, -0x0.8p64, -0.0), -0.0), + }); + try testArgs(@Vector(4, i64), @Vector(4, f80), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i64), @Vector(8, f80), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i64), @Vector(16, f80), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f80, next(f80, 0x0.8p64, 0.0), 0.0), next(f80, 0x0.8p64, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i64), @Vector(32, f80), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i64), @Vector(64, f80), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i64), @Vector(128, f80), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u64), @Vector(1, f80), .{ + -0.0, + }); + try testArgs(@Vector(2, u64), @Vector(2, f80), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u64), @Vector(4, f80), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u64), @Vector(8, f80), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f80, next(f80, 0x1p64, 0.0), 0.0), next(f80, 0x1p64, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u64), @Vector(16, f80), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u64), @Vector(32, f80), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u64), @Vector(64, f80), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u64), @Vector(128, f80), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i128), @Vector(1, f80), .{ + -0x0.8p128, + }); + try testArgs(@Vector(2, i128), @Vector(2, f80), .{ + next(f80, -0x0.8p128, -0.0), next(f80, next(f80, -0x0.8p128, -0.0), -0.0), + }); + try testArgs(@Vector(4, i128), @Vector(4, f80), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i128), @Vector(8, f80), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i128), @Vector(16, f80), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f80, next(f80, 0x0.8p128, 0.0), 0.0), next(f80, 0x0.8p128, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i128), @Vector(32, f80), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i128), @Vector(64, f80), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u128), @Vector(1, f80), .{ + -0.0, + }); + try testArgs(@Vector(2, u128), @Vector(2, f80), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u128), @Vector(4, f80), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u128), @Vector(8, f80), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f80, next(f80, 0x1p128, 0.0), 0.0), next(f80, 0x1p128, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u128), @Vector(16, f80), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u128), @Vector(32, f80), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u128), @Vector(64, f80), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i256), @Vector(1, f80), .{ + -0x0.8p256, + }); + try testArgs(@Vector(2, i256), @Vector(2, f80), .{ + next(f80, -0x0.8p256, -0.0), next(f80, next(f80, -0x0.8p256, -0.0), -0.0), + }); + try testArgs(@Vector(4, i256), @Vector(4, f80), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i256), @Vector(8, f80), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i256), @Vector(16, f80), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f80, next(f80, 0x0.8p256, 0.0), 0.0), next(f80, 0x0.8p256, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i256), @Vector(32, f80), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i256), @Vector(64, f80), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u256), @Vector(1, f80), .{ + -0.0, + }); + try testArgs(@Vector(2, u256), @Vector(2, f80), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u256), @Vector(4, f80), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u256), @Vector(8, f80), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f80, next(f80, 0x1p256, 0.0), 0.0), next(f80, 0x1p256, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u256), @Vector(16, f80), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u256), @Vector(32, f80), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u256), @Vector(64, f80), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i8), @Vector(1, f128), .{ + -0x0.8p8, + }); + try testArgs(@Vector(2, i8), @Vector(2, f128), .{ + next(f128, -0x0.8p8, -0.0), next(f128, next(f128, -0x0.8p8, -0.0), -0.0), + }); + try testArgs(@Vector(4, i8), @Vector(4, f128), .{ + -1e2, -1e1, -1e0, -1e-1, + }); + try testArgs(@Vector(8, i8), @Vector(8, f128), .{ + -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, 1e-5, 1e-4, + }); + try testArgs(@Vector(16, i8), @Vector(16, f128), .{ + 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, next(f128, next(f128, 0x0.8p8, 0.0), 0.0), next(f128, 0x0.8p8, 0.0), + -2e1, -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, + }); + try testArgs(@Vector(32, i8), @Vector(32, f128), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, -3e1, -3e0, + -3e-1, -3e-2, -3e-3, -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, -4e1, -4e0, -4e-1, -4e-2, + -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + }); + try testArgs(@Vector(64, i8), @Vector(64, f128), .{ + 4e0, 4e1, -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, + -5e-5, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, + -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, -6e-5, 6e-5, + 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, -7e1, -7e0, + -7e-1, -7e-2, -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, + 7e-2, 7e-1, 7e0, 7e1, -8e1, -8e0, -8e-1, -8e-2, + -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, + 8e0, 8e1, -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, + }); + try testArgs(@Vector(128, i8), @Vector(128, f128), .{ + -9e-5, 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, + -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, -11e-5, 11e-5, + 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, -12e1, -12e0, + -12e-1, -12e-2, -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, + 12e-2, 12e-1, 12e0, 12e1, -13e0, -13e-1, -13e-2, -13e-3, + -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + -14e0, -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, + 14e-3, 14e-2, 14e-1, 14e0, -15e0, -15e-1, -15e-2, -15e-3, + -15e-4, -15e-5, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + -16e0, -16e-1, -16e-2, -16e-3, -16e-4, -16e-5, 16e-5, 16e-4, + 16e-3, 16e-2, 16e-1, 16e0, -17e0, -17e-1, -17e-2, -17e-3, + -17e-4, -17e-5, 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, + -18e0, -18e-1, -18e-2, -18e-3, -18e-4, -18e-5, 18e-5, 18e-4, + 18e-3, 18e-2, 18e-1, 18e0, -19e0, -19e-1, -19e-2, -19e-3, + -19e-4, -19e-5, 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, + -21e0, -21e-1, -21e-2, -21e-3, -21e-4, -21e-5, 21e-5, 21e-4, + }); + + try testArgs(@Vector(1, u8), @Vector(1, f128), .{ + -0.0, + }); + try testArgs(@Vector(2, u8), @Vector(2, f128), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u8), @Vector(4, f128), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u8), @Vector(8, f128), .{ + 1e0, 1e1, 1e2, next(f128, next(f128, 0x1p8, 0.0), 0.0), next(f128, 0x1p8, 0.0), 2e-5, 2e-4, 2e-3, + }); + try testArgs(@Vector(16, u8), @Vector(16, f128), .{ + 2e-2, 2e-1, 2e0, 2e1, 2e2, 3e-5, 3e-4, 3e-3, + 3e-2, 3e-1, 3e0, 3e1, 4e-5, 4e-4, 4e-3, 4e-2, + }); + try testArgs(@Vector(32, u8), @Vector(32, f128), .{ + 4e-1, 4e0, 4e1, 5e-5, 5e-4, 5e-3, 5e-2, 5e-1, + 5e0, 5e1, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, + 6e1, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, 7e0, 7e1, + 8e-5, 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 9e-5, + }); + try testArgs(@Vector(64, u8), @Vector(64, f128), .{ + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 11e-5, 11e-4, + 11e-3, 11e-2, 11e-1, 11e0, 11e1, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 15e-5, 15e-4, 15e-3, 15e-2, 15e-1, 15e0, + 15e1, 16e-5, 16e-4, 16e-3, 16e-2, 16e-1, 16e0, 16e1, + 17e-5, 17e-4, 17e-3, 17e-2, 17e-1, 17e0, 17e1, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 19e-5, 19e-4, + 19e-3, 19e-2, 19e-1, 19e0, 19e1, 21e-5, 21e-4, 21e-3, + }); + try testArgs(@Vector(128, u8), @Vector(128, f128), .{ + 21e-2, 21e-1, 21e0, 21e1, 22e-5, 22e-4, 22e-3, 22e-2, + 22e-1, 22e0, 22e1, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 24e-5, 24e-4, 24e-3, 24e-2, 24e-1, 24e0, + 24e1, 25e-5, 25e-4, 25e-3, 25e-2, 25e-1, 25e0, 25e1, + 26e-5, 26e-4, 26e-3, 26e-2, 26e-1, 26e0, 27e-5, 27e-4, + 27e-3, 27e-2, 27e-1, 27e0, 28e-5, 28e-4, 28e-3, 28e-2, + 28e-1, 28e0, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, + 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, 32e-5, 32e-4, + 32e-3, 32e-2, 32e-1, 32e0, 33e-5, 33e-4, 33e-3, 33e-2, + 33e-1, 33e0, 34e-5, 34e-4, 34e-3, 34e-2, 34e-1, 34e0, + 35e-5, 35e-4, 35e-3, 35e-2, 35e-1, 35e0, 36e-5, 36e-4, + 36e-3, 36e-2, 36e-1, 36e0, 37e-5, 37e-4, 37e-3, 37e-2, + 37e-1, 37e0, 38e-5, 38e-4, 38e-3, 38e-2, 38e-1, 38e0, + 39e-5, 39e-4, 39e-3, 39e-2, 39e-1, 39e0, 41e-5, 41e-4, + 41e-3, 41e-2, 41e-1, 41e0, 42e-5, 42e-4, 42e-3, 42e-2, + 42e-1, 42e0, 43e-5, 43e-4, 43e-3, 43e-2, 43e-1, 43e0, + }); + + try testArgs(@Vector(1, i16), @Vector(1, f128), .{ + -0x0.8p16, + }); + try testArgs(@Vector(2, i16), @Vector(2, f128), .{ + next(f128, -0x0.8p16, -0.0), next(f128, next(f128, -0x0.8p16, -0.0), -0.0), + }); + try testArgs(@Vector(4, i16), @Vector(4, f128), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i16), @Vector(8, f128), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i16), @Vector(16, f128), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f128, next(f128, 0x0.8p16, 0.0), 0.0), next(f128, 0x0.8p16, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i16), @Vector(32, f128), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i16), @Vector(64, f128), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i16), @Vector(128, f128), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u16), @Vector(1, f128), .{ + -0.0, + }); + try testArgs(@Vector(2, u16), @Vector(2, f128), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u16), @Vector(4, f128), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u16), @Vector(8, f128), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f128, next(f128, 0x1p16, 0.0), 0.0), next(f128, 0x1p16, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u16), @Vector(16, f128), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u16), @Vector(32, f128), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u16), @Vector(64, f128), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u16), @Vector(128, f128), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i32), @Vector(1, f128), .{ + -0x0.8p32, + }); + try testArgs(@Vector(2, i32), @Vector(2, f128), .{ + next(f128, -0x0.8p32, -0.0), next(f128, next(f128, -0x0.8p32, -0.0), -0.0), + }); + try testArgs(@Vector(4, i32), @Vector(4, f128), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i32), @Vector(8, f128), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i32), @Vector(16, f128), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f128, next(f128, 0x0.8p32, 0.0), 0.0), next(f128, 0x0.8p32, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i32), @Vector(32, f128), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i32), @Vector(64, f128), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i32), @Vector(128, f128), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u32), @Vector(1, f128), .{ + -0.0, + }); + try testArgs(@Vector(2, u32), @Vector(2, f128), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u32), @Vector(4, f128), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u32), @Vector(8, f128), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f128, next(f128, 0x1p32, 0.0), 0.0), next(f128, 0x1p32, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u32), @Vector(16, f128), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u32), @Vector(32, f128), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u32), @Vector(64, f128), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u32), @Vector(128, f128), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i64), @Vector(1, f128), .{ + -0x0.8p64, + }); + try testArgs(@Vector(2, i64), @Vector(2, f128), .{ + next(f128, -0x0.8p64, -0.0), next(f128, next(f128, -0x0.8p64, -0.0), -0.0), + }); + try testArgs(@Vector(4, i64), @Vector(4, f128), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i64), @Vector(8, f128), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i64), @Vector(16, f128), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f128, next(f128, 0x0.8p64, 0.0), 0.0), next(f128, 0x0.8p64, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i64), @Vector(32, f128), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i64), @Vector(64, f128), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + try testArgs(@Vector(128, i64), @Vector(128, f128), .{ + -7e-3, -7e-4, -7e-5, 7e-5, 7e-4, 7e-3, 7e-2, 7e-1, + 7e0, 7e1, 7e2, 7e3, -8e3, -8e2, -8e1, -8e0, + -8e-1, -8e-2, -8e-3, -8e-4, -8e-5, 8e-5, 8e-4, 8e-3, + 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, -9e3, -9e2, + -9e1, -9e0, -9e-1, -9e-2, -9e-3, -9e-4, -9e-5, 9e-5, + 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, 9e3, + -11e3, -11e2, -11e1, -11e0, -11e-1, -11e-2, -11e-3, -11e-4, + -11e-5, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, -12e3, -12e2, -12e1, -12e0, -12e-1, -12e-2, + -12e-3, -12e-4, -12e-5, 12e-5, 12e-4, 12e-3, 12e-2, 12e-1, + 12e0, 12e1, 12e2, 12e3, -13e3, -13e2, -13e1, -13e0, + -13e-1, -13e-2, -13e-3, -13e-4, -13e-5, 13e-5, 13e-4, 13e-3, + 13e-2, 13e-1, 13e0, 13e1, 13e2, -14e2, -14e1, -14e0, + -14e-1, -14e-2, -14e-3, -14e-4, -14e-5, 14e-5, 14e-4, 14e-3, + 14e-2, 14e-1, 14e0, 14e1, 14e2, 14e3, -15e3, -15e2, + -15e1, -15e0, -15e-1, -15e-2, -15e-3, -15e-4, -15e-5, 15e-5, + }); + + try testArgs(@Vector(1, u64), @Vector(1, f128), .{ + -0.0, + }); + try testArgs(@Vector(2, u64), @Vector(2, f128), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u64), @Vector(4, f128), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u64), @Vector(8, f128), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f128, next(f128, 0x1p64, 0.0), 0.0), next(f128, 0x1p64, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u64), @Vector(16, f128), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u64), @Vector(32, f128), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u64), @Vector(64, f128), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + try testArgs(@Vector(128, u64), @Vector(128, f128), .{ + 16e-2, 16e-1, 16e0, 16e1, 16e2, 16e3, 17e-5, 17e-4, + 17e-3, 17e-2, 17e-1, 17e0, 17e1, 17e2, 17e3, 18e-5, + 18e-4, 18e-3, 18e-2, 18e-1, 18e0, 18e1, 18e2, 18e3, + 19e-5, 19e-4, 19e-3, 19e-2, 19e-1, 19e0, 19e1, 19e2, + 19e3, 21e-5, 21e-4, 21e-3, 21e-2, 21e-1, 21e0, 21e1, + 21e2, 21e3, 22e-5, 22e-4, 22e-3, 22e-2, 22e-1, 22e0, + 22e1, 22e2, 22e3, 23e-5, 23e-4, 23e-3, 23e-2, 23e-1, + 23e0, 23e1, 23e2, 23e3, 24e-5, 24e-4, 24e-3, 24e-2, + 24e-1, 24e0, 24e1, 24e2, 24e3, 25e-5, 25e-4, 25e-3, + 25e-2, 25e-1, 25e0, 25e1, 25e2, 25e3, 26e-5, 26e-4, + 26e-3, 26e-2, 26e-1, 26e0, 26e1, 26e2, 26e3, 27e-5, + 27e-4, 27e-3, 27e-2, 27e-1, 27e0, 27e1, 27e2, 27e3, + 28e-5, 28e-4, 28e-3, 28e-2, 28e-1, 28e0, 28e1, 28e2, + 28e3, 29e-5, 29e-4, 29e-3, 29e-2, 29e-1, 29e0, 29e1, + 29e2, 29e3, 31e-5, 31e-4, 31e-3, 31e-2, 31e-1, 31e0, + 31e1, 31e2, 31e3, 32e-5, 32e-4, 32e-3, 32e-2, 32e-1, + }); + + try testArgs(@Vector(1, i128), @Vector(1, f128), .{ + -0x0.8p128, + }); + try testArgs(@Vector(2, i128), @Vector(2, f128), .{ + next(f128, -0x0.8p128, -0.0), next(f128, next(f128, -0x0.8p128, -0.0), -0.0), + }); + try testArgs(@Vector(4, i128), @Vector(4, f128), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i128), @Vector(8, f128), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i128), @Vector(16, f128), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f128, next(f128, 0x0.8p128, 0.0), 0.0), next(f128, 0x0.8p128, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i128), @Vector(32, f128), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i128), @Vector(64, f128), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u128), @Vector(1, f128), .{ + -0.0, + }); + try testArgs(@Vector(2, u128), @Vector(2, f128), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u128), @Vector(4, f128), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u128), @Vector(8, f128), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f128, next(f128, 0x1p128, 0.0), 0.0), next(f128, 0x1p128, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u128), @Vector(16, f128), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u128), @Vector(32, f128), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u128), @Vector(64, f128), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + + try testArgs(@Vector(1, i256), @Vector(1, f128), .{ + -0x0.8p256, + }); + try testArgs(@Vector(2, i256), @Vector(2, f128), .{ + next(f128, -0x0.8p256, -0.0), next(f128, next(f128, -0x0.8p256, -0.0), -0.0), + }); + try testArgs(@Vector(4, i256), @Vector(4, f128), .{ + -1e4, -1e3, -1e2, -1e1, + }); + try testArgs(@Vector(8, i256), @Vector(8, f128), .{ + -1e0, -1e-1, -1e-2, -1e-3, -1e-4, -1e-5, -0.0, 0.0, + }); + try testArgs(@Vector(16, i256), @Vector(16, f128), .{ + 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, + 1e3, 1e4, next(f128, next(f128, 0x0.8p256, 0.0), 0.0), next(f128, 0x0.8p256, 0.0), -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(32, i256), @Vector(32, f128), .{ + -2e0, -2e-1, -2e-2, -2e-3, -2e-4, -2e-5, 2e-5, 2e-4, + 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, 2e4, + -3e4, -3e3, -3e2, -3e1, -3e0, -3e-1, -3e-2, -3e-3, + -3e-4, -3e-5, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, + }); + try testArgs(@Vector(64, i256), @Vector(64, f128), .{ + 3e1, 3e2, 3e3, 3e4, -4e3, -4e2, -4e1, -4e0, + -4e-1, -4e-2, -4e-3, -4e-4, -4e-5, 4e-5, 4e-4, 4e-3, + 4e-2, 4e-1, 4e0, 4e1, 4e2, 4e3, -5e3, -5e2, + -5e1, -5e0, -5e-1, -5e-2, -5e-3, -5e-4, -5e-5, 5e-5, + 5e-4, 5e-3, 5e-2, 5e-1, 5e0, 5e1, 5e2, 5e3, + -6e3, -6e2, -6e1, -6e0, -6e-1, -6e-2, -6e-3, -6e-4, + -6e-5, 6e-5, 6e-4, 6e-3, 6e-2, 6e-1, 6e0, 6e1, + 6e2, 6e3, -7e3, -7e2, -7e1, -7e0, -7e-1, -7e-2, + }); + + try testArgs(@Vector(1, u256), @Vector(1, f128), .{ + -0.0, + }); + try testArgs(@Vector(2, u256), @Vector(2, f128), .{ + 0.0, 1e-5, + }); + try testArgs(@Vector(4, u256), @Vector(4, f128), .{ + 1e-4, 1e-3, 1e-2, 1e-1, + }); + try testArgs(@Vector(8, u256), @Vector(8, f128), .{ + 1e0, 1e1, 1e2, 1e3, 1e4, next(f128, next(f128, 0x1p256, 0.0), 0.0), next(f128, 0x1p256, 0.0), 2e-5, + }); + try testArgs(@Vector(16, u256), @Vector(16, f128), .{ + 2e-4, 2e-3, 2e-2, 2e-1, 2e0, 2e1, 2e2, 2e3, + 2e4, 3e-5, 3e-4, 3e-3, 3e-2, 3e-1, 3e0, 3e1, + }); + try testArgs(@Vector(32, u256), @Vector(32, f128), .{ + 3e2, 3e3, 3e4, 4e-5, 4e-4, 4e-3, 4e-2, 4e-1, + 4e0, 4e1, 4e2, 4e3, 5e-5, 5e-4, 5e-3, 5e-2, + 5e-1, 5e0, 5e1, 5e2, 5e3, 6e-5, 6e-4, 6e-3, + 6e-2, 6e-1, 6e0, 6e1, 6e2, 6e3, 7e-5, 7e-4, + }); + try testArgs(@Vector(64, u256), @Vector(64, f128), .{ + 7e-3, 7e-2, 7e-1, 7e0, 7e1, 7e2, 7e3, 8e-5, + 8e-4, 8e-3, 8e-2, 8e-1, 8e0, 8e1, 8e2, 8e3, + 9e-5, 9e-4, 9e-3, 9e-2, 9e-1, 9e0, 9e1, 9e2, + 9e3, 11e-5, 11e-4, 11e-3, 11e-2, 11e-1, 11e0, 11e1, + 11e2, 11e3, 13e-5, 13e-4, 13e-3, 13e-2, 13e-1, 13e0, + 13e1, 13e2, 13e3, 14e-5, 14e-4, 14e-3, 14e-2, 14e-1, + 14e0, 14e1, 14e2, 14e3, 15e-5, 15e-4, 15e-3, 15e-2, + 15e-1, 15e0, 15e1, 15e2, 15e3, 16e-5, 16e-4, 16e-3, + }); + } + fn testFloatVectorsFromIntVectors() !void { + @setEvalBranchQuota(2_700); + + try testArgs(@Vector(1, f16), @Vector(1, i8), .{ + imin(i8), + }); + try testArgs(@Vector(2, f16), @Vector(2, i8), .{ + imin(i8) + 1, -1e2, + }); + try testArgs(@Vector(4, f16), @Vector(4, i8), .{ + -1e1, -1e0, 0, 1e0, + }); + try testArgs(@Vector(8, f16), @Vector(8, i8), .{ + 1e1, 1e2, imax(i8) - 1, imax(i8), imin(i8) + 2, imin(i8) + 3, -2e1, -2e0, + }); + try testArgs(@Vector(16, f16), @Vector(16, i8), .{ + 2e0, 2e1, imax(i8) - 3, imax(i8) - 2, imin(i8) + 4, imin(i8) + 5, -3e1, -3e0, + 3e0, 3e1, imax(i8) - 5, imax(i8) - 4, imin(i8) + 6, imin(i8) + 7, -4e1, -4e0, + }); + try testArgs(@Vector(32, f16), @Vector(32, i8), .{ + 4e0, 4e1, imax(i8) - 7, imax(i8) - 6, imin(i8) + 8, imin(i8) + 9, -5e1, -5e0, + 5e0, 5e1, imax(i8) - 9, imax(i8) - 8, imin(i8) + 10, imin(i8) + 11, -6e1, -6e0, + 6e0, 6e1, imax(i8) - 11, imax(i8) - 10, imin(i8) + 12, imin(i8) + 13, -7e1, -7e0, + 7e0, 7e1, imax(i8) - 13, imax(i8) - 12, imin(i8) + 14, imin(i8) + 15, -8e1, -8e0, + }); + try testArgs(@Vector(64, f16), @Vector(64, i8), .{ + 8e0, 8e1, imax(i8) - 15, imax(i8) - 14, imin(i8) + 16, imin(i8) + 17, -9e1, -9e0, + 9e0, 9e1, imax(i8) - 17, imax(i8) - 16, imin(i8) + 18, imin(i8) + 19, -11e1, -11e0, + 11e0, 11e1, imax(i8) - 19, imax(i8) - 18, imin(i8) + 20, imin(i8) + 21, -12e1, -12e0, + 12e0, 12e1, imax(i8) - 21, imax(i8) - 20, imin(i8) + 22, imin(i8) + 23, -13e0, 13e0, + imax(i8) - 23, imax(i8) - 22, imin(i8) + 24, imin(i8) + 25, -14e0, 14e0, imax(i8) - 25, imax(i8) - 24, + imin(i8) + 26, imin(i8) + 27, -15e0, 15e0, imax(i8) - 27, imax(i8) - 26, imin(i8) + 28, imin(i8) + 29, + -16e0, 16e0, imax(i8) - 29, imax(i8) - 28, imin(i8) + 30, imin(i8) + 31, -17e0, 17e0, + imax(i8) - 31, imax(i8) - 30, imin(i8) + 32, imin(i8) + 33, -18e0, 18e0, imax(i8) - 33, imax(i8) - 32, + }); + try testArgs(@Vector(128, f16), @Vector(128, i8), .{ + imin(i8) + 34, imin(i8) + 35, -19e0, 19e0, imax(i8) - 35, imax(i8) - 34, imin(i8) + 36, imin(i8) + 37, + -21e0, 21e0, imax(i8) - 37, imax(i8) - 36, imin(i8) + 38, imin(i8) + 39, -22e0, 22e0, + imax(i8) - 39, imax(i8) - 38, imin(i8) + 40, imin(i8) + 41, -23e0, 23e0, imax(i8) - 41, imax(i8) - 40, + imin(i8) + 42, imin(i8) + 43, -24e0, 24e0, imax(i8) - 43, imax(i8) - 42, imin(i8) + 44, imin(i8) + 45, + -25e0, 25e0, imax(i8) - 45, imax(i8) - 44, imin(i8) + 46, imin(i8) + 47, -26e0, 26e0, + imax(i8) - 47, imax(i8) - 46, imin(i8) + 48, imin(i8) + 49, -27e0, 27e0, imax(i8) - 49, imax(i8) - 48, + imin(i8) + 50, imin(i8) + 51, -28e0, 28e0, imax(i8) - 51, imax(i8) - 50, imin(i8) + 52, imin(i8) + 53, + -29e0, 29e0, imax(i8) - 53, imax(i8) - 52, imin(i8) + 54, imin(i8) + 55, -31e0, 31e0, + imax(i8) - 55, imax(i8) - 54, imin(i8) + 56, imin(i8) + 57, -32e0, 32e0, imax(i8) - 57, imax(i8) - 56, + imin(i8) + 58, imin(i8) + 59, -33e0, 33e0, imax(i8) - 59, imax(i8) - 58, imin(i8) + 60, imin(i8) + 61, + -34e0, 34e0, imax(i8) - 61, imax(i8) - 60, imin(i8) + 62, imin(i8) + 63, -35e0, 35e0, + imax(i8) - 63, imax(i8) - 62, imin(i8) + 64, imin(i8) + 65, -36e0, 36e0, imax(i8) - 65, imax(i8) - 64, + imin(i8) + 66, imin(i8) + 67, -37e0, 37e0, imax(i8) - 67, imax(i8) - 66, imin(i8) + 68, imin(i8) + 69, + -38e0, 38e0, imax(i8) - 69, imax(i8) - 68, imin(i8) + 70, imin(i8) + 71, -39e0, 39e0, + imax(i8) - 71, imax(i8) - 70, imin(i8) + 72, imin(i8) + 73, -41e0, 41e0, imax(i8) - 73, imax(i8) - 72, + imin(i8) + 74, imin(i8) + 75, -42e0, 42e0, imax(i8) - 75, imax(i8) - 74, imin(i8) + 76, imin(i8) + 77, + }); + + try testArgs(@Vector(1, f16), @Vector(1, u8), .{ + 0, + }); + try testArgs(@Vector(2, f16), @Vector(2, u8), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f16), @Vector(4, u8), .{ + 1e2, imax(u8) - 1, imax(u8), 2e0, + }); + try testArgs(@Vector(8, f16), @Vector(8, u8), .{ + 2e1, 2e2, imax(u8) - 3, imax(u8) - 2, 3e0, 3e1, imax(u8) - 5, imax(u8) - 4, + }); + try testArgs(@Vector(16, f16), @Vector(16, u8), .{ + imax(u8) - 7, imax(u8) - 6, 5e0, 5e1, imax(u8) - 9, imax(u8) - 8, 6e0, 6e1, + imax(u8) - 11, imax(u8) - 10, 7e0, 7e1, imax(u8) - 13, imax(u8) - 12, 8e0, 8e1, + }); + try testArgs(@Vector(32, f16), @Vector(32, u8), .{ + imax(u8) - 15, imax(u8) - 14, 9e0, 9e1, imax(u8) - 17, imax(u8) - 16, 11e0, 11e1, + imax(u8) - 19, imax(u8) - 18, 12e0, 12e1, imax(u8) - 21, imax(u8) - 20, 13e0, 13e1, + imax(u8) - 23, imax(u8) - 22, 14e0, 14e1, imax(u8) - 25, imax(u8) - 24, 15e0, 15e1, + imax(u8) - 27, imax(u8) - 26, 16e0, 16e1, imax(u8) - 29, imax(u8) - 28, 17e0, 17e1, + }); + try testArgs(@Vector(64, f16), @Vector(64, u8), .{ + imax(u8) - 31, imax(u8) - 30, 18e0, 18e1, imax(u8) - 33, imax(u8) - 32, 19e0, 19e1, + imax(u8) - 35, imax(u8) - 34, 21e0, 21e1, imax(u8) - 37, imax(u8) - 36, 22e0, 22e1, + imax(u8) - 39, imax(u8) - 38, 23e0, 23e1, imax(u8) - 41, imax(u8) - 40, 24e0, 24e1, + imax(u8) - 43, imax(u8) - 42, 25e0, 25e1, imax(u8) - 45, imax(u8) - 44, 26e0, imax(u8) - 47, + imax(u8) - 46, 27e0, imax(u8) - 49, imax(u8) - 48, 28e0, imax(u8) - 51, imax(u8) - 50, 29e0, + imax(u8) - 53, imax(u8) - 52, 31e0, imax(u8) - 55, imax(u8) - 54, 32e0, imax(u8) - 57, imax(u8) - 56, + 33e0, imax(u8) - 59, imax(u8) - 58, 34e0, imax(u8) - 61, imax(u8) - 60, 35e0, imax(u8) - 63, + imax(u8) - 62, 36e0, imax(u8) - 65, imax(u8) - 64, 37e0, imax(u8) - 67, imax(u8) - 66, 38e0, + }); + try testArgs(@Vector(128, f16), @Vector(128, u8), .{ + imax(u8) - 69, imax(u8) - 68, 39e0, imax(u8) - 71, imax(u8) - 70, 41e0, imax(u8) - 73, imax(u8) - 72, + 42e0, imax(u8) - 75, imax(u8) - 74, 43e0, imax(u8) - 77, imax(u8) - 76, 44e0, imax(u8) - 79, + imax(u8) - 78, 45e0, imax(u8) - 81, imax(u8) - 80, 46e0, imax(u8) - 83, imax(u8) - 82, 47e0, + imax(u8) - 85, imax(u8) - 84, 48e0, imax(u8) - 87, imax(u8) - 86, 49e0, imax(u8) - 89, imax(u8) - 88, + 51e0, imax(u8) - 91, imax(u8) - 90, 52e0, imax(u8) - 93, imax(u8) - 92, 53e0, imax(u8) - 95, + imax(u8) - 94, 54e0, imax(u8) - 97, imax(u8) - 96, 55e0, imax(u8) - 99, imax(u8) - 98, 56e0, + imax(u8) - 101, imax(u8) - 100, 57e0, imax(u8) - 103, imax(u8) - 102, 58e0, imax(u8) - 105, imax(u8) - 104, + 59e0, imax(u8) - 107, imax(u8) - 106, 61e0, imax(u8) - 109, imax(u8) - 108, 62e0, imax(u8) - 111, + imax(u8) - 110, 63e0, imax(u8) - 113, imax(u8) - 112, 64e0, imax(u8) - 115, imax(u8) - 114, 65e0, + imax(u8) - 117, imax(u8) - 116, 66e0, imax(u8) - 119, imax(u8) - 118, 67e0, imax(u8) - 121, imax(u8) - 120, + 68e0, imax(u8) - 123, imax(u8) - 122, 69e0, imax(u8) - 125, imax(u8) - 124, 71e0, imax(u8) - 127, + imax(u8) - 126, 72e0, imax(u8) - 129, imax(u8) - 128, 73e0, imax(u8) - 131, imax(u8) - 130, 74e0, + imax(u8) - 133, imax(u8) - 132, 75e0, imax(u8) - 135, imax(u8) - 134, 76e0, imax(u8) - 137, imax(u8) - 136, + 77e0, imax(u8) - 139, imax(u8) - 138, 78e0, imax(u8) - 141, imax(u8) - 140, 79e0, imax(u8) - 143, + imax(u8) - 142, 81e0, imax(u8) - 145, imax(u8) - 144, 82e0, imax(u8) - 147, imax(u8) - 146, 83e0, + imax(u8) - 149, imax(u8) - 148, 84e0, imax(u8) - 151, imax(u8) - 150, 85e0, imax(u8) - 153, imax(u8) - 152, + }); + + try testArgs(@Vector(1, f16), @Vector(1, i16), .{ + imin(i16), + }); + try testArgs(@Vector(2, f16), @Vector(2, i16), .{ + imin(i16) + 1, -1e4, + }); + try testArgs(@Vector(4, f16), @Vector(4, i16), .{ + -1e3, -1e2, -1e1, -1e0, + }); + try testArgs(@Vector(8, f16), @Vector(8, i16), .{ + 0, 1e0, 1e1, 1e2, 1e3, 1e4, imax(i16) - 1, imax(i16), + }); + try testArgs(@Vector(16, f16), @Vector(16, i16), .{ + imin(i16) + 2, imin(i16) + 3, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, imax(i16) - 3, imax(i16) - 2, imin(i16) + 4, imin(i16) + 5, + }); + try testArgs(@Vector(32, f16), @Vector(32, i16), .{ + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + 3e3, 3e4, imax(i16) - 5, imax(i16) - 4, imin(i16) + 6, imin(i16) + 7, -4e3, -4e2, + -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, imax(i16) - 7, imax(i16) - 6, + imin(i16) + 8, imin(i16) + 9, -5e3, -5e2, -5e1, -5e0, 5e0, 5e1, + }); + try testArgs(@Vector(64, f16), @Vector(64, i16), .{ + 5e2, 5e3, imax(i16) - 9, imax(i16) - 8, imin(i16) + 10, imin(i16) + 11, -6e3, -6e2, + -6e1, -6e0, 6e0, 6e1, 6e2, 6e3, imax(i16) - 11, imax(i16) - 10, + imin(i16) + 12, imin(i16) + 13, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, + 7e2, 7e3, imax(i16) - 13, imax(i16) - 12, imin(i16) + 14, imin(i16) + 15, -8e3, -8e2, + -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, imax(i16) - 15, imax(i16) - 14, + imin(i16) + 16, imin(i16) + 17, -9e3, -9e2, -9e1, -9e0, 9e0, 9e1, + 9e2, 9e3, imax(i16) - 17, imax(i16) - 16, imin(i16) + 18, imin(i16) + 19, -11e3, -11e2, + -11e1, -11e0, 11e0, 11e1, 11e2, 11e3, imax(i16) - 19, imax(i16) - 18, + }); + try testArgs(@Vector(128, f16), @Vector(128, i16), .{ + imin(i16) + 20, imin(i16) + 21, -12e3, -12e2, -12e1, -12e0, 12e0, 12e1, + 12e2, 12e3, imax(i16) - 21, imax(i16) - 20, imin(i16) + 22, imin(i16) + 23, -13e3, -13e2, + -13e1, -13e0, 13e0, 13e1, 13e2, 13e3, imax(i16) - 23, imax(i16) - 22, + imin(i16) + 24, imin(i16) + 25, -14e3, -14e2, -14e1, -14e0, 14e0, 14e1, + 14e2, 14e3, imax(i16) - 25, imax(i16) - 24, imin(i16) + 26, imin(i16) + 27, -15e3, -15e2, + -15e1, -15e0, 15e0, 15e1, 15e2, 15e3, imax(i16) - 27, imax(i16) - 26, + imin(i16) + 28, imin(i16) + 29, -16e3, -16e2, -16e1, -16e0, 16e0, 16e1, + 16e2, 16e3, imax(i16) - 29, imax(i16) - 28, imin(i16) + 30, imin(i16) + 31, -17e3, -17e2, + -17e1, -17e0, 17e0, 17e1, 17e2, 17e3, imax(i16) - 31, imax(i16) - 30, + imin(i16) + 32, imin(i16) + 33, -18e3, -18e2, -18e1, -18e0, 18e0, 18e1, + 18e2, 18e3, imax(i16) - 33, imax(i16) - 32, imin(i16) + 34, imin(i16) + 35, -19e3, -19e2, + -19e1, -19e0, 19e0, 19e1, 19e2, 19e3, imax(i16) - 35, imax(i16) - 34, + imin(i16) + 36, imin(i16) + 37, -12e3, -21e2, -21e1, -21e0, 21e0, 21e1, + 21e2, 21e3, imax(i16) - 37, imax(i16) - 36, imin(i16) + 38, imin(i16) + 39, -22e3, -22e2, + -22e1, -22e0, 22e0, 22e1, 22e2, 22e3, imax(i16) - 39, imax(i16) - 38, + imin(i16) + 40, imin(i16) + 41, -23e3, -23e2, -23e1, -23e0, 23e0, 23e1, + }); + + try testArgs(@Vector(1, f16), @Vector(1, u16), .{ + 0, + }); + try testArgs(@Vector(2, f16), @Vector(2, u16), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f16), @Vector(4, u16), .{ + 1e2, 1e3, 1e4, imax(u16) - 1, + }); + try testArgs(@Vector(8, f16), @Vector(8, u16), .{ + imax(u16), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u16) - 3, imax(u16) - 2, + }); + try testArgs(@Vector(16, f16), @Vector(16, u16), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u16) - 5, imax(u16) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u16) - 7, imax(u16) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f16), @Vector(32, u16), .{ + 5e2, 5e3, 5e4, imax(u16) - 9, imax(u16) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u16) - 11, imax(u16) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u16) - 13, imax(u16) - 12, 8e0, 8e1, 8e2, 8e3, imax(u16) - 15, imax(u16) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u16) - 17, imax(u16) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f16), @Vector(64, u16), .{ + 11e2, 11e3, imax(u16) - 19, imax(u16) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u16) - 21, imax(u16) - 20, 13e0, 13e1, 13e2, 13e3, imax(u16) - 23, imax(u16) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u16) - 25, imax(u16) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u16) - 27, imax(u16) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u16) - 29, imax(u16) - 28, 17e0, 17e1, 17e2, 17e3, imax(u16) - 31, imax(u16) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u16) - 33, imax(u16) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u16) - 35, imax(u16) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u16) - 37, imax(u16) - 36, 22e0, 22e1, 22e2, 22e3, imax(u16) - 39, imax(u16) - 38, + }); + try testArgs(@Vector(128, f16), @Vector(128, u16), .{ + 23e0, 23e1, 23e2, 23e3, imax(u16) - 41, imax(u16) - 40, 24e0, 24e1, + 24e2, 24e3, imax(u16) - 43, imax(u16) - 42, 25e0, 25e1, 25e2, 25e3, + imax(u16) - 45, imax(u16) - 44, 26e0, 26e1, 26e2, 26e3, imax(u16) - 47, imax(u16) - 46, + 27e0, 27e1, 27e2, 27e3, imax(u16) - 49, imax(u16) - 48, 28e0, 28e1, + 28e2, 28e3, imax(u16) - 51, imax(u16) - 50, 29e0, 29e1, 29e2, 29e3, + imax(u16) - 53, imax(u16) - 52, 31e0, 31e1, 31e2, 31e3, imax(u16) - 55, imax(u16) - 54, + 32e0, 32e1, 32e2, 32e3, imax(u16) - 57, imax(u16) - 56, 33e0, 33e1, + 33e2, 33e3, imax(u16) - 59, imax(u16) - 58, 34e0, 34e1, 34e2, 34e3, + imax(u16) - 61, imax(u16) - 60, 35e0, 35e1, 35e2, 35e3, imax(u16) - 63, imax(u16) - 62, + 36e0, 36e1, 36e2, 36e3, imax(u16) - 65, imax(u16) - 64, 37e0, 37e1, + 37e2, 37e3, imax(u16) - 67, imax(u16) - 66, 38e0, 38e1, 38e2, 38e3, + imax(u16) - 69, imax(u16) - 68, 39e0, 39e1, 39e2, 39e3, imax(u16) - 71, imax(u16) - 70, + 41e0, 41e1, 41e2, 41e3, imax(u16) - 73, imax(u16) - 72, 42e0, 42e1, + 42e2, 42e3, imax(u16) - 75, imax(u16) - 74, 43e0, 43e1, 43e2, 43e3, + imax(u16) - 77, imax(u16) - 76, 44e0, 44e1, 44e2, 44e3, imax(u16) - 79, imax(u16) - 78, + 45e0, 45e1, 45e2, 45e3, imax(u16) - 81, imax(u16) - 80, 46e0, 46e1, + }); + + try testArgs(@Vector(1, f16), @Vector(1, i32), .{ + imin(i32), + }); + try testArgs(@Vector(2, f16), @Vector(2, i32), .{ + imin(i32) + 1, -1e9, + }); + try testArgs(@Vector(4, f16), @Vector(4, i32), .{ + -1e8, -1e7, -1e6, -1e5, + }); + try testArgs(@Vector(8, f16), @Vector(8, i32), .{ + -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, 1e1, + }); + try testArgs(@Vector(16, f16), @Vector(16, i32), .{ + 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + imax(i32) - 1, imax(i32), imin(i32) + 2, imin(i32) + 3, -2e9, -2e8, -2e7, -2e6, + }); + try testArgs(@Vector(32, f16), @Vector(32, i32), .{ + -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, + 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, + imax(i32) - 3, imax(i32) - 2, imin(i32) + 4, imin(i32) + 5, -3e8, -3e7, -3e6, -3e5, + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + }); + try testArgs(@Vector(64, f16), @Vector(64, i32), .{ + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, imax(i32) - 5, imax(i32) - 4, + imin(i32) + 6, imin(i32) + 7, -4e8, -4e7, -4e6, -4e5, -4e4, -4e3, + -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, 4e4, + 4e5, 4e6, 4e7, 4e8, imax(i32) - 7, imax(i32) - 6, imin(i32) + 8, imin(i32) + 9, + -5e8, -5e7, -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, + -5e0, 5e0, 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, + 5e7, 5e8, imax(i32) - 9, imax(i32) - 8, imin(i32) + 10, imin(i32) + 11, -6e8, -6e7, + -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, -6e0, 6e0, + }); + try testArgs(@Vector(128, f16), @Vector(128, i32), .{ + 6e1, 6e2, 6e3, 6e4, 6e5, 6e6, 6e7, 6e8, + imax(i32) - 11, imax(i32) - 10, imin(i32) + 12, imin(i32) + 13, -7e8, -7e7, -7e6, -7e5, + -7e4, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, 7e2, + 7e3, 7e4, 7e5, 7e6, 7e7, 7e8, imax(i32) - 13, imax(i32) - 12, + imin(i32) + 14, imin(i32) + 15, -8e8, -8e7, -8e6, -8e5, -8e4, -8e3, + -8e2, -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, 8e4, + 8e5, 8e6, 8e7, 8e8, imax(i32) - 15, imax(i32) - 14, imin(i32) + 16, imin(i32) + 17, + -9e8, -9e7, -9e6, -9e5, -9e4, -9e3, -9e2, -9e1, + -9e0, 9e0, 9e1, 9e2, 9e3, 9e4, 9e5, 9e6, + 9e7, 9e8, imax(i32) - 17, imax(i32) - 16, imin(i32) + 18, imin(i32) + 19, -11e8, -11e7, + -11e6, -11e5, -11e4, -11e3, -11e2, -11e1, -11e0, 11e0, + 11e1, 11e2, 11e3, 11e4, 11e5, 11e6, 11e7, 11e8, + imax(i32) - 19, imax(i32) - 18, imin(i32) + 20, imin(i32) + 21, -12e8, -12e7, -12e6, -12e5, + -12e4, -12e3, -12e2, -12e1, -12e0, 12e0, 12e1, 12e2, + 12e3, 12e4, 12e5, 12e6, 12e7, 12e8, imax(i32) - 21, imax(i32) - 20, + imin(i32) + 22, imin(i32) + 23, -13e8, -13e7, -13e6, -13e5, -13e4, -13e3, + }); + + try testArgs(@Vector(1, f16), @Vector(1, u32), .{ + 0, + }); + try testArgs(@Vector(2, f16), @Vector(2, u32), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f16), @Vector(4, u32), .{ + 1e2, 1e3, 1e4, imax(u32) - 1, + }); + try testArgs(@Vector(8, f16), @Vector(8, u32), .{ + imax(u32), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u32) - 3, imax(u32) - 2, + }); + try testArgs(@Vector(16, f16), @Vector(16, u32), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u32) - 5, imax(u32) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u32) - 7, imax(u32) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f16), @Vector(32, u32), .{ + 5e2, 5e3, 5e4, imax(u32) - 9, imax(u32) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u32) - 11, imax(u32) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u32) - 13, imax(u32) - 12, 8e0, 8e1, 8e2, 8e3, imax(u32) - 15, imax(u32) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u32) - 17, imax(u32) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f16), @Vector(64, u32), .{ + 11e2, 11e3, imax(u32) - 19, imax(u32) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u32) - 21, imax(u32) - 20, 13e0, 13e1, 13e2, 13e3, imax(u32) - 23, imax(u32) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u32) - 25, imax(u32) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u32) - 27, imax(u32) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u32) - 29, imax(u32) - 28, 17e0, 17e1, 17e2, 17e3, imax(u32) - 31, imax(u32) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u32) - 33, imax(u32) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u32) - 35, imax(u32) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u32) - 37, imax(u32) - 36, 22e0, 22e1, 22e2, 22e3, imax(u32) - 39, imax(u32) - 38, + }); + try testArgs(@Vector(128, f16), @Vector(128, u32), .{ + 23e0, 23e1, 23e2, 23e3, imax(u32) - 41, imax(u32) - 40, 24e0, 24e1, + 24e2, 24e3, imax(u32) - 43, imax(u32) - 42, 25e0, 25e1, 25e2, 25e3, + imax(u32) - 45, imax(u32) - 44, 26e0, 26e1, 26e2, 26e3, imax(u32) - 47, imax(u32) - 46, + 27e0, 27e1, 27e2, 27e3, imax(u32) - 49, imax(u32) - 48, 28e0, 28e1, + 28e2, 28e3, imax(u32) - 51, imax(u32) - 50, 29e0, 29e1, 29e2, 29e3, + imax(u32) - 53, imax(u32) - 52, 31e0, 31e1, 31e2, 31e3, imax(u32) - 55, imax(u32) - 54, + 32e0, 32e1, 32e2, 32e3, imax(u32) - 57, imax(u32) - 56, 33e0, 33e1, + 33e2, 33e3, imax(u32) - 59, imax(u32) - 58, 34e0, 34e1, 34e2, 34e3, + imax(u32) - 61, imax(u32) - 60, 35e0, 35e1, 35e2, 35e3, imax(u32) - 63, imax(u32) - 62, + 36e0, 36e1, 36e2, 36e3, imax(u32) - 65, imax(u32) - 64, 37e0, 37e1, + 37e2, 37e3, imax(u32) - 67, imax(u32) - 66, 38e0, 38e1, 38e2, 38e3, + imax(u32) - 69, imax(u32) - 68, 39e0, 39e1, 39e2, 39e3, imax(u32) - 71, imax(u32) - 70, + 41e0, 41e1, 41e2, 41e3, imax(u32) - 73, imax(u32) - 72, 42e0, 42e1, + 42e2, 42e3, imax(u32) - 75, imax(u32) - 74, 43e0, 43e1, 43e2, 43e3, + imax(u32) - 77, imax(u32) - 76, 44e0, 44e1, 44e2, 44e3, imax(u32) - 79, imax(u32) - 78, + 45e0, 45e1, 45e2, 45e3, imax(u32) - 81, imax(u32) - 80, 46e0, 46e1, + }); + + try testArgs(@Vector(1, f16), @Vector(1, i64), .{ + imin(i64), + }); + try testArgs(@Vector(2, f16), @Vector(2, i64), .{ + imin(i64) + 1, -1e18, + }); + try testArgs(@Vector(4, f16), @Vector(4, i64), .{ + -1e17, -1e16, -1e15, -1e14, + }); + try testArgs(@Vector(8, f16), @Vector(8, i64), .{ + -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, -1e7, -1e6, + }); + try testArgs(@Vector(16, f16), @Vector(16, i64), .{ + -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, + }); + try testArgs(@Vector(32, f16), @Vector(32, i64), .{ + 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, + 1e17, 1e18, imax(i64) - 1, imax(i64), imin(i64) + 2, imin(i64) + 3, -2e18, -2e17, + -2e16, -2e15, -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, + -2e8, -2e7, -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(64, f16), @Vector(64, i64), .{ + -2e0, 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, + 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, + 2e15, 2e16, 2e17, 2e18, imax(i64) - 3, imax(i64) - 2, imin(i64) + 4, imin(i64) + 5, + -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, -3e11, + -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, -3e3, + -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, 3e4, + 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, + 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, imax(i64) - 5, imax(i64) - 4, + }); + try testArgs(@Vector(128, f16), @Vector(128, i64), .{ + imin(i64) + 6, imin(i64) + 7, -4e18, -4e17, -4e16, -4e15, -4e14, -4e13, + -4e12, -4e11, -4e10, -4e9, -4e8, -4e7, -4e6, -4e5, + -4e4, -4e3, -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, + 4e3, 4e4, 4e5, 4e6, 4e7, 4e8, 4e9, 4e10, + 4e11, 4e12, 4e13, 4e14, 4e15, 4e16, 4e17, 4e18, + imax(i64) - 7, imax(i64) - 6, imin(i64) + 8, imin(i64) + 9, -5e18, -5e17, -5e16, -5e15, + -5e14, -5e13, -5e12, -5e11, -5e10, -5e9, -5e8, -5e7, + -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, -5e0, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(i64) - 9, imax(i64) - 8, imin(i64) + 10, imin(i64) + 11, -6e18, -6e17, + -6e16, -6e15, -6e14, -6e13, -6e12, -6e11, -6e10, -6e9, + -6e8, -6e7, -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, + -6e0, 6e0, 6e1, 6e2, 6e3, 6e4, 6e5, 6e6, + 6e7, 6e8, 6e9, 6e10, 6e11, 6e12, 6e13, 6e14, + 6e15, 6e16, 6e17, 6e18, imax(i64) - 11, imax(i64) - 10, imin(i64) + 12, imin(i64) + 13, + }); + + try testArgs(@Vector(1, f16), @Vector(1, u64), .{ + 0, + }); + try testArgs(@Vector(2, f16), @Vector(2, u64), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f16), @Vector(4, u64), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f16), @Vector(8, u64), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f16), @Vector(16, u64), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, imax(u64) - 1, imax(u64), + 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, + }); + try testArgs(@Vector(32, f16), @Vector(32, u64), .{ + 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, + 2e16, 2e17, 2e18, imax(u64) - 3, imax(u64) - 2, 3e0, 3e1, 3e2, + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, + 3e11, 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, + }); + try testArgs(@Vector(64, f16), @Vector(64, u64), .{ + imax(u64) - 5, imax(u64) - 4, 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, + 4e6, 4e7, 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, + 4e14, 4e15, 4e16, 4e17, 4e18, imax(u64) - 7, imax(u64) - 6, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(u64) - 9, imax(u64) - 8, 6e0, 6e1, 6e2, 6e3, + 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, 6e11, + 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, imax(u64) - 11, + }); + try testArgs(@Vector(128, f16), @Vector(128, u64), .{ + imax(u64) - 10, 7e0, 7e1, 7e2, 7e3, 7e4, 7e5, 7e6, + 7e7, 7e8, 7e9, 7e10, 7e11, 7e12, 7e13, 7e14, + 7e15, 7e16, 7e17, 7e18, imax(u64) - 13, imax(u64) - 12, 8e0, 8e1, + 8e2, 8e3, 8e4, 8e5, 8e6, 8e7, 8e8, 8e9, + 8e10, 8e11, 8e12, 8e13, 8e14, 8e15, 8e16, 8e17, + 8e18, imax(u64) - 15, imax(u64) - 14, 9e0, 9e1, 9e2, 9e3, 9e4, + 9e5, 9e6, 9e7, 9e8, 9e9, 9e10, 9e11, 9e12, + 9e13, 9e14, 9e15, 9e16, 9e17, 9e18, imax(u64) - 17, imax(u64) - 16, + 11e0, 11e1, 11e2, 11e3, 11e4, 11e5, 11e6, 11e7, + 11e8, 11e9, 11e10, 11e11, 11e12, 11e13, 11e14, 11e15, + 11e16, 11e17, 11e18, imax(u64) - 19, imax(u64) - 18, 12e0, 12e1, 12e2, + 12e3, 12e4, 12e5, 12e6, 12e7, 12e8, 12e9, 12e10, + 12e11, 12e12, 12e13, 12e14, 12e15, 12e16, 12e17, 12e18, + imax(u64) - 21, imax(u64) - 20, 13e0, 13e1, 13e2, 13e3, 13e4, 13e5, + 13e6, 13e7, 13e8, 13e9, 13e10, 13e11, 13e12, 13e13, + 13e14, 13e15, 13e16, 13e17, 13e18, imax(u64) - 23, imax(u64) - 22, 14e0, + }); + + try testArgs(@Vector(1, f16), @Vector(1, i128), .{ + imin(i128), + }); + try testArgs(@Vector(2, f16), @Vector(2, i128), .{ + imin(i128) + 1, -1e38, + }); + try testArgs(@Vector(4, f16), @Vector(4, i128), .{ + -1e37, -1e36, -1e35, -1e34, + }); + try testArgs(@Vector(8, f16), @Vector(8, i128), .{ + -1e33, -1e32, -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, + }); + try testArgs(@Vector(16, f16), @Vector(16, i128), .{ + -1e25, -1e24, -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, + -1e17, -1e16, -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, + }); + try testArgs(@Vector(32, f16), @Vector(32, i128), .{ + -1e9, -1e8, -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, + -1e1, -1e0, 0, 1e0, 1e1, 1e2, 1e3, 1e4, + 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, + 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, + }); + try testArgs(@Vector(64, f16), @Vector(64, i128), .{ + 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, + 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, + 1e37, 1e38, imax(i128) - 1, imax(i128), imin(i128) + 2, imin(i128) + 3, -2e37, -2e36, + -2e35, -2e34, -2e33, -2e32, -2e31, -2e30, -2e29, -2e28, + -2e27, -2e26, -2e25, -2e24, -2e23, -2e22, -2e21, -2e20, + -2e19, -2e18, -2e17, -2e16, -2e15, -2e14, -2e13, -2e12, + -2e11, -2e10, -2e9, -2e8, -2e7, -2e6, -2e5, -2e4, + -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, 2e2, 2e3, + }); + try testArgs(@Vector(128, f16), @Vector(128, i128), .{ + 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, + 2e12, 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, + 2e20, 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, + 2e28, 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, + 2e36, 2e37, imax(i128) - 3, imax(i128) - 2, imin(i128) + 4, imin(i128) + 5, -3e37, -3e36, + -3e35, -3e34, -3e33, -3e32, -3e31, -3e30, -3e29, -3e28, + -3e27, -3e26, -3e25, -3e24, -3e23, -3e22, -3e21, -3e20, + -3e19, -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, + -3e11, -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, + -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, imax(i128) - 5, imax(i128) - 4, imin(i128) + 6, imin(i128) + 7, -4e37, -4e36, + -4e35, -4e34, -4e33, -4e32, -4e31, -4e30, -4e29, -4e28, + }); + + try testArgs(@Vector(1, f16), @Vector(1, u128), .{ + 0, + }); + try testArgs(@Vector(2, f16), @Vector(2, u128), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f16), @Vector(4, u128), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f16), @Vector(8, u128), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f16), @Vector(16, u128), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f16), @Vector(32, u128), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, imax(u128) - 1, imax(u128), 2e0, 2e1, 2e2, 2e3, 2e4, + 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, + 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, + }); + try testArgs(@Vector(64, f16), @Vector(64, u128), .{ + 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, + 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, + 2e37, 2e38, imax(u128) - 3, imax(u128) - 2, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, 3e38, imax(u128) - 5, imax(u128) - 4, 4e0, 4e1, 4e2, + }); + try testArgs(@Vector(128, f16), @Vector(128, u128), .{ + 4e3, 4e4, 4e5, 4e6, 4e7, 4e8, 4e9, 4e10, + 4e11, 4e12, 4e13, 4e14, 4e15, 4e16, 4e17, 4e18, + 4e19, 4e20, 4e21, 4e22, 4e23, 4e24, 4e25, 4e26, + 4e27, 4e28, 4e29, 4e30, 4e31, 4e32, 4e33, 4e34, + 4e35, 4e36, 4e37, imax(u128) - 7, imax(u128) - 6, 5e0, 5e1, 5e2, + 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, 5e9, 5e10, + 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, 5e17, 5e18, + 5e19, 5e20, 5e21, 5e22, 5e23, 5e24, 5e25, 5e26, + 5e27, 5e28, 5e29, 5e30, 5e31, 5e32, 5e33, 5e34, + 5e35, 5e36, 5e37, imax(u128) - 9, imax(u128) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, + 6e11, 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, + 6e19, 6e20, 6e21, 6e22, 6e23, 6e24, 6e25, 6e26, + 6e27, 6e28, 6e29, 6e30, 6e31, 6e32, 6e33, 6e34, + 6e35, 6e36, 6e37, imax(u128) - 11, imax(u128) - 10, 7e0, 7e1, 7e2, + 7e3, 7e4, 7e5, 7e6, 7e7, 7e8, 7e9, 7e10, + }); + + try testArgs(@Vector(1, f16), @Vector(1, i256), .{ + imin(i256), + }); + try testArgs(@Vector(2, f16), @Vector(2, i256), .{ + imin(i256) + 1, -1e76, + }); + try testArgs(@Vector(4, f16), @Vector(4, i256), .{ + -1e75, -1e74, -1e73, -1e72, + }); + try testArgs(@Vector(8, f16), @Vector(8, i256), .{ + -1e71, -1e70, -1e69, -1e68, -1e67, -1e66, -1e65, -1e64, + }); + try testArgs(@Vector(16, f16), @Vector(16, i256), .{ + -1e63, -1e62, -1e61, -1e60, -1e59, -1e58, -1e57, -1e56, + -1e55, -1e54, -1e53, -1e52, -1e51, -1e50, -1e49, -1e48, + }); + try testArgs(@Vector(32, f16), @Vector(32, i256), .{ + -1e47, -1e46, -1e45, -1e44, -1e43, -1e42, -1e41, -1e40, + -1e39, -1e38, -1e37, -1e36, -1e35, -1e34, -1e33, -1e32, + -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, -1e25, -1e24, + -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, -1e17, -1e16, + }); + try testArgs(@Vector(64, f16), @Vector(64, i256), .{ + -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, + -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, + 0, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, + 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, + 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, + 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, + 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, + 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, + }); + try testArgs(@Vector(128, f16), @Vector(128, i256), .{ + 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, + 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, + 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, 1e70, + 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, imax(i256) - 1, imax(i256), + imin(i256) + 2, imin(i256) + 3, -2e76, -2e75, -2e74, -2e73, -2e72, -2e71, + -2e70, -2e69, -2e68, -2e67, -2e66, -2e65, -2e64, -2e63, + -2e62, -2e61, -2e60, -2e59, -2e58, -2e57, -2e56, -2e55, + -2e54, -2e53, -2e52, -2e51, -2e50, -2e49, -2e48, -2e47, + -2e46, -2e45, -2e44, -2e43, -2e42, -2e41, -2e40, -2e39, + -2e38, -2e37, -2e36, -2e35, -2e34, -2e33, -2e32, -2e31, + -2e30, -2e29, -2e28, -2e27, -2e26, -2e25, -2e24, -2e23, + -2e22, -2e21, -2e20, -2e19, -2e18, -2e17, -2e16, -2e15, + -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, -2e8, -2e7, + -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, + 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, 2e16, + }); + + try testArgs(@Vector(1, f16), @Vector(1, u256), .{ + 0, + }); + try testArgs(@Vector(2, f16), @Vector(2, u256), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f16), @Vector(4, u256), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f16), @Vector(8, u256), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f16), @Vector(16, u256), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f16), @Vector(32, u256), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, + 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, + 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, + }); + try testArgs(@Vector(64, f16), @Vector(64, u256), .{ + 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, + 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, + imax(u256) - 1, imax(u256), 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, + 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, + 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, 2e21, + 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, 2e29, + 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, 2e37, + 2e38, 2e39, 2e40, 2e41, 2e42, 2e43, 2e44, 2e45, + }); + try testArgs(@Vector(128, f16), @Vector(128, u256), .{ + 2e46, 2e47, 2e48, 2e49, 2e50, 2e51, 2e52, 2e53, + 2e54, 2e55, 2e56, 2e57, 2e58, 2e59, 2e60, 2e61, + 2e62, 2e63, 2e64, 2e65, 2e66, 2e67, 2e68, 2e69, + 2e70, 2e71, 2e72, 2e73, 2e74, 2e75, 2e76, imax(u256) - 3, + imax(u256) - 2, 3e0, 3e1, 3e2, 3e3, 3e4, 3e5, 3e6, + 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, 3e13, 3e14, + 3e15, 3e16, 3e17, 3e18, 3e19, 3e20, 3e21, 3e22, + 3e23, 3e24, 3e25, 3e26, 3e27, 3e28, 3e29, 3e30, + 3e31, 3e32, 3e33, 3e34, 3e35, 3e36, 3e37, 3e38, + 3e39, 3e40, 3e41, 3e42, 3e43, 3e44, 3e45, 3e46, + 3e47, 3e48, 3e49, 3e50, 3e51, 3e52, 3e53, 3e54, + 3e55, 3e56, 3e57, 3e58, 3e59, 3e60, 3e61, 3e62, + 3e63, 3e64, 3e65, 3e66, 3e67, 3e68, 3e69, 3e70, + 3e71, 3e72, 3e73, 3e74, 3e75, 3e76, imax(u256) - 5, imax(u256) - 4, + 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, 4e6, 4e7, + 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, 4e14, 4e15, + }); + + try testArgs(@Vector(1, f32), @Vector(1, i8), .{ + imin(i8), + }); + try testArgs(@Vector(2, f32), @Vector(2, i8), .{ + imin(i8) + 1, -1e2, + }); + try testArgs(@Vector(4, f32), @Vector(4, i8), .{ + -1e1, -1e0, 0, 1e0, + }); + try testArgs(@Vector(8, f32), @Vector(8, i8), .{ + 1e1, 1e2, imax(i8) - 1, imax(i8), imin(i8) + 2, imin(i8) + 3, -2e1, -2e0, + }); + try testArgs(@Vector(16, f32), @Vector(16, i8), .{ + 2e0, 2e1, imax(i8) - 3, imax(i8) - 2, imin(i8) + 4, imin(i8) + 5, -3e1, -3e0, + 3e0, 3e1, imax(i8) - 5, imax(i8) - 4, imin(i8) + 6, imin(i8) + 7, -4e1, -4e0, + }); + try testArgs(@Vector(32, f32), @Vector(32, i8), .{ + 4e0, 4e1, imax(i8) - 7, imax(i8) - 6, imin(i8) + 8, imin(i8) + 9, -5e1, -5e0, + 5e0, 5e1, imax(i8) - 9, imax(i8) - 8, imin(i8) + 10, imin(i8) + 11, -6e1, -6e0, + 6e0, 6e1, imax(i8) - 11, imax(i8) - 10, imin(i8) + 12, imin(i8) + 13, -7e1, -7e0, + 7e0, 7e1, imax(i8) - 13, imax(i8) - 12, imin(i8) + 14, imin(i8) + 15, -8e1, -8e0, + }); + try testArgs(@Vector(64, f32), @Vector(64, i8), .{ + 8e0, 8e1, imax(i8) - 15, imax(i8) - 14, imin(i8) + 16, imin(i8) + 17, -9e1, -9e0, + 9e0, 9e1, imax(i8) - 17, imax(i8) - 16, imin(i8) + 18, imin(i8) + 19, -11e1, -11e0, + 11e0, 11e1, imax(i8) - 19, imax(i8) - 18, imin(i8) + 20, imin(i8) + 21, -12e1, -12e0, + 12e0, 12e1, imax(i8) - 21, imax(i8) - 20, imin(i8) + 22, imin(i8) + 23, -13e0, 13e0, + imax(i8) - 23, imax(i8) - 22, imin(i8) + 24, imin(i8) + 25, -14e0, 14e0, imax(i8) - 25, imax(i8) - 24, + imin(i8) + 26, imin(i8) + 27, -15e0, 15e0, imax(i8) - 27, imax(i8) - 26, imin(i8) + 28, imin(i8) + 29, + -16e0, 16e0, imax(i8) - 29, imax(i8) - 28, imin(i8) + 30, imin(i8) + 31, -17e0, 17e0, + imax(i8) - 31, imax(i8) - 30, imin(i8) + 32, imin(i8) + 33, -18e0, 18e0, imax(i8) - 33, imax(i8) - 32, + }); + try testArgs(@Vector(128, f32), @Vector(128, i8), .{ + imin(i8) + 34, imin(i8) + 35, -19e0, 19e0, imax(i8) - 35, imax(i8) - 34, imin(i8) + 36, imin(i8) + 37, + -21e0, 21e0, imax(i8) - 37, imax(i8) - 36, imin(i8) + 38, imin(i8) + 39, -22e0, 22e0, + imax(i8) - 39, imax(i8) - 38, imin(i8) + 40, imin(i8) + 41, -23e0, 23e0, imax(i8) - 41, imax(i8) - 40, + imin(i8) + 42, imin(i8) + 43, -24e0, 24e0, imax(i8) - 43, imax(i8) - 42, imin(i8) + 44, imin(i8) + 45, + -25e0, 25e0, imax(i8) - 45, imax(i8) - 44, imin(i8) + 46, imin(i8) + 47, -26e0, 26e0, + imax(i8) - 47, imax(i8) - 46, imin(i8) + 48, imin(i8) + 49, -27e0, 27e0, imax(i8) - 49, imax(i8) - 48, + imin(i8) + 50, imin(i8) + 51, -28e0, 28e0, imax(i8) - 51, imax(i8) - 50, imin(i8) + 52, imin(i8) + 53, + -29e0, 29e0, imax(i8) - 53, imax(i8) - 52, imin(i8) + 54, imin(i8) + 55, -31e0, 31e0, + imax(i8) - 55, imax(i8) - 54, imin(i8) + 56, imin(i8) + 57, -32e0, 32e0, imax(i8) - 57, imax(i8) - 56, + imin(i8) + 58, imin(i8) + 59, -33e0, 33e0, imax(i8) - 59, imax(i8) - 58, imin(i8) + 60, imin(i8) + 61, + -34e0, 34e0, imax(i8) - 61, imax(i8) - 60, imin(i8) + 62, imin(i8) + 63, -35e0, 35e0, + imax(i8) - 63, imax(i8) - 62, imin(i8) + 64, imin(i8) + 65, -36e0, 36e0, imax(i8) - 65, imax(i8) - 64, + imin(i8) + 66, imin(i8) + 67, -37e0, 37e0, imax(i8) - 67, imax(i8) - 66, imin(i8) + 68, imin(i8) + 69, + -38e0, 38e0, imax(i8) - 69, imax(i8) - 68, imin(i8) + 70, imin(i8) + 71, -39e0, 39e0, + imax(i8) - 71, imax(i8) - 70, imin(i8) + 72, imin(i8) + 73, -41e0, 41e0, imax(i8) - 73, imax(i8) - 72, + imin(i8) + 74, imin(i8) + 75, -42e0, 42e0, imax(i8) - 75, imax(i8) - 74, imin(i8) + 76, imin(i8) + 77, + }); + + try testArgs(@Vector(1, f32), @Vector(1, u8), .{ + 0, + }); + try testArgs(@Vector(2, f32), @Vector(2, u8), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f32), @Vector(4, u8), .{ + 1e2, imax(u8) - 1, imax(u8), 2e0, + }); + try testArgs(@Vector(8, f32), @Vector(8, u8), .{ + 2e1, 2e2, imax(u8) - 3, imax(u8) - 2, 3e0, 3e1, imax(u8) - 5, imax(u8) - 4, + }); + try testArgs(@Vector(16, f32), @Vector(16, u8), .{ + imax(u8) - 7, imax(u8) - 6, 5e0, 5e1, imax(u8) - 9, imax(u8) - 8, 6e0, 6e1, + imax(u8) - 11, imax(u8) - 10, 7e0, 7e1, imax(u8) - 13, imax(u8) - 12, 8e0, 8e1, + }); + try testArgs(@Vector(32, f32), @Vector(32, u8), .{ + imax(u8) - 15, imax(u8) - 14, 9e0, 9e1, imax(u8) - 17, imax(u8) - 16, 11e0, 11e1, + imax(u8) - 19, imax(u8) - 18, 12e0, 12e1, imax(u8) - 21, imax(u8) - 20, 13e0, 13e1, + imax(u8) - 23, imax(u8) - 22, 14e0, 14e1, imax(u8) - 25, imax(u8) - 24, 15e0, 15e1, + imax(u8) - 27, imax(u8) - 26, 16e0, 16e1, imax(u8) - 29, imax(u8) - 28, 17e0, 17e1, + }); + try testArgs(@Vector(64, f32), @Vector(64, u8), .{ + imax(u8) - 31, imax(u8) - 30, 18e0, 18e1, imax(u8) - 33, imax(u8) - 32, 19e0, 19e1, + imax(u8) - 35, imax(u8) - 34, 21e0, 21e1, imax(u8) - 37, imax(u8) - 36, 22e0, 22e1, + imax(u8) - 39, imax(u8) - 38, 23e0, 23e1, imax(u8) - 41, imax(u8) - 40, 24e0, 24e1, + imax(u8) - 43, imax(u8) - 42, 25e0, 25e1, imax(u8) - 45, imax(u8) - 44, 26e0, imax(u8) - 47, + imax(u8) - 46, 27e0, imax(u8) - 49, imax(u8) - 48, 28e0, imax(u8) - 51, imax(u8) - 50, 29e0, + imax(u8) - 53, imax(u8) - 52, 31e0, imax(u8) - 55, imax(u8) - 54, 32e0, imax(u8) - 57, imax(u8) - 56, + 33e0, imax(u8) - 59, imax(u8) - 58, 34e0, imax(u8) - 61, imax(u8) - 60, 35e0, imax(u8) - 63, + imax(u8) - 62, 36e0, imax(u8) - 65, imax(u8) - 64, 37e0, imax(u8) - 67, imax(u8) - 66, 38e0, + }); + try testArgs(@Vector(128, f32), @Vector(128, u8), .{ + imax(u8) - 69, imax(u8) - 68, 39e0, imax(u8) - 71, imax(u8) - 70, 41e0, imax(u8) - 73, imax(u8) - 72, + 42e0, imax(u8) - 75, imax(u8) - 74, 43e0, imax(u8) - 77, imax(u8) - 76, 44e0, imax(u8) - 79, + imax(u8) - 78, 45e0, imax(u8) - 81, imax(u8) - 80, 46e0, imax(u8) - 83, imax(u8) - 82, 47e0, + imax(u8) - 85, imax(u8) - 84, 48e0, imax(u8) - 87, imax(u8) - 86, 49e0, imax(u8) - 89, imax(u8) - 88, + 51e0, imax(u8) - 91, imax(u8) - 90, 52e0, imax(u8) - 93, imax(u8) - 92, 53e0, imax(u8) - 95, + imax(u8) - 94, 54e0, imax(u8) - 97, imax(u8) - 96, 55e0, imax(u8) - 99, imax(u8) - 98, 56e0, + imax(u8) - 101, imax(u8) - 100, 57e0, imax(u8) - 103, imax(u8) - 102, 58e0, imax(u8) - 105, imax(u8) - 104, + 59e0, imax(u8) - 107, imax(u8) - 106, 61e0, imax(u8) - 109, imax(u8) - 108, 62e0, imax(u8) - 111, + imax(u8) - 110, 63e0, imax(u8) - 113, imax(u8) - 112, 64e0, imax(u8) - 115, imax(u8) - 114, 65e0, + imax(u8) - 117, imax(u8) - 116, 66e0, imax(u8) - 119, imax(u8) - 118, 67e0, imax(u8) - 121, imax(u8) - 120, + 68e0, imax(u8) - 123, imax(u8) - 122, 69e0, imax(u8) - 125, imax(u8) - 124, 71e0, imax(u8) - 127, + imax(u8) - 126, 72e0, imax(u8) - 129, imax(u8) - 128, 73e0, imax(u8) - 131, imax(u8) - 130, 74e0, + imax(u8) - 133, imax(u8) - 132, 75e0, imax(u8) - 135, imax(u8) - 134, 76e0, imax(u8) - 137, imax(u8) - 136, + 77e0, imax(u8) - 139, imax(u8) - 138, 78e0, imax(u8) - 141, imax(u8) - 140, 79e0, imax(u8) - 143, + imax(u8) - 142, 81e0, imax(u8) - 145, imax(u8) - 144, 82e0, imax(u8) - 147, imax(u8) - 146, 83e0, + imax(u8) - 149, imax(u8) - 148, 84e0, imax(u8) - 151, imax(u8) - 150, 85e0, imax(u8) - 153, imax(u8) - 152, + }); + + try testArgs(@Vector(1, f32), @Vector(1, i16), .{ + imin(i16), + }); + try testArgs(@Vector(2, f32), @Vector(2, i16), .{ + imin(i16) + 1, -1e4, + }); + try testArgs(@Vector(4, f32), @Vector(4, i16), .{ + -1e3, -1e2, -1e1, -1e0, + }); + try testArgs(@Vector(8, f32), @Vector(8, i16), .{ + 0, 1e0, 1e1, 1e2, 1e3, 1e4, imax(i16) - 1, imax(i16), + }); + try testArgs(@Vector(16, f32), @Vector(16, i16), .{ + imin(i16) + 2, imin(i16) + 3, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, imax(i16) - 3, imax(i16) - 2, imin(i16) + 4, imin(i16) + 5, + }); + try testArgs(@Vector(32, f32), @Vector(32, i16), .{ + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + 3e3, 3e4, imax(i16) - 5, imax(i16) - 4, imin(i16) + 6, imin(i16) + 7, -4e3, -4e2, + -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, imax(i16) - 7, imax(i16) - 6, + imin(i16) + 8, imin(i16) + 9, -5e3, -5e2, -5e1, -5e0, 5e0, 5e1, + }); + try testArgs(@Vector(64, f32), @Vector(64, i16), .{ + 5e2, 5e3, imax(i16) - 9, imax(i16) - 8, imin(i16) + 10, imin(i16) + 11, -6e3, -6e2, + -6e1, -6e0, 6e0, 6e1, 6e2, 6e3, imax(i16) - 11, imax(i16) - 10, + imin(i16) + 12, imin(i16) + 13, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, + 7e2, 7e3, imax(i16) - 13, imax(i16) - 12, imin(i16) + 14, imin(i16) + 15, -8e3, -8e2, + -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, imax(i16) - 15, imax(i16) - 14, + imin(i16) + 16, imin(i16) + 17, -9e3, -9e2, -9e1, -9e0, 9e0, 9e1, + 9e2, 9e3, imax(i16) - 17, imax(i16) - 16, imin(i16) + 18, imin(i16) + 19, -11e3, -11e2, + -11e1, -11e0, 11e0, 11e1, 11e2, 11e3, imax(i16) - 19, imax(i16) - 18, + }); + try testArgs(@Vector(128, f32), @Vector(128, i16), .{ + imin(i16) + 20, imin(i16) + 21, -12e3, -12e2, -12e1, -12e0, 12e0, 12e1, + 12e2, 12e3, imax(i16) - 21, imax(i16) - 20, imin(i16) + 22, imin(i16) + 23, -13e3, -13e2, + -13e1, -13e0, 13e0, 13e1, 13e2, 13e3, imax(i16) - 23, imax(i16) - 22, + imin(i16) + 24, imin(i16) + 25, -14e3, -14e2, -14e1, -14e0, 14e0, 14e1, + 14e2, 14e3, imax(i16) - 25, imax(i16) - 24, imin(i16) + 26, imin(i16) + 27, -15e3, -15e2, + -15e1, -15e0, 15e0, 15e1, 15e2, 15e3, imax(i16) - 27, imax(i16) - 26, + imin(i16) + 28, imin(i16) + 29, -16e3, -16e2, -16e1, -16e0, 16e0, 16e1, + 16e2, 16e3, imax(i16) - 29, imax(i16) - 28, imin(i16) + 30, imin(i16) + 31, -17e3, -17e2, + -17e1, -17e0, 17e0, 17e1, 17e2, 17e3, imax(i16) - 31, imax(i16) - 30, + imin(i16) + 32, imin(i16) + 33, -18e3, -18e2, -18e1, -18e0, 18e0, 18e1, + 18e2, 18e3, imax(i16) - 33, imax(i16) - 32, imin(i16) + 34, imin(i16) + 35, -19e3, -19e2, + -19e1, -19e0, 19e0, 19e1, 19e2, 19e3, imax(i16) - 35, imax(i16) - 34, + imin(i16) + 36, imin(i16) + 37, -12e3, -21e2, -21e1, -21e0, 21e0, 21e1, + 21e2, 21e3, imax(i16) - 37, imax(i16) - 36, imin(i16) + 38, imin(i16) + 39, -22e3, -22e2, + -22e1, -22e0, 22e0, 22e1, 22e2, 22e3, imax(i16) - 39, imax(i16) - 38, + imin(i16) + 40, imin(i16) + 41, -23e3, -23e2, -23e1, -23e0, 23e0, 23e1, + }); + + try testArgs(@Vector(1, f32), @Vector(1, u16), .{ + 0, + }); + try testArgs(@Vector(2, f32), @Vector(2, u16), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f32), @Vector(4, u16), .{ + 1e2, 1e3, 1e4, imax(u16) - 1, + }); + try testArgs(@Vector(8, f32), @Vector(8, u16), .{ + imax(u16), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u16) - 3, imax(u16) - 2, + }); + try testArgs(@Vector(16, f32), @Vector(16, u16), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u16) - 5, imax(u16) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u16) - 7, imax(u16) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f32), @Vector(32, u16), .{ + 5e2, 5e3, 5e4, imax(u16) - 9, imax(u16) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u16) - 11, imax(u16) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u16) - 13, imax(u16) - 12, 8e0, 8e1, 8e2, 8e3, imax(u16) - 15, imax(u16) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u16) - 17, imax(u16) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f32), @Vector(64, u16), .{ + 11e2, 11e3, imax(u16) - 19, imax(u16) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u16) - 21, imax(u16) - 20, 13e0, 13e1, 13e2, 13e3, imax(u16) - 23, imax(u16) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u16) - 25, imax(u16) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u16) - 27, imax(u16) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u16) - 29, imax(u16) - 28, 17e0, 17e1, 17e2, 17e3, imax(u16) - 31, imax(u16) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u16) - 33, imax(u16) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u16) - 35, imax(u16) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u16) - 37, imax(u16) - 36, 22e0, 22e1, 22e2, 22e3, imax(u16) - 39, imax(u16) - 38, + }); + try testArgs(@Vector(128, f32), @Vector(128, u16), .{ + 23e0, 23e1, 23e2, 23e3, imax(u16) - 41, imax(u16) - 40, 24e0, 24e1, + 24e2, 24e3, imax(u16) - 43, imax(u16) - 42, 25e0, 25e1, 25e2, 25e3, + imax(u16) - 45, imax(u16) - 44, 26e0, 26e1, 26e2, 26e3, imax(u16) - 47, imax(u16) - 46, + 27e0, 27e1, 27e2, 27e3, imax(u16) - 49, imax(u16) - 48, 28e0, 28e1, + 28e2, 28e3, imax(u16) - 51, imax(u16) - 50, 29e0, 29e1, 29e2, 29e3, + imax(u16) - 53, imax(u16) - 52, 31e0, 31e1, 31e2, 31e3, imax(u16) - 55, imax(u16) - 54, + 32e0, 32e1, 32e2, 32e3, imax(u16) - 57, imax(u16) - 56, 33e0, 33e1, + 33e2, 33e3, imax(u16) - 59, imax(u16) - 58, 34e0, 34e1, 34e2, 34e3, + imax(u16) - 61, imax(u16) - 60, 35e0, 35e1, 35e2, 35e3, imax(u16) - 63, imax(u16) - 62, + 36e0, 36e1, 36e2, 36e3, imax(u16) - 65, imax(u16) - 64, 37e0, 37e1, + 37e2, 37e3, imax(u16) - 67, imax(u16) - 66, 38e0, 38e1, 38e2, 38e3, + imax(u16) - 69, imax(u16) - 68, 39e0, 39e1, 39e2, 39e3, imax(u16) - 71, imax(u16) - 70, + 41e0, 41e1, 41e2, 41e3, imax(u16) - 73, imax(u16) - 72, 42e0, 42e1, + 42e2, 42e3, imax(u16) - 75, imax(u16) - 74, 43e0, 43e1, 43e2, 43e3, + imax(u16) - 77, imax(u16) - 76, 44e0, 44e1, 44e2, 44e3, imax(u16) - 79, imax(u16) - 78, + 45e0, 45e1, 45e2, 45e3, imax(u16) - 81, imax(u16) - 80, 46e0, 46e1, + }); + + try testArgs(@Vector(1, f32), @Vector(1, i32), .{ + imin(i32), + }); + try testArgs(@Vector(2, f32), @Vector(2, i32), .{ + imin(i32) + 1, -1e9, + }); + try testArgs(@Vector(4, f32), @Vector(4, i32), .{ + -1e8, -1e7, -1e6, -1e5, + }); + try testArgs(@Vector(8, f32), @Vector(8, i32), .{ + -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, 1e1, + }); + try testArgs(@Vector(16, f32), @Vector(16, i32), .{ + 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + imax(i32) - 1, imax(i32), imin(i32) + 2, imin(i32) + 3, -2e9, -2e8, -2e7, -2e6, + }); + try testArgs(@Vector(32, f32), @Vector(32, i32), .{ + -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, + 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, + imax(i32) - 3, imax(i32) - 2, imin(i32) + 4, imin(i32) + 5, -3e8, -3e7, -3e6, -3e5, + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + }); + try testArgs(@Vector(64, f32), @Vector(64, i32), .{ + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, imax(i32) - 5, imax(i32) - 4, + imin(i32) + 6, imin(i32) + 7, -4e8, -4e7, -4e6, -4e5, -4e4, -4e3, + -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, 4e4, + 4e5, 4e6, 4e7, 4e8, imax(i32) - 7, imax(i32) - 6, imin(i32) + 8, imin(i32) + 9, + -5e8, -5e7, -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, + -5e0, 5e0, 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, + 5e7, 5e8, imax(i32) - 9, imax(i32) - 8, imin(i32) + 10, imin(i32) + 11, -6e8, -6e7, + -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, -6e0, 6e0, + }); + try testArgs(@Vector(128, f32), @Vector(128, i32), .{ + 6e1, 6e2, 6e3, 6e4, 6e5, 6e6, 6e7, 6e8, + imax(i32) - 11, imax(i32) - 10, imin(i32) + 12, imin(i32) + 13, -7e8, -7e7, -7e6, -7e5, + -7e4, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, 7e2, + 7e3, 7e4, 7e5, 7e6, 7e7, 7e8, imax(i32) - 13, imax(i32) - 12, + imin(i32) + 14, imin(i32) + 15, -8e8, -8e7, -8e6, -8e5, -8e4, -8e3, + -8e2, -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, 8e4, + 8e5, 8e6, 8e7, 8e8, imax(i32) - 15, imax(i32) - 14, imin(i32) + 16, imin(i32) + 17, + -9e8, -9e7, -9e6, -9e5, -9e4, -9e3, -9e2, -9e1, + -9e0, 9e0, 9e1, 9e2, 9e3, 9e4, 9e5, 9e6, + 9e7, 9e8, imax(i32) - 17, imax(i32) - 16, imin(i32) + 18, imin(i32) + 19, -11e8, -11e7, + -11e6, -11e5, -11e4, -11e3, -11e2, -11e1, -11e0, 11e0, + 11e1, 11e2, 11e3, 11e4, 11e5, 11e6, 11e7, 11e8, + imax(i32) - 19, imax(i32) - 18, imin(i32) + 20, imin(i32) + 21, -12e8, -12e7, -12e6, -12e5, + -12e4, -12e3, -12e2, -12e1, -12e0, 12e0, 12e1, 12e2, + 12e3, 12e4, 12e5, 12e6, 12e7, 12e8, imax(i32) - 21, imax(i32) - 20, + imin(i32) + 22, imin(i32) + 23, -13e8, -13e7, -13e6, -13e5, -13e4, -13e3, + }); + + try testArgs(@Vector(1, f32), @Vector(1, u32), .{ + 0, + }); + try testArgs(@Vector(2, f32), @Vector(2, u32), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f32), @Vector(4, u32), .{ + 1e2, 1e3, 1e4, imax(u32) - 1, + }); + try testArgs(@Vector(8, f32), @Vector(8, u32), .{ + imax(u32), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u32) - 3, imax(u32) - 2, + }); + try testArgs(@Vector(16, f32), @Vector(16, u32), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u32) - 5, imax(u32) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u32) - 7, imax(u32) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f32), @Vector(32, u32), .{ + 5e2, 5e3, 5e4, imax(u32) - 9, imax(u32) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u32) - 11, imax(u32) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u32) - 13, imax(u32) - 12, 8e0, 8e1, 8e2, 8e3, imax(u32) - 15, imax(u32) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u32) - 17, imax(u32) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f32), @Vector(64, u32), .{ + 11e2, 11e3, imax(u32) - 19, imax(u32) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u32) - 21, imax(u32) - 20, 13e0, 13e1, 13e2, 13e3, imax(u32) - 23, imax(u32) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u32) - 25, imax(u32) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u32) - 27, imax(u32) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u32) - 29, imax(u32) - 28, 17e0, 17e1, 17e2, 17e3, imax(u32) - 31, imax(u32) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u32) - 33, imax(u32) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u32) - 35, imax(u32) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u32) - 37, imax(u32) - 36, 22e0, 22e1, 22e2, 22e3, imax(u32) - 39, imax(u32) - 38, + }); + try testArgs(@Vector(128, f32), @Vector(128, u32), .{ + 23e0, 23e1, 23e2, 23e3, imax(u32) - 41, imax(u32) - 40, 24e0, 24e1, + 24e2, 24e3, imax(u32) - 43, imax(u32) - 42, 25e0, 25e1, 25e2, 25e3, + imax(u32) - 45, imax(u32) - 44, 26e0, 26e1, 26e2, 26e3, imax(u32) - 47, imax(u32) - 46, + 27e0, 27e1, 27e2, 27e3, imax(u32) - 49, imax(u32) - 48, 28e0, 28e1, + 28e2, 28e3, imax(u32) - 51, imax(u32) - 50, 29e0, 29e1, 29e2, 29e3, + imax(u32) - 53, imax(u32) - 52, 31e0, 31e1, 31e2, 31e3, imax(u32) - 55, imax(u32) - 54, + 32e0, 32e1, 32e2, 32e3, imax(u32) - 57, imax(u32) - 56, 33e0, 33e1, + 33e2, 33e3, imax(u32) - 59, imax(u32) - 58, 34e0, 34e1, 34e2, 34e3, + imax(u32) - 61, imax(u32) - 60, 35e0, 35e1, 35e2, 35e3, imax(u32) - 63, imax(u32) - 62, + 36e0, 36e1, 36e2, 36e3, imax(u32) - 65, imax(u32) - 64, 37e0, 37e1, + 37e2, 37e3, imax(u32) - 67, imax(u32) - 66, 38e0, 38e1, 38e2, 38e3, + imax(u32) - 69, imax(u32) - 68, 39e0, 39e1, 39e2, 39e3, imax(u32) - 71, imax(u32) - 70, + 41e0, 41e1, 41e2, 41e3, imax(u32) - 73, imax(u32) - 72, 42e0, 42e1, + 42e2, 42e3, imax(u32) - 75, imax(u32) - 74, 43e0, 43e1, 43e2, 43e3, + imax(u32) - 77, imax(u32) - 76, 44e0, 44e1, 44e2, 44e3, imax(u32) - 79, imax(u32) - 78, + 45e0, 45e1, 45e2, 45e3, imax(u32) - 81, imax(u32) - 80, 46e0, 46e1, + }); + + try testArgs(@Vector(1, f32), @Vector(1, i64), .{ + imin(i64), + }); + try testArgs(@Vector(2, f32), @Vector(2, i64), .{ + imin(i64) + 1, -1e18, + }); + try testArgs(@Vector(4, f32), @Vector(4, i64), .{ + -1e17, -1e16, -1e15, -1e14, + }); + try testArgs(@Vector(8, f32), @Vector(8, i64), .{ + -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, -1e7, -1e6, + }); + try testArgs(@Vector(16, f32), @Vector(16, i64), .{ + -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, + }); + try testArgs(@Vector(32, f32), @Vector(32, i64), .{ + 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, + 1e17, 1e18, imax(i64) - 1, imax(i64), imin(i64) + 2, imin(i64) + 3, -2e18, -2e17, + -2e16, -2e15, -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, + -2e8, -2e7, -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(64, f32), @Vector(64, i64), .{ + -2e0, 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, + 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, + 2e15, 2e16, 2e17, 2e18, imax(i64) - 3, imax(i64) - 2, imin(i64) + 4, imin(i64) + 5, + -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, -3e11, + -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, -3e3, + -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, 3e4, + 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, + 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, imax(i64) - 5, imax(i64) - 4, + }); + try testArgs(@Vector(128, f32), @Vector(128, i64), .{ + imin(i64) + 6, imin(i64) + 7, -4e18, -4e17, -4e16, -4e15, -4e14, -4e13, + -4e12, -4e11, -4e10, -4e9, -4e8, -4e7, -4e6, -4e5, + -4e4, -4e3, -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, + 4e3, 4e4, 4e5, 4e6, 4e7, 4e8, 4e9, 4e10, + 4e11, 4e12, 4e13, 4e14, 4e15, 4e16, 4e17, 4e18, + imax(i64) - 7, imax(i64) - 6, imin(i64) + 8, imin(i64) + 9, -5e18, -5e17, -5e16, -5e15, + -5e14, -5e13, -5e12, -5e11, -5e10, -5e9, -5e8, -5e7, + -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, -5e0, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(i64) - 9, imax(i64) - 8, imin(i64) + 10, imin(i64) + 11, -6e18, -6e17, + -6e16, -6e15, -6e14, -6e13, -6e12, -6e11, -6e10, -6e9, + -6e8, -6e7, -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, + -6e0, 6e0, 6e1, 6e2, 6e3, 6e4, 6e5, 6e6, + 6e7, 6e8, 6e9, 6e10, 6e11, 6e12, 6e13, 6e14, + 6e15, 6e16, 6e17, 6e18, imax(i64) - 11, imax(i64) - 10, imin(i64) + 12, imin(i64) + 13, + }); + + try testArgs(@Vector(1, f32), @Vector(1, u64), .{ + 0, + }); + try testArgs(@Vector(2, f32), @Vector(2, u64), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f32), @Vector(4, u64), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f32), @Vector(8, u64), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f32), @Vector(16, u64), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, imax(u64) - 1, imax(u64), + 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, + }); + try testArgs(@Vector(32, f32), @Vector(32, u64), .{ + 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, + 2e16, 2e17, 2e18, imax(u64) - 3, imax(u64) - 2, 3e0, 3e1, 3e2, + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, + 3e11, 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, + }); + try testArgs(@Vector(64, f32), @Vector(64, u64), .{ + imax(u64) - 5, imax(u64) - 4, 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, + 4e6, 4e7, 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, + 4e14, 4e15, 4e16, 4e17, 4e18, imax(u64) - 7, imax(u64) - 6, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(u64) - 9, imax(u64) - 8, 6e0, 6e1, 6e2, 6e3, + 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, 6e11, + 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, imax(u64) - 11, + }); + try testArgs(@Vector(128, f32), @Vector(128, u64), .{ + imax(u64) - 10, 7e0, 7e1, 7e2, 7e3, 7e4, 7e5, 7e6, + 7e7, 7e8, 7e9, 7e10, 7e11, 7e12, 7e13, 7e14, + 7e15, 7e16, 7e17, 7e18, imax(u64) - 13, imax(u64) - 12, 8e0, 8e1, + 8e2, 8e3, 8e4, 8e5, 8e6, 8e7, 8e8, 8e9, + 8e10, 8e11, 8e12, 8e13, 8e14, 8e15, 8e16, 8e17, + 8e18, imax(u64) - 15, imax(u64) - 14, 9e0, 9e1, 9e2, 9e3, 9e4, + 9e5, 9e6, 9e7, 9e8, 9e9, 9e10, 9e11, 9e12, + 9e13, 9e14, 9e15, 9e16, 9e17, 9e18, imax(u64) - 17, imax(u64) - 16, + 11e0, 11e1, 11e2, 11e3, 11e4, 11e5, 11e6, 11e7, + 11e8, 11e9, 11e10, 11e11, 11e12, 11e13, 11e14, 11e15, + 11e16, 11e17, 11e18, imax(u64) - 19, imax(u64) - 18, 12e0, 12e1, 12e2, + 12e3, 12e4, 12e5, 12e6, 12e7, 12e8, 12e9, 12e10, + 12e11, 12e12, 12e13, 12e14, 12e15, 12e16, 12e17, 12e18, + imax(u64) - 21, imax(u64) - 20, 13e0, 13e1, 13e2, 13e3, 13e4, 13e5, + 13e6, 13e7, 13e8, 13e9, 13e10, 13e11, 13e12, 13e13, + 13e14, 13e15, 13e16, 13e17, 13e18, imax(u64) - 23, imax(u64) - 22, 14e0, + }); + + try testArgs(@Vector(1, f32), @Vector(1, i128), .{ + imin(i128), + }); + try testArgs(@Vector(2, f32), @Vector(2, i128), .{ + imin(i128) + 1, -1e38, + }); + try testArgs(@Vector(4, f32), @Vector(4, i128), .{ + -1e37, -1e36, -1e35, -1e34, + }); + try testArgs(@Vector(8, f32), @Vector(8, i128), .{ + -1e33, -1e32, -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, + }); + try testArgs(@Vector(16, f32), @Vector(16, i128), .{ + -1e25, -1e24, -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, + -1e17, -1e16, -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, + }); + try testArgs(@Vector(32, f32), @Vector(32, i128), .{ + -1e9, -1e8, -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, + -1e1, -1e0, 0, 1e0, 1e1, 1e2, 1e3, 1e4, + 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, + 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, + }); + try testArgs(@Vector(64, f32), @Vector(64, i128), .{ + 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, + 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, + 1e37, 1e38, imax(i128) - 1, imax(i128), imin(i128) + 2, imin(i128) + 3, -2e37, -2e36, + -2e35, -2e34, -2e33, -2e32, -2e31, -2e30, -2e29, -2e28, + -2e27, -2e26, -2e25, -2e24, -2e23, -2e22, -2e21, -2e20, + -2e19, -2e18, -2e17, -2e16, -2e15, -2e14, -2e13, -2e12, + -2e11, -2e10, -2e9, -2e8, -2e7, -2e6, -2e5, -2e4, + -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, 2e2, 2e3, + }); + try testArgs(@Vector(128, f32), @Vector(128, i128), .{ + 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, + 2e12, 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, + 2e20, 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, + 2e28, 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, + 2e36, 2e37, imax(i128) - 3, imax(i128) - 2, imin(i128) + 4, imin(i128) + 5, -3e37, -3e36, + -3e35, -3e34, -3e33, -3e32, -3e31, -3e30, -3e29, -3e28, + -3e27, -3e26, -3e25, -3e24, -3e23, -3e22, -3e21, -3e20, + -3e19, -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, + -3e11, -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, + -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, imax(i128) - 5, imax(i128) - 4, imin(i128) + 6, imin(i128) + 7, -4e37, -4e36, + -4e35, -4e34, -4e33, -4e32, -4e31, -4e30, -4e29, -4e28, + }); + + try testArgs(@Vector(1, f32), @Vector(1, u128), .{ + 0, + }); + try testArgs(@Vector(2, f32), @Vector(2, u128), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f32), @Vector(4, u128), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f32), @Vector(8, u128), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f32), @Vector(16, u128), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f32), @Vector(32, u128), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, imax(u128) - 1, imax(u128), 2e0, 2e1, 2e2, 2e3, 2e4, + 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, + 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, + }); + try testArgs(@Vector(64, f32), @Vector(64, u128), .{ + 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, + 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, + 2e37, 2e38, imax(u128) - 3, imax(u128) - 2, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, 3e38, imax(u128) - 5, imax(u128) - 4, 4e0, 4e1, 4e2, + }); + try testArgs(@Vector(128, f32), @Vector(128, u128), .{ + 4e3, 4e4, 4e5, 4e6, 4e7, 4e8, 4e9, 4e10, + 4e11, 4e12, 4e13, 4e14, 4e15, 4e16, 4e17, 4e18, + 4e19, 4e20, 4e21, 4e22, 4e23, 4e24, 4e25, 4e26, + 4e27, 4e28, 4e29, 4e30, 4e31, 4e32, 4e33, 4e34, + 4e35, 4e36, 4e37, imax(u128) - 7, imax(u128) - 6, 5e0, 5e1, 5e2, + 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, 5e9, 5e10, + 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, 5e17, 5e18, + 5e19, 5e20, 5e21, 5e22, 5e23, 5e24, 5e25, 5e26, + 5e27, 5e28, 5e29, 5e30, 5e31, 5e32, 5e33, 5e34, + 5e35, 5e36, 5e37, imax(u128) - 9, imax(u128) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, + 6e11, 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, + 6e19, 6e20, 6e21, 6e22, 6e23, 6e24, 6e25, 6e26, + 6e27, 6e28, 6e29, 6e30, 6e31, 6e32, 6e33, 6e34, + 6e35, 6e36, 6e37, imax(u128) - 11, imax(u128) - 10, 7e0, 7e1, 7e2, + 7e3, 7e4, 7e5, 7e6, 7e7, 7e8, 7e9, 7e10, + }); + + try testArgs(@Vector(1, f32), @Vector(1, i256), .{ + imin(i256), + }); + try testArgs(@Vector(2, f32), @Vector(2, i256), .{ + imin(i256) + 1, -1e76, + }); + try testArgs(@Vector(4, f32), @Vector(4, i256), .{ + -1e75, -1e74, -1e73, -1e72, + }); + try testArgs(@Vector(8, f32), @Vector(8, i256), .{ + -1e71, -1e70, -1e69, -1e68, -1e67, -1e66, -1e65, -1e64, + }); + try testArgs(@Vector(16, f32), @Vector(16, i256), .{ + -1e63, -1e62, -1e61, -1e60, -1e59, -1e58, -1e57, -1e56, + -1e55, -1e54, -1e53, -1e52, -1e51, -1e50, -1e49, -1e48, + }); + try testArgs(@Vector(32, f32), @Vector(32, i256), .{ + -1e47, -1e46, -1e45, -1e44, -1e43, -1e42, -1e41, -1e40, + -1e39, -1e38, -1e37, -1e36, -1e35, -1e34, -1e33, -1e32, + -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, -1e25, -1e24, + -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, -1e17, -1e16, + }); + try testArgs(@Vector(64, f32), @Vector(64, i256), .{ + -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, + -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, + 0, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, + 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, + 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, + 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, + 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, + 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, + }); + try testArgs(@Vector(128, f32), @Vector(128, i256), .{ + 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, + 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, + 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, 1e70, + 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, imax(i256) - 1, imax(i256), + imin(i256) + 2, imin(i256) + 3, -2e76, -2e75, -2e74, -2e73, -2e72, -2e71, + -2e70, -2e69, -2e68, -2e67, -2e66, -2e65, -2e64, -2e63, + -2e62, -2e61, -2e60, -2e59, -2e58, -2e57, -2e56, -2e55, + -2e54, -2e53, -2e52, -2e51, -2e50, -2e49, -2e48, -2e47, + -2e46, -2e45, -2e44, -2e43, -2e42, -2e41, -2e40, -2e39, + -2e38, -2e37, -2e36, -2e35, -2e34, -2e33, -2e32, -2e31, + -2e30, -2e29, -2e28, -2e27, -2e26, -2e25, -2e24, -2e23, + -2e22, -2e21, -2e20, -2e19, -2e18, -2e17, -2e16, -2e15, + -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, -2e8, -2e7, + -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, + 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, 2e16, + }); + + try testArgs(@Vector(1, f32), @Vector(1, u256), .{ + 0, + }); + try testArgs(@Vector(2, f32), @Vector(2, u256), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f32), @Vector(4, u256), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f32), @Vector(8, u256), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f32), @Vector(16, u256), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f32), @Vector(32, u256), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, + 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, + 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, + }); + try testArgs(@Vector(64, f32), @Vector(64, u256), .{ + 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, + 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, + imax(u256) - 1, imax(u256), 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, + 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, + 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, 2e21, + 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, 2e29, + 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, 2e37, + 2e38, 2e39, 2e40, 2e41, 2e42, 2e43, 2e44, 2e45, + }); + try testArgs(@Vector(128, f32), @Vector(128, u256), .{ + 2e46, 2e47, 2e48, 2e49, 2e50, 2e51, 2e52, 2e53, + 2e54, 2e55, 2e56, 2e57, 2e58, 2e59, 2e60, 2e61, + 2e62, 2e63, 2e64, 2e65, 2e66, 2e67, 2e68, 2e69, + 2e70, 2e71, 2e72, 2e73, 2e74, 2e75, 2e76, imax(u256) - 3, + imax(u256) - 2, 3e0, 3e1, 3e2, 3e3, 3e4, 3e5, 3e6, + 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, 3e13, 3e14, + 3e15, 3e16, 3e17, 3e18, 3e19, 3e20, 3e21, 3e22, + 3e23, 3e24, 3e25, 3e26, 3e27, 3e28, 3e29, 3e30, + 3e31, 3e32, 3e33, 3e34, 3e35, 3e36, 3e37, 3e38, + 3e39, 3e40, 3e41, 3e42, 3e43, 3e44, 3e45, 3e46, + 3e47, 3e48, 3e49, 3e50, 3e51, 3e52, 3e53, 3e54, + 3e55, 3e56, 3e57, 3e58, 3e59, 3e60, 3e61, 3e62, + 3e63, 3e64, 3e65, 3e66, 3e67, 3e68, 3e69, 3e70, + 3e71, 3e72, 3e73, 3e74, 3e75, 3e76, imax(u256) - 5, imax(u256) - 4, + 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, 4e6, 4e7, + 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, 4e14, 4e15, + }); + + try testArgs(@Vector(1, f64), @Vector(1, i8), .{ + imin(i8), + }); + try testArgs(@Vector(2, f64), @Vector(2, i8), .{ + imin(i8) + 1, -1e2, + }); + try testArgs(@Vector(4, f64), @Vector(4, i8), .{ + -1e1, -1e0, 0, 1e0, + }); + try testArgs(@Vector(8, f64), @Vector(8, i8), .{ + 1e1, 1e2, imax(i8) - 1, imax(i8), imin(i8) + 2, imin(i8) + 3, -2e1, -2e0, + }); + try testArgs(@Vector(16, f64), @Vector(16, i8), .{ + 2e0, 2e1, imax(i8) - 3, imax(i8) - 2, imin(i8) + 4, imin(i8) + 5, -3e1, -3e0, + 3e0, 3e1, imax(i8) - 5, imax(i8) - 4, imin(i8) + 6, imin(i8) + 7, -4e1, -4e0, + }); + try testArgs(@Vector(32, f64), @Vector(32, i8), .{ + 4e0, 4e1, imax(i8) - 7, imax(i8) - 6, imin(i8) + 8, imin(i8) + 9, -5e1, -5e0, + 5e0, 5e1, imax(i8) - 9, imax(i8) - 8, imin(i8) + 10, imin(i8) + 11, -6e1, -6e0, + 6e0, 6e1, imax(i8) - 11, imax(i8) - 10, imin(i8) + 12, imin(i8) + 13, -7e1, -7e0, + 7e0, 7e1, imax(i8) - 13, imax(i8) - 12, imin(i8) + 14, imin(i8) + 15, -8e1, -8e0, + }); + try testArgs(@Vector(64, f64), @Vector(64, i8), .{ + 8e0, 8e1, imax(i8) - 15, imax(i8) - 14, imin(i8) + 16, imin(i8) + 17, -9e1, -9e0, + 9e0, 9e1, imax(i8) - 17, imax(i8) - 16, imin(i8) + 18, imin(i8) + 19, -11e1, -11e0, + 11e0, 11e1, imax(i8) - 19, imax(i8) - 18, imin(i8) + 20, imin(i8) + 21, -12e1, -12e0, + 12e0, 12e1, imax(i8) - 21, imax(i8) - 20, imin(i8) + 22, imin(i8) + 23, -13e0, 13e0, + imax(i8) - 23, imax(i8) - 22, imin(i8) + 24, imin(i8) + 25, -14e0, 14e0, imax(i8) - 25, imax(i8) - 24, + imin(i8) + 26, imin(i8) + 27, -15e0, 15e0, imax(i8) - 27, imax(i8) - 26, imin(i8) + 28, imin(i8) + 29, + -16e0, 16e0, imax(i8) - 29, imax(i8) - 28, imin(i8) + 30, imin(i8) + 31, -17e0, 17e0, + imax(i8) - 31, imax(i8) - 30, imin(i8) + 32, imin(i8) + 33, -18e0, 18e0, imax(i8) - 33, imax(i8) - 32, + }); + try testArgs(@Vector(128, f64), @Vector(128, i8), .{ + imin(i8) + 34, imin(i8) + 35, -19e0, 19e0, imax(i8) - 35, imax(i8) - 34, imin(i8) + 36, imin(i8) + 37, + -21e0, 21e0, imax(i8) - 37, imax(i8) - 36, imin(i8) + 38, imin(i8) + 39, -22e0, 22e0, + imax(i8) - 39, imax(i8) - 38, imin(i8) + 40, imin(i8) + 41, -23e0, 23e0, imax(i8) - 41, imax(i8) - 40, + imin(i8) + 42, imin(i8) + 43, -24e0, 24e0, imax(i8) - 43, imax(i8) - 42, imin(i8) + 44, imin(i8) + 45, + -25e0, 25e0, imax(i8) - 45, imax(i8) - 44, imin(i8) + 46, imin(i8) + 47, -26e0, 26e0, + imax(i8) - 47, imax(i8) - 46, imin(i8) + 48, imin(i8) + 49, -27e0, 27e0, imax(i8) - 49, imax(i8) - 48, + imin(i8) + 50, imin(i8) + 51, -28e0, 28e0, imax(i8) - 51, imax(i8) - 50, imin(i8) + 52, imin(i8) + 53, + -29e0, 29e0, imax(i8) - 53, imax(i8) - 52, imin(i8) + 54, imin(i8) + 55, -31e0, 31e0, + imax(i8) - 55, imax(i8) - 54, imin(i8) + 56, imin(i8) + 57, -32e0, 32e0, imax(i8) - 57, imax(i8) - 56, + imin(i8) + 58, imin(i8) + 59, -33e0, 33e0, imax(i8) - 59, imax(i8) - 58, imin(i8) + 60, imin(i8) + 61, + -34e0, 34e0, imax(i8) - 61, imax(i8) - 60, imin(i8) + 62, imin(i8) + 63, -35e0, 35e0, + imax(i8) - 63, imax(i8) - 62, imin(i8) + 64, imin(i8) + 65, -36e0, 36e0, imax(i8) - 65, imax(i8) - 64, + imin(i8) + 66, imin(i8) + 67, -37e0, 37e0, imax(i8) - 67, imax(i8) - 66, imin(i8) + 68, imin(i8) + 69, + -38e0, 38e0, imax(i8) - 69, imax(i8) - 68, imin(i8) + 70, imin(i8) + 71, -39e0, 39e0, + imax(i8) - 71, imax(i8) - 70, imin(i8) + 72, imin(i8) + 73, -41e0, 41e0, imax(i8) - 73, imax(i8) - 72, + imin(i8) + 74, imin(i8) + 75, -42e0, 42e0, imax(i8) - 75, imax(i8) - 74, imin(i8) + 76, imin(i8) + 77, + }); + + try testArgs(@Vector(1, f64), @Vector(1, u8), .{ + 0, + }); + try testArgs(@Vector(2, f64), @Vector(2, u8), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f64), @Vector(4, u8), .{ + 1e2, imax(u8) - 1, imax(u8), 2e0, + }); + try testArgs(@Vector(8, f64), @Vector(8, u8), .{ + 2e1, 2e2, imax(u8) - 3, imax(u8) - 2, 3e0, 3e1, imax(u8) - 5, imax(u8) - 4, + }); + try testArgs(@Vector(16, f64), @Vector(16, u8), .{ + imax(u8) - 7, imax(u8) - 6, 5e0, 5e1, imax(u8) - 9, imax(u8) - 8, 6e0, 6e1, + imax(u8) - 11, imax(u8) - 10, 7e0, 7e1, imax(u8) - 13, imax(u8) - 12, 8e0, 8e1, + }); + try testArgs(@Vector(32, f64), @Vector(32, u8), .{ + imax(u8) - 15, imax(u8) - 14, 9e0, 9e1, imax(u8) - 17, imax(u8) - 16, 11e0, 11e1, + imax(u8) - 19, imax(u8) - 18, 12e0, 12e1, imax(u8) - 21, imax(u8) - 20, 13e0, 13e1, + imax(u8) - 23, imax(u8) - 22, 14e0, 14e1, imax(u8) - 25, imax(u8) - 24, 15e0, 15e1, + imax(u8) - 27, imax(u8) - 26, 16e0, 16e1, imax(u8) - 29, imax(u8) - 28, 17e0, 17e1, + }); + try testArgs(@Vector(64, f64), @Vector(64, u8), .{ + imax(u8) - 31, imax(u8) - 30, 18e0, 18e1, imax(u8) - 33, imax(u8) - 32, 19e0, 19e1, + imax(u8) - 35, imax(u8) - 34, 21e0, 21e1, imax(u8) - 37, imax(u8) - 36, 22e0, 22e1, + imax(u8) - 39, imax(u8) - 38, 23e0, 23e1, imax(u8) - 41, imax(u8) - 40, 24e0, 24e1, + imax(u8) - 43, imax(u8) - 42, 25e0, 25e1, imax(u8) - 45, imax(u8) - 44, 26e0, imax(u8) - 47, + imax(u8) - 46, 27e0, imax(u8) - 49, imax(u8) - 48, 28e0, imax(u8) - 51, imax(u8) - 50, 29e0, + imax(u8) - 53, imax(u8) - 52, 31e0, imax(u8) - 55, imax(u8) - 54, 32e0, imax(u8) - 57, imax(u8) - 56, + 33e0, imax(u8) - 59, imax(u8) - 58, 34e0, imax(u8) - 61, imax(u8) - 60, 35e0, imax(u8) - 63, + imax(u8) - 62, 36e0, imax(u8) - 65, imax(u8) - 64, 37e0, imax(u8) - 67, imax(u8) - 66, 38e0, + }); + try testArgs(@Vector(128, f64), @Vector(128, u8), .{ + imax(u8) - 69, imax(u8) - 68, 39e0, imax(u8) - 71, imax(u8) - 70, 41e0, imax(u8) - 73, imax(u8) - 72, + 42e0, imax(u8) - 75, imax(u8) - 74, 43e0, imax(u8) - 77, imax(u8) - 76, 44e0, imax(u8) - 79, + imax(u8) - 78, 45e0, imax(u8) - 81, imax(u8) - 80, 46e0, imax(u8) - 83, imax(u8) - 82, 47e0, + imax(u8) - 85, imax(u8) - 84, 48e0, imax(u8) - 87, imax(u8) - 86, 49e0, imax(u8) - 89, imax(u8) - 88, + 51e0, imax(u8) - 91, imax(u8) - 90, 52e0, imax(u8) - 93, imax(u8) - 92, 53e0, imax(u8) - 95, + imax(u8) - 94, 54e0, imax(u8) - 97, imax(u8) - 96, 55e0, imax(u8) - 99, imax(u8) - 98, 56e0, + imax(u8) - 101, imax(u8) - 100, 57e0, imax(u8) - 103, imax(u8) - 102, 58e0, imax(u8) - 105, imax(u8) - 104, + 59e0, imax(u8) - 107, imax(u8) - 106, 61e0, imax(u8) - 109, imax(u8) - 108, 62e0, imax(u8) - 111, + imax(u8) - 110, 63e0, imax(u8) - 113, imax(u8) - 112, 64e0, imax(u8) - 115, imax(u8) - 114, 65e0, + imax(u8) - 117, imax(u8) - 116, 66e0, imax(u8) - 119, imax(u8) - 118, 67e0, imax(u8) - 121, imax(u8) - 120, + 68e0, imax(u8) - 123, imax(u8) - 122, 69e0, imax(u8) - 125, imax(u8) - 124, 71e0, imax(u8) - 127, + imax(u8) - 126, 72e0, imax(u8) - 129, imax(u8) - 128, 73e0, imax(u8) - 131, imax(u8) - 130, 74e0, + imax(u8) - 133, imax(u8) - 132, 75e0, imax(u8) - 135, imax(u8) - 134, 76e0, imax(u8) - 137, imax(u8) - 136, + 77e0, imax(u8) - 139, imax(u8) - 138, 78e0, imax(u8) - 141, imax(u8) - 140, 79e0, imax(u8) - 143, + imax(u8) - 142, 81e0, imax(u8) - 145, imax(u8) - 144, 82e0, imax(u8) - 147, imax(u8) - 146, 83e0, + imax(u8) - 149, imax(u8) - 148, 84e0, imax(u8) - 151, imax(u8) - 150, 85e0, imax(u8) - 153, imax(u8) - 152, + }); + + try testArgs(@Vector(1, f64), @Vector(1, i16), .{ + imin(i16), + }); + try testArgs(@Vector(2, f64), @Vector(2, i16), .{ + imin(i16) + 1, -1e4, + }); + try testArgs(@Vector(4, f64), @Vector(4, i16), .{ + -1e3, -1e2, -1e1, -1e0, + }); + try testArgs(@Vector(8, f64), @Vector(8, i16), .{ + 0, 1e0, 1e1, 1e2, 1e3, 1e4, imax(i16) - 1, imax(i16), + }); + try testArgs(@Vector(16, f64), @Vector(16, i16), .{ + imin(i16) + 2, imin(i16) + 3, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, imax(i16) - 3, imax(i16) - 2, imin(i16) + 4, imin(i16) + 5, + }); + try testArgs(@Vector(32, f64), @Vector(32, i16), .{ + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + 3e3, 3e4, imax(i16) - 5, imax(i16) - 4, imin(i16) + 6, imin(i16) + 7, -4e3, -4e2, + -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, imax(i16) - 7, imax(i16) - 6, + imin(i16) + 8, imin(i16) + 9, -5e3, -5e2, -5e1, -5e0, 5e0, 5e1, + }); + try testArgs(@Vector(64, f64), @Vector(64, i16), .{ + 5e2, 5e3, imax(i16) - 9, imax(i16) - 8, imin(i16) + 10, imin(i16) + 11, -6e3, -6e2, + -6e1, -6e0, 6e0, 6e1, 6e2, 6e3, imax(i16) - 11, imax(i16) - 10, + imin(i16) + 12, imin(i16) + 13, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, + 7e2, 7e3, imax(i16) - 13, imax(i16) - 12, imin(i16) + 14, imin(i16) + 15, -8e3, -8e2, + -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, imax(i16) - 15, imax(i16) - 14, + imin(i16) + 16, imin(i16) + 17, -9e3, -9e2, -9e1, -9e0, 9e0, 9e1, + 9e2, 9e3, imax(i16) - 17, imax(i16) - 16, imin(i16) + 18, imin(i16) + 19, -11e3, -11e2, + -11e1, -11e0, 11e0, 11e1, 11e2, 11e3, imax(i16) - 19, imax(i16) - 18, + }); + try testArgs(@Vector(128, f64), @Vector(128, i16), .{ + imin(i16) + 20, imin(i16) + 21, -12e3, -12e2, -12e1, -12e0, 12e0, 12e1, + 12e2, 12e3, imax(i16) - 21, imax(i16) - 20, imin(i16) + 22, imin(i16) + 23, -13e3, -13e2, + -13e1, -13e0, 13e0, 13e1, 13e2, 13e3, imax(i16) - 23, imax(i16) - 22, + imin(i16) + 24, imin(i16) + 25, -14e3, -14e2, -14e1, -14e0, 14e0, 14e1, + 14e2, 14e3, imax(i16) - 25, imax(i16) - 24, imin(i16) + 26, imin(i16) + 27, -15e3, -15e2, + -15e1, -15e0, 15e0, 15e1, 15e2, 15e3, imax(i16) - 27, imax(i16) - 26, + imin(i16) + 28, imin(i16) + 29, -16e3, -16e2, -16e1, -16e0, 16e0, 16e1, + 16e2, 16e3, imax(i16) - 29, imax(i16) - 28, imin(i16) + 30, imin(i16) + 31, -17e3, -17e2, + -17e1, -17e0, 17e0, 17e1, 17e2, 17e3, imax(i16) - 31, imax(i16) - 30, + imin(i16) + 32, imin(i16) + 33, -18e3, -18e2, -18e1, -18e0, 18e0, 18e1, + 18e2, 18e3, imax(i16) - 33, imax(i16) - 32, imin(i16) + 34, imin(i16) + 35, -19e3, -19e2, + -19e1, -19e0, 19e0, 19e1, 19e2, 19e3, imax(i16) - 35, imax(i16) - 34, + imin(i16) + 36, imin(i16) + 37, -12e3, -21e2, -21e1, -21e0, 21e0, 21e1, + 21e2, 21e3, imax(i16) - 37, imax(i16) - 36, imin(i16) + 38, imin(i16) + 39, -22e3, -22e2, + -22e1, -22e0, 22e0, 22e1, 22e2, 22e3, imax(i16) - 39, imax(i16) - 38, + imin(i16) + 40, imin(i16) + 41, -23e3, -23e2, -23e1, -23e0, 23e0, 23e1, + }); + + try testArgs(@Vector(1, f64), @Vector(1, u16), .{ + 0, + }); + try testArgs(@Vector(2, f64), @Vector(2, u16), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f64), @Vector(4, u16), .{ + 1e2, 1e3, 1e4, imax(u16) - 1, + }); + try testArgs(@Vector(8, f64), @Vector(8, u16), .{ + imax(u16), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u16) - 3, imax(u16) - 2, + }); + try testArgs(@Vector(16, f64), @Vector(16, u16), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u16) - 5, imax(u16) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u16) - 7, imax(u16) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f64), @Vector(32, u16), .{ + 5e2, 5e3, 5e4, imax(u16) - 9, imax(u16) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u16) - 11, imax(u16) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u16) - 13, imax(u16) - 12, 8e0, 8e1, 8e2, 8e3, imax(u16) - 15, imax(u16) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u16) - 17, imax(u16) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f64), @Vector(64, u16), .{ + 11e2, 11e3, imax(u16) - 19, imax(u16) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u16) - 21, imax(u16) - 20, 13e0, 13e1, 13e2, 13e3, imax(u16) - 23, imax(u16) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u16) - 25, imax(u16) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u16) - 27, imax(u16) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u16) - 29, imax(u16) - 28, 17e0, 17e1, 17e2, 17e3, imax(u16) - 31, imax(u16) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u16) - 33, imax(u16) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u16) - 35, imax(u16) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u16) - 37, imax(u16) - 36, 22e0, 22e1, 22e2, 22e3, imax(u16) - 39, imax(u16) - 38, + }); + try testArgs(@Vector(128, f64), @Vector(128, u16), .{ + 23e0, 23e1, 23e2, 23e3, imax(u16) - 41, imax(u16) - 40, 24e0, 24e1, + 24e2, 24e3, imax(u16) - 43, imax(u16) - 42, 25e0, 25e1, 25e2, 25e3, + imax(u16) - 45, imax(u16) - 44, 26e0, 26e1, 26e2, 26e3, imax(u16) - 47, imax(u16) - 46, + 27e0, 27e1, 27e2, 27e3, imax(u16) - 49, imax(u16) - 48, 28e0, 28e1, + 28e2, 28e3, imax(u16) - 51, imax(u16) - 50, 29e0, 29e1, 29e2, 29e3, + imax(u16) - 53, imax(u16) - 52, 31e0, 31e1, 31e2, 31e3, imax(u16) - 55, imax(u16) - 54, + 32e0, 32e1, 32e2, 32e3, imax(u16) - 57, imax(u16) - 56, 33e0, 33e1, + 33e2, 33e3, imax(u16) - 59, imax(u16) - 58, 34e0, 34e1, 34e2, 34e3, + imax(u16) - 61, imax(u16) - 60, 35e0, 35e1, 35e2, 35e3, imax(u16) - 63, imax(u16) - 62, + 36e0, 36e1, 36e2, 36e3, imax(u16) - 65, imax(u16) - 64, 37e0, 37e1, + 37e2, 37e3, imax(u16) - 67, imax(u16) - 66, 38e0, 38e1, 38e2, 38e3, + imax(u16) - 69, imax(u16) - 68, 39e0, 39e1, 39e2, 39e3, imax(u16) - 71, imax(u16) - 70, + 41e0, 41e1, 41e2, 41e3, imax(u16) - 73, imax(u16) - 72, 42e0, 42e1, + 42e2, 42e3, imax(u16) - 75, imax(u16) - 74, 43e0, 43e1, 43e2, 43e3, + imax(u16) - 77, imax(u16) - 76, 44e0, 44e1, 44e2, 44e3, imax(u16) - 79, imax(u16) - 78, + 45e0, 45e1, 45e2, 45e3, imax(u16) - 81, imax(u16) - 80, 46e0, 46e1, + }); + + try testArgs(@Vector(1, f64), @Vector(1, i32), .{ + imin(i32), + }); + try testArgs(@Vector(2, f64), @Vector(2, i32), .{ + imin(i32) + 1, -1e9, + }); + try testArgs(@Vector(4, f64), @Vector(4, i32), .{ + -1e8, -1e7, -1e6, -1e5, + }); + try testArgs(@Vector(8, f64), @Vector(8, i32), .{ + -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, 1e1, + }); + try testArgs(@Vector(16, f64), @Vector(16, i32), .{ + 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + imax(i32) - 1, imax(i32), imin(i32) + 2, imin(i32) + 3, -2e9, -2e8, -2e7, -2e6, + }); + try testArgs(@Vector(32, f64), @Vector(32, i32), .{ + -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, + 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, + imax(i32) - 3, imax(i32) - 2, imin(i32) + 4, imin(i32) + 5, -3e8, -3e7, -3e6, -3e5, + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + }); + try testArgs(@Vector(64, f64), @Vector(64, i32), .{ + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, imax(i32) - 5, imax(i32) - 4, + imin(i32) + 6, imin(i32) + 7, -4e8, -4e7, -4e6, -4e5, -4e4, -4e3, + -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, 4e4, + 4e5, 4e6, 4e7, 4e8, imax(i32) - 7, imax(i32) - 6, imin(i32) + 8, imin(i32) + 9, + -5e8, -5e7, -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, + -5e0, 5e0, 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, + 5e7, 5e8, imax(i32) - 9, imax(i32) - 8, imin(i32) + 10, imin(i32) + 11, -6e8, -6e7, + -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, -6e0, 6e0, + }); + try testArgs(@Vector(128, f64), @Vector(128, i32), .{ + 6e1, 6e2, 6e3, 6e4, 6e5, 6e6, 6e7, 6e8, + imax(i32) - 11, imax(i32) - 10, imin(i32) + 12, imin(i32) + 13, -7e8, -7e7, -7e6, -7e5, + -7e4, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, 7e2, + 7e3, 7e4, 7e5, 7e6, 7e7, 7e8, imax(i32) - 13, imax(i32) - 12, + imin(i32) + 14, imin(i32) + 15, -8e8, -8e7, -8e6, -8e5, -8e4, -8e3, + -8e2, -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, 8e4, + 8e5, 8e6, 8e7, 8e8, imax(i32) - 15, imax(i32) - 14, imin(i32) + 16, imin(i32) + 17, + -9e8, -9e7, -9e6, -9e5, -9e4, -9e3, -9e2, -9e1, + -9e0, 9e0, 9e1, 9e2, 9e3, 9e4, 9e5, 9e6, + 9e7, 9e8, imax(i32) - 17, imax(i32) - 16, imin(i32) + 18, imin(i32) + 19, -11e8, -11e7, + -11e6, -11e5, -11e4, -11e3, -11e2, -11e1, -11e0, 11e0, + 11e1, 11e2, 11e3, 11e4, 11e5, 11e6, 11e7, 11e8, + imax(i32) - 19, imax(i32) - 18, imin(i32) + 20, imin(i32) + 21, -12e8, -12e7, -12e6, -12e5, + -12e4, -12e3, -12e2, -12e1, -12e0, 12e0, 12e1, 12e2, + 12e3, 12e4, 12e5, 12e6, 12e7, 12e8, imax(i32) - 21, imax(i32) - 20, + imin(i32) + 22, imin(i32) + 23, -13e8, -13e7, -13e6, -13e5, -13e4, -13e3, + }); + + try testArgs(@Vector(1, f64), @Vector(1, u32), .{ + 0, + }); + try testArgs(@Vector(2, f64), @Vector(2, u32), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f64), @Vector(4, u32), .{ + 1e2, 1e3, 1e4, imax(u32) - 1, + }); + try testArgs(@Vector(8, f64), @Vector(8, u32), .{ + imax(u32), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u32) - 3, imax(u32) - 2, + }); + try testArgs(@Vector(16, f64), @Vector(16, u32), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u32) - 5, imax(u32) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u32) - 7, imax(u32) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f64), @Vector(32, u32), .{ + 5e2, 5e3, 5e4, imax(u32) - 9, imax(u32) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u32) - 11, imax(u32) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u32) - 13, imax(u32) - 12, 8e0, 8e1, 8e2, 8e3, imax(u32) - 15, imax(u32) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u32) - 17, imax(u32) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f64), @Vector(64, u32), .{ + 11e2, 11e3, imax(u32) - 19, imax(u32) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u32) - 21, imax(u32) - 20, 13e0, 13e1, 13e2, 13e3, imax(u32) - 23, imax(u32) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u32) - 25, imax(u32) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u32) - 27, imax(u32) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u32) - 29, imax(u32) - 28, 17e0, 17e1, 17e2, 17e3, imax(u32) - 31, imax(u32) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u32) - 33, imax(u32) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u32) - 35, imax(u32) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u32) - 37, imax(u32) - 36, 22e0, 22e1, 22e2, 22e3, imax(u32) - 39, imax(u32) - 38, + }); + try testArgs(@Vector(128, f64), @Vector(128, u32), .{ + 23e0, 23e1, 23e2, 23e3, imax(u32) - 41, imax(u32) - 40, 24e0, 24e1, + 24e2, 24e3, imax(u32) - 43, imax(u32) - 42, 25e0, 25e1, 25e2, 25e3, + imax(u32) - 45, imax(u32) - 44, 26e0, 26e1, 26e2, 26e3, imax(u32) - 47, imax(u32) - 46, + 27e0, 27e1, 27e2, 27e3, imax(u32) - 49, imax(u32) - 48, 28e0, 28e1, + 28e2, 28e3, imax(u32) - 51, imax(u32) - 50, 29e0, 29e1, 29e2, 29e3, + imax(u32) - 53, imax(u32) - 52, 31e0, 31e1, 31e2, 31e3, imax(u32) - 55, imax(u32) - 54, + 32e0, 32e1, 32e2, 32e3, imax(u32) - 57, imax(u32) - 56, 33e0, 33e1, + 33e2, 33e3, imax(u32) - 59, imax(u32) - 58, 34e0, 34e1, 34e2, 34e3, + imax(u32) - 61, imax(u32) - 60, 35e0, 35e1, 35e2, 35e3, imax(u32) - 63, imax(u32) - 62, + 36e0, 36e1, 36e2, 36e3, imax(u32) - 65, imax(u32) - 64, 37e0, 37e1, + 37e2, 37e3, imax(u32) - 67, imax(u32) - 66, 38e0, 38e1, 38e2, 38e3, + imax(u32) - 69, imax(u32) - 68, 39e0, 39e1, 39e2, 39e3, imax(u32) - 71, imax(u32) - 70, + 41e0, 41e1, 41e2, 41e3, imax(u32) - 73, imax(u32) - 72, 42e0, 42e1, + 42e2, 42e3, imax(u32) - 75, imax(u32) - 74, 43e0, 43e1, 43e2, 43e3, + imax(u32) - 77, imax(u32) - 76, 44e0, 44e1, 44e2, 44e3, imax(u32) - 79, imax(u32) - 78, + 45e0, 45e1, 45e2, 45e3, imax(u32) - 81, imax(u32) - 80, 46e0, 46e1, + }); + + try testArgs(@Vector(1, f64), @Vector(1, i64), .{ + imin(i64), + }); + try testArgs(@Vector(2, f64), @Vector(2, i64), .{ + imin(i64) + 1, -1e18, + }); + try testArgs(@Vector(4, f64), @Vector(4, i64), .{ + -1e17, -1e16, -1e15, -1e14, + }); + try testArgs(@Vector(8, f64), @Vector(8, i64), .{ + -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, -1e7, -1e6, + }); + try testArgs(@Vector(16, f64), @Vector(16, i64), .{ + -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, + }); + try testArgs(@Vector(32, f64), @Vector(32, i64), .{ + 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, + 1e17, 1e18, imax(i64) - 1, imax(i64), imin(i64) + 2, imin(i64) + 3, -2e18, -2e17, + -2e16, -2e15, -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, + -2e8, -2e7, -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(64, f64), @Vector(64, i64), .{ + -2e0, 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, + 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, + 2e15, 2e16, 2e17, 2e18, imax(i64) - 3, imax(i64) - 2, imin(i64) + 4, imin(i64) + 5, + -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, -3e11, + -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, -3e3, + -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, 3e4, + 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, + 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, imax(i64) - 5, imax(i64) - 4, + }); + try testArgs(@Vector(128, f64), @Vector(128, i64), .{ + imin(i64) + 6, imin(i64) + 7, -4e18, -4e17, -4e16, -4e15, -4e14, -4e13, + -4e12, -4e11, -4e10, -4e9, -4e8, -4e7, -4e6, -4e5, + -4e4, -4e3, -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, + 4e3, 4e4, 4e5, 4e6, 4e7, 4e8, 4e9, 4e10, + 4e11, 4e12, 4e13, 4e14, 4e15, 4e16, 4e17, 4e18, + imax(i64) - 7, imax(i64) - 6, imin(i64) + 8, imin(i64) + 9, -5e18, -5e17, -5e16, -5e15, + -5e14, -5e13, -5e12, -5e11, -5e10, -5e9, -5e8, -5e7, + -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, -5e0, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(i64) - 9, imax(i64) - 8, imin(i64) + 10, imin(i64) + 11, -6e18, -6e17, + -6e16, -6e15, -6e14, -6e13, -6e12, -6e11, -6e10, -6e9, + -6e8, -6e7, -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, + -6e0, 6e0, 6e1, 6e2, 6e3, 6e4, 6e5, 6e6, + 6e7, 6e8, 6e9, 6e10, 6e11, 6e12, 6e13, 6e14, + 6e15, 6e16, 6e17, 6e18, imax(i64) - 11, imax(i64) - 10, imin(i64) + 12, imin(i64) + 13, + }); + + try testArgs(@Vector(1, f64), @Vector(1, u64), .{ + 0, + }); + try testArgs(@Vector(2, f64), @Vector(2, u64), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f64), @Vector(4, u64), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f64), @Vector(8, u64), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f64), @Vector(16, u64), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, imax(u64) - 1, imax(u64), + 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, + }); + try testArgs(@Vector(32, f64), @Vector(32, u64), .{ + 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, + 2e16, 2e17, 2e18, imax(u64) - 3, imax(u64) - 2, 3e0, 3e1, 3e2, + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, + 3e11, 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, + }); + try testArgs(@Vector(64, f64), @Vector(64, u64), .{ + imax(u64) - 5, imax(u64) - 4, 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, + 4e6, 4e7, 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, + 4e14, 4e15, 4e16, 4e17, 4e18, imax(u64) - 7, imax(u64) - 6, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(u64) - 9, imax(u64) - 8, 6e0, 6e1, 6e2, 6e3, + 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, 6e11, + 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, imax(u64) - 11, + }); + try testArgs(@Vector(128, f64), @Vector(128, u64), .{ + imax(u64) - 10, 7e0, 7e1, 7e2, 7e3, 7e4, 7e5, 7e6, + 7e7, 7e8, 7e9, 7e10, 7e11, 7e12, 7e13, 7e14, + 7e15, 7e16, 7e17, 7e18, imax(u64) - 13, imax(u64) - 12, 8e0, 8e1, + 8e2, 8e3, 8e4, 8e5, 8e6, 8e7, 8e8, 8e9, + 8e10, 8e11, 8e12, 8e13, 8e14, 8e15, 8e16, 8e17, + 8e18, imax(u64) - 15, imax(u64) - 14, 9e0, 9e1, 9e2, 9e3, 9e4, + 9e5, 9e6, 9e7, 9e8, 9e9, 9e10, 9e11, 9e12, + 9e13, 9e14, 9e15, 9e16, 9e17, 9e18, imax(u64) - 17, imax(u64) - 16, + 11e0, 11e1, 11e2, 11e3, 11e4, 11e5, 11e6, 11e7, + 11e8, 11e9, 11e10, 11e11, 11e12, 11e13, 11e14, 11e15, + 11e16, 11e17, 11e18, imax(u64) - 19, imax(u64) - 18, 12e0, 12e1, 12e2, + 12e3, 12e4, 12e5, 12e6, 12e7, 12e8, 12e9, 12e10, + 12e11, 12e12, 12e13, 12e14, 12e15, 12e16, 12e17, 12e18, + imax(u64) - 21, imax(u64) - 20, 13e0, 13e1, 13e2, 13e3, 13e4, 13e5, + 13e6, 13e7, 13e8, 13e9, 13e10, 13e11, 13e12, 13e13, + 13e14, 13e15, 13e16, 13e17, 13e18, imax(u64) - 23, imax(u64) - 22, 14e0, + }); + + try testArgs(@Vector(1, f64), @Vector(1, i128), .{ + imin(i128), + }); + try testArgs(@Vector(2, f64), @Vector(2, i128), .{ + imin(i128) + 1, -1e38, + }); + try testArgs(@Vector(4, f64), @Vector(4, i128), .{ + -1e37, -1e36, -1e35, -1e34, + }); + try testArgs(@Vector(8, f64), @Vector(8, i128), .{ + -1e33, -1e32, -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, + }); + try testArgs(@Vector(16, f64), @Vector(16, i128), .{ + -1e25, -1e24, -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, + -1e17, -1e16, -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, + }); + try testArgs(@Vector(32, f64), @Vector(32, i128), .{ + -1e9, -1e8, -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, + -1e1, -1e0, 0, 1e0, 1e1, 1e2, 1e3, 1e4, + 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, + 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, + }); + try testArgs(@Vector(64, f64), @Vector(64, i128), .{ + 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, + 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, + 1e37, 1e38, imax(i128) - 1, imax(i128), imin(i128) + 2, imin(i128) + 3, -2e37, -2e36, + -2e35, -2e34, -2e33, -2e32, -2e31, -2e30, -2e29, -2e28, + -2e27, -2e26, -2e25, -2e24, -2e23, -2e22, -2e21, -2e20, + -2e19, -2e18, -2e17, -2e16, -2e15, -2e14, -2e13, -2e12, + -2e11, -2e10, -2e9, -2e8, -2e7, -2e6, -2e5, -2e4, + -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, 2e2, 2e3, + }); + try testArgs(@Vector(128, f64), @Vector(128, i128), .{ + 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, + 2e12, 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, + 2e20, 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, + 2e28, 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, + 2e36, 2e37, imax(i128) - 3, imax(i128) - 2, imin(i128) + 4, imin(i128) + 5, -3e37, -3e36, + -3e35, -3e34, -3e33, -3e32, -3e31, -3e30, -3e29, -3e28, + -3e27, -3e26, -3e25, -3e24, -3e23, -3e22, -3e21, -3e20, + -3e19, -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, + -3e11, -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, + -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, imax(i128) - 5, imax(i128) - 4, imin(i128) + 6, imin(i128) + 7, -4e37, -4e36, + -4e35, -4e34, -4e33, -4e32, -4e31, -4e30, -4e29, -4e28, + }); + + try testArgs(@Vector(1, f64), @Vector(1, u128), .{ + 0, + }); + try testArgs(@Vector(2, f64), @Vector(2, u128), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f64), @Vector(4, u128), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f64), @Vector(8, u128), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f64), @Vector(16, u128), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f64), @Vector(32, u128), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, imax(u128) - 1, imax(u128), 2e0, 2e1, 2e2, 2e3, 2e4, + 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, + 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, + }); + try testArgs(@Vector(64, f64), @Vector(64, u128), .{ + 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, + 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, + 2e37, 2e38, imax(u128) - 3, imax(u128) - 2, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, 3e38, imax(u128) - 5, imax(u128) - 4, 4e0, 4e1, 4e2, + }); + try testArgs(@Vector(128, f64), @Vector(128, u128), .{ + 4e3, 4e4, 4e5, 4e6, 4e7, 4e8, 4e9, 4e10, + 4e11, 4e12, 4e13, 4e14, 4e15, 4e16, 4e17, 4e18, + 4e19, 4e20, 4e21, 4e22, 4e23, 4e24, 4e25, 4e26, + 4e27, 4e28, 4e29, 4e30, 4e31, 4e32, 4e33, 4e34, + 4e35, 4e36, 4e37, imax(u128) - 7, imax(u128) - 6, 5e0, 5e1, 5e2, + 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, 5e9, 5e10, + 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, 5e17, 5e18, + 5e19, 5e20, 5e21, 5e22, 5e23, 5e24, 5e25, 5e26, + 5e27, 5e28, 5e29, 5e30, 5e31, 5e32, 5e33, 5e34, + 5e35, 5e36, 5e37, imax(u128) - 9, imax(u128) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, + 6e11, 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, + 6e19, 6e20, 6e21, 6e22, 6e23, 6e24, 6e25, 6e26, + 6e27, 6e28, 6e29, 6e30, 6e31, 6e32, 6e33, 6e34, + 6e35, 6e36, 6e37, imax(u128) - 11, imax(u128) - 10, 7e0, 7e1, 7e2, + 7e3, 7e4, 7e5, 7e6, 7e7, 7e8, 7e9, 7e10, + }); + + try testArgs(@Vector(1, f64), @Vector(1, i256), .{ + imin(i256), + }); + try testArgs(@Vector(2, f64), @Vector(2, i256), .{ + imin(i256) + 1, -1e76, + }); + try testArgs(@Vector(4, f64), @Vector(4, i256), .{ + -1e75, -1e74, -1e73, -1e72, + }); + try testArgs(@Vector(8, f64), @Vector(8, i256), .{ + -1e71, -1e70, -1e69, -1e68, -1e67, -1e66, -1e65, -1e64, + }); + try testArgs(@Vector(16, f64), @Vector(16, i256), .{ + -1e63, -1e62, -1e61, -1e60, -1e59, -1e58, -1e57, -1e56, + -1e55, -1e54, -1e53, -1e52, -1e51, -1e50, -1e49, -1e48, + }); + try testArgs(@Vector(32, f64), @Vector(32, i256), .{ + -1e47, -1e46, -1e45, -1e44, -1e43, -1e42, -1e41, -1e40, + -1e39, -1e38, -1e37, -1e36, -1e35, -1e34, -1e33, -1e32, + -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, -1e25, -1e24, + -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, -1e17, -1e16, + }); + try testArgs(@Vector(64, f64), @Vector(64, i256), .{ + -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, + -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, + 0, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, + 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, + 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, + 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, + 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, + 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, + }); + try testArgs(@Vector(128, f64), @Vector(128, i256), .{ + 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, + 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, + 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, 1e70, + 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, imax(i256) - 1, imax(i256), + imin(i256) + 2, imin(i256) + 3, -2e76, -2e75, -2e74, -2e73, -2e72, -2e71, + -2e70, -2e69, -2e68, -2e67, -2e66, -2e65, -2e64, -2e63, + -2e62, -2e61, -2e60, -2e59, -2e58, -2e57, -2e56, -2e55, + -2e54, -2e53, -2e52, -2e51, -2e50, -2e49, -2e48, -2e47, + -2e46, -2e45, -2e44, -2e43, -2e42, -2e41, -2e40, -2e39, + -2e38, -2e37, -2e36, -2e35, -2e34, -2e33, -2e32, -2e31, + -2e30, -2e29, -2e28, -2e27, -2e26, -2e25, -2e24, -2e23, + -2e22, -2e21, -2e20, -2e19, -2e18, -2e17, -2e16, -2e15, + -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, -2e8, -2e7, + -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, + 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, 2e16, + }); + + try testArgs(@Vector(1, f64), @Vector(1, u256), .{ + 0, + }); + try testArgs(@Vector(2, f64), @Vector(2, u256), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f64), @Vector(4, u256), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f64), @Vector(8, u256), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f64), @Vector(16, u256), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f64), @Vector(32, u256), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, + 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, + 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, + }); + try testArgs(@Vector(64, f64), @Vector(64, u256), .{ + 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, + 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, + imax(u256) - 1, imax(u256), 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, + 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, + 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, 2e21, + 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, 2e29, + 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, 2e37, + 2e38, 2e39, 2e40, 2e41, 2e42, 2e43, 2e44, 2e45, + }); + try testArgs(@Vector(128, f64), @Vector(128, u256), .{ + 2e46, 2e47, 2e48, 2e49, 2e50, 2e51, 2e52, 2e53, + 2e54, 2e55, 2e56, 2e57, 2e58, 2e59, 2e60, 2e61, + 2e62, 2e63, 2e64, 2e65, 2e66, 2e67, 2e68, 2e69, + 2e70, 2e71, 2e72, 2e73, 2e74, 2e75, 2e76, imax(u256) - 3, + imax(u256) - 2, 3e0, 3e1, 3e2, 3e3, 3e4, 3e5, 3e6, + 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, 3e13, 3e14, + 3e15, 3e16, 3e17, 3e18, 3e19, 3e20, 3e21, 3e22, + 3e23, 3e24, 3e25, 3e26, 3e27, 3e28, 3e29, 3e30, + 3e31, 3e32, 3e33, 3e34, 3e35, 3e36, 3e37, 3e38, + 3e39, 3e40, 3e41, 3e42, 3e43, 3e44, 3e45, 3e46, + 3e47, 3e48, 3e49, 3e50, 3e51, 3e52, 3e53, 3e54, + 3e55, 3e56, 3e57, 3e58, 3e59, 3e60, 3e61, 3e62, + 3e63, 3e64, 3e65, 3e66, 3e67, 3e68, 3e69, 3e70, + 3e71, 3e72, 3e73, 3e74, 3e75, 3e76, imax(u256) - 5, imax(u256) - 4, + 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, 4e6, 4e7, + 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, 4e14, 4e15, + }); + + try testArgs(@Vector(1, f80), @Vector(1, i8), .{ + imin(i8), + }); + try testArgs(@Vector(2, f80), @Vector(2, i8), .{ + imin(i8) + 1, -1e2, + }); + try testArgs(@Vector(4, f80), @Vector(4, i8), .{ + -1e1, -1e0, 0, 1e0, + }); + try testArgs(@Vector(8, f80), @Vector(8, i8), .{ + 1e1, 1e2, imax(i8) - 1, imax(i8), imin(i8) + 2, imin(i8) + 3, -2e1, -2e0, + }); + try testArgs(@Vector(16, f80), @Vector(16, i8), .{ + 2e0, 2e1, imax(i8) - 3, imax(i8) - 2, imin(i8) + 4, imin(i8) + 5, -3e1, -3e0, + 3e0, 3e1, imax(i8) - 5, imax(i8) - 4, imin(i8) + 6, imin(i8) + 7, -4e1, -4e0, + }); + try testArgs(@Vector(32, f80), @Vector(32, i8), .{ + 4e0, 4e1, imax(i8) - 7, imax(i8) - 6, imin(i8) + 8, imin(i8) + 9, -5e1, -5e0, + 5e0, 5e1, imax(i8) - 9, imax(i8) - 8, imin(i8) + 10, imin(i8) + 11, -6e1, -6e0, + 6e0, 6e1, imax(i8) - 11, imax(i8) - 10, imin(i8) + 12, imin(i8) + 13, -7e1, -7e0, + 7e0, 7e1, imax(i8) - 13, imax(i8) - 12, imin(i8) + 14, imin(i8) + 15, -8e1, -8e0, + }); + try testArgs(@Vector(64, f80), @Vector(64, i8), .{ + 8e0, 8e1, imax(i8) - 15, imax(i8) - 14, imin(i8) + 16, imin(i8) + 17, -9e1, -9e0, + 9e0, 9e1, imax(i8) - 17, imax(i8) - 16, imin(i8) + 18, imin(i8) + 19, -11e1, -11e0, + 11e0, 11e1, imax(i8) - 19, imax(i8) - 18, imin(i8) + 20, imin(i8) + 21, -12e1, -12e0, + 12e0, 12e1, imax(i8) - 21, imax(i8) - 20, imin(i8) + 22, imin(i8) + 23, -13e0, 13e0, + imax(i8) - 23, imax(i8) - 22, imin(i8) + 24, imin(i8) + 25, -14e0, 14e0, imax(i8) - 25, imax(i8) - 24, + imin(i8) + 26, imin(i8) + 27, -15e0, 15e0, imax(i8) - 27, imax(i8) - 26, imin(i8) + 28, imin(i8) + 29, + -16e0, 16e0, imax(i8) - 29, imax(i8) - 28, imin(i8) + 30, imin(i8) + 31, -17e0, 17e0, + imax(i8) - 31, imax(i8) - 30, imin(i8) + 32, imin(i8) + 33, -18e0, 18e0, imax(i8) - 33, imax(i8) - 32, + }); + + try testArgs(@Vector(1, f80), @Vector(1, u8), .{ + 0, + }); + try testArgs(@Vector(2, f80), @Vector(2, u8), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f80), @Vector(4, u8), .{ + 1e2, imax(u8) - 1, imax(u8), 2e0, + }); + try testArgs(@Vector(8, f80), @Vector(8, u8), .{ + 2e1, 2e2, imax(u8) - 3, imax(u8) - 2, 3e0, 3e1, imax(u8) - 5, imax(u8) - 4, + }); + try testArgs(@Vector(16, f80), @Vector(16, u8), .{ + imax(u8) - 7, imax(u8) - 6, 5e0, 5e1, imax(u8) - 9, imax(u8) - 8, 6e0, 6e1, + imax(u8) - 11, imax(u8) - 10, 7e0, 7e1, imax(u8) - 13, imax(u8) - 12, 8e0, 8e1, + }); + try testArgs(@Vector(32, f80), @Vector(32, u8), .{ + imax(u8) - 15, imax(u8) - 14, 9e0, 9e1, imax(u8) - 17, imax(u8) - 16, 11e0, 11e1, + imax(u8) - 19, imax(u8) - 18, 12e0, 12e1, imax(u8) - 21, imax(u8) - 20, 13e0, 13e1, + imax(u8) - 23, imax(u8) - 22, 14e0, 14e1, imax(u8) - 25, imax(u8) - 24, 15e0, 15e1, + imax(u8) - 27, imax(u8) - 26, 16e0, 16e1, imax(u8) - 29, imax(u8) - 28, 17e0, 17e1, + }); + try testArgs(@Vector(64, f80), @Vector(64, u8), .{ + imax(u8) - 31, imax(u8) - 30, 18e0, 18e1, imax(u8) - 33, imax(u8) - 32, 19e0, 19e1, + imax(u8) - 35, imax(u8) - 34, 21e0, 21e1, imax(u8) - 37, imax(u8) - 36, 22e0, 22e1, + imax(u8) - 39, imax(u8) - 38, 23e0, 23e1, imax(u8) - 41, imax(u8) - 40, 24e0, 24e1, + imax(u8) - 43, imax(u8) - 42, 25e0, 25e1, imax(u8) - 45, imax(u8) - 44, 26e0, imax(u8) - 47, + imax(u8) - 46, 27e0, imax(u8) - 49, imax(u8) - 48, 28e0, imax(u8) - 51, imax(u8) - 50, 29e0, + imax(u8) - 53, imax(u8) - 52, 31e0, imax(u8) - 55, imax(u8) - 54, 32e0, imax(u8) - 57, imax(u8) - 56, + 33e0, imax(u8) - 59, imax(u8) - 58, 34e0, imax(u8) - 61, imax(u8) - 60, 35e0, imax(u8) - 63, + imax(u8) - 62, 36e0, imax(u8) - 65, imax(u8) - 64, 37e0, imax(u8) - 67, imax(u8) - 66, 38e0, + }); + + try testArgs(@Vector(1, f80), @Vector(1, i16), .{ + imin(i16), + }); + try testArgs(@Vector(2, f80), @Vector(2, i16), .{ + imin(i16) + 1, -1e4, + }); + try testArgs(@Vector(4, f80), @Vector(4, i16), .{ + -1e3, -1e2, -1e1, -1e0, + }); + try testArgs(@Vector(8, f80), @Vector(8, i16), .{ + 0, 1e0, 1e1, 1e2, 1e3, 1e4, imax(i16) - 1, imax(i16), + }); + try testArgs(@Vector(16, f80), @Vector(16, i16), .{ + imin(i16) + 2, imin(i16) + 3, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, imax(i16) - 3, imax(i16) - 2, imin(i16) + 4, imin(i16) + 5, + }); + try testArgs(@Vector(32, f80), @Vector(32, i16), .{ + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + 3e3, 3e4, imax(i16) - 5, imax(i16) - 4, imin(i16) + 6, imin(i16) + 7, -4e3, -4e2, + -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, imax(i16) - 7, imax(i16) - 6, + imin(i16) + 8, imin(i16) + 9, -5e3, -5e2, -5e1, -5e0, 5e0, 5e1, + }); + try testArgs(@Vector(64, f80), @Vector(64, i16), .{ + 5e2, 5e3, imax(i16) - 9, imax(i16) - 8, imin(i16) + 10, imin(i16) + 11, -6e3, -6e2, + -6e1, -6e0, 6e0, 6e1, 6e2, 6e3, imax(i16) - 11, imax(i16) - 10, + imin(i16) + 12, imin(i16) + 13, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, + 7e2, 7e3, imax(i16) - 13, imax(i16) - 12, imin(i16) + 14, imin(i16) + 15, -8e3, -8e2, + -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, imax(i16) - 15, imax(i16) - 14, + imin(i16) + 16, imin(i16) + 17, -9e3, -9e2, -9e1, -9e0, 9e0, 9e1, + 9e2, 9e3, imax(i16) - 17, imax(i16) - 16, imin(i16) + 18, imin(i16) + 19, -11e3, -11e2, + -11e1, -11e0, 11e0, 11e1, 11e2, 11e3, imax(i16) - 19, imax(i16) - 18, + }); + + try testArgs(@Vector(1, f80), @Vector(1, u16), .{ + 0, + }); + try testArgs(@Vector(2, f80), @Vector(2, u16), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f80), @Vector(4, u16), .{ + 1e2, 1e3, 1e4, imax(u16) - 1, + }); + try testArgs(@Vector(8, f80), @Vector(8, u16), .{ + imax(u16), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u16) - 3, imax(u16) - 2, + }); + try testArgs(@Vector(16, f80), @Vector(16, u16), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u16) - 5, imax(u16) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u16) - 7, imax(u16) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f80), @Vector(32, u16), .{ + 5e2, 5e3, 5e4, imax(u16) - 9, imax(u16) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u16) - 11, imax(u16) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u16) - 13, imax(u16) - 12, 8e0, 8e1, 8e2, 8e3, imax(u16) - 15, imax(u16) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u16) - 17, imax(u16) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f80), @Vector(64, u16), .{ + 11e2, 11e3, imax(u16) - 19, imax(u16) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u16) - 21, imax(u16) - 20, 13e0, 13e1, 13e2, 13e3, imax(u16) - 23, imax(u16) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u16) - 25, imax(u16) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u16) - 27, imax(u16) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u16) - 29, imax(u16) - 28, 17e0, 17e1, 17e2, 17e3, imax(u16) - 31, imax(u16) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u16) - 33, imax(u16) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u16) - 35, imax(u16) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u16) - 37, imax(u16) - 36, 22e0, 22e1, 22e2, 22e3, imax(u16) - 39, imax(u16) - 38, + }); + + try testArgs(@Vector(1, f80), @Vector(1, i32), .{ + imin(i32), + }); + try testArgs(@Vector(2, f80), @Vector(2, i32), .{ + imin(i32) + 1, -1e9, + }); + try testArgs(@Vector(4, f80), @Vector(4, i32), .{ + -1e8, -1e7, -1e6, -1e5, + }); + try testArgs(@Vector(8, f80), @Vector(8, i32), .{ + -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, 1e1, + }); + try testArgs(@Vector(16, f80), @Vector(16, i32), .{ + 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + imax(i32) - 1, imax(i32), imin(i32) + 2, imin(i32) + 3, -2e9, -2e8, -2e7, -2e6, + }); + try testArgs(@Vector(32, f80), @Vector(32, i32), .{ + -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, + 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, + imax(i32) - 3, imax(i32) - 2, imin(i32) + 4, imin(i32) + 5, -3e8, -3e7, -3e6, -3e5, + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + }); + try testArgs(@Vector(64, f80), @Vector(64, i32), .{ + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, imax(i32) - 5, imax(i32) - 4, + imin(i32) + 6, imin(i32) + 7, -4e8, -4e7, -4e6, -4e5, -4e4, -4e3, + -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, 4e4, + 4e5, 4e6, 4e7, 4e8, imax(i32) - 7, imax(i32) - 6, imin(i32) + 8, imin(i32) + 9, + -5e8, -5e7, -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, + -5e0, 5e0, 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, + 5e7, 5e8, imax(i32) - 9, imax(i32) - 8, imin(i32) + 10, imin(i32) + 11, -6e8, -6e7, + -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, -6e0, 6e0, + }); + + try testArgs(@Vector(1, f80), @Vector(1, u32), .{ + 0, + }); + try testArgs(@Vector(2, f80), @Vector(2, u32), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f80), @Vector(4, u32), .{ + 1e2, 1e3, 1e4, imax(u32) - 1, + }); + try testArgs(@Vector(8, f80), @Vector(8, u32), .{ + imax(u32), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u32) - 3, imax(u32) - 2, + }); + try testArgs(@Vector(16, f80), @Vector(16, u32), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u32) - 5, imax(u32) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u32) - 7, imax(u32) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f80), @Vector(32, u32), .{ + 5e2, 5e3, 5e4, imax(u32) - 9, imax(u32) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u32) - 11, imax(u32) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u32) - 13, imax(u32) - 12, 8e0, 8e1, 8e2, 8e3, imax(u32) - 15, imax(u32) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u32) - 17, imax(u32) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f80), @Vector(64, u32), .{ + 11e2, 11e3, imax(u32) - 19, imax(u32) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u32) - 21, imax(u32) - 20, 13e0, 13e1, 13e2, 13e3, imax(u32) - 23, imax(u32) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u32) - 25, imax(u32) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u32) - 27, imax(u32) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u32) - 29, imax(u32) - 28, 17e0, 17e1, 17e2, 17e3, imax(u32) - 31, imax(u32) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u32) - 33, imax(u32) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u32) - 35, imax(u32) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u32) - 37, imax(u32) - 36, 22e0, 22e1, 22e2, 22e3, imax(u32) - 39, imax(u32) - 38, + }); + + try testArgs(@Vector(1, f80), @Vector(1, i64), .{ + imin(i64), + }); + try testArgs(@Vector(2, f80), @Vector(2, i64), .{ + imin(i64) + 1, -1e18, + }); + try testArgs(@Vector(4, f80), @Vector(4, i64), .{ + -1e17, -1e16, -1e15, -1e14, + }); + try testArgs(@Vector(8, f80), @Vector(8, i64), .{ + -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, -1e7, -1e6, + }); + try testArgs(@Vector(16, f80), @Vector(16, i64), .{ + -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, + }); + try testArgs(@Vector(32, f80), @Vector(32, i64), .{ + 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, + 1e17, 1e18, imax(i64) - 1, imax(i64), imin(i64) + 2, imin(i64) + 3, -2e18, -2e17, + -2e16, -2e15, -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, + -2e8, -2e7, -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(64, f80), @Vector(64, i64), .{ + -2e0, 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, + 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, + 2e15, 2e16, 2e17, 2e18, imax(i64) - 3, imax(i64) - 2, imin(i64) + 4, imin(i64) + 5, + -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, -3e11, + -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, -3e3, + -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, 3e4, + 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, + 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, imax(i64) - 5, imax(i64) - 4, + }); + + try testArgs(@Vector(1, f80), @Vector(1, u64), .{ + 0, + }); + try testArgs(@Vector(2, f80), @Vector(2, u64), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f80), @Vector(4, u64), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f80), @Vector(8, u64), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f80), @Vector(16, u64), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, imax(u64) - 1, imax(u64), + 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, + }); + try testArgs(@Vector(32, f80), @Vector(32, u64), .{ + 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, + 2e16, 2e17, 2e18, imax(u64) - 3, imax(u64) - 2, 3e0, 3e1, 3e2, + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, + 3e11, 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, + }); + try testArgs(@Vector(64, f80), @Vector(64, u64), .{ + imax(u64) - 5, imax(u64) - 4, 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, + 4e6, 4e7, 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, + 4e14, 4e15, 4e16, 4e17, 4e18, imax(u64) - 7, imax(u64) - 6, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(u64) - 9, imax(u64) - 8, 6e0, 6e1, 6e2, 6e3, + 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, 6e11, + 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, imax(u64) - 11, + }); + + try testArgs(@Vector(1, f80), @Vector(1, i128), .{ + imin(i128), + }); + try testArgs(@Vector(2, f80), @Vector(2, i128), .{ + imin(i128) + 1, -1e38, + }); + try testArgs(@Vector(4, f80), @Vector(4, i128), .{ + -1e37, -1e36, -1e35, -1e34, + }); + try testArgs(@Vector(8, f80), @Vector(8, i128), .{ + -1e33, -1e32, -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, + }); + try testArgs(@Vector(16, f80), @Vector(16, i128), .{ + -1e25, -1e24, -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, + -1e17, -1e16, -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, + }); + try testArgs(@Vector(32, f80), @Vector(32, i128), .{ + -1e9, -1e8, -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, + -1e1, -1e0, 0, 1e0, 1e1, 1e2, 1e3, 1e4, + 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, + 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, + }); + try testArgs(@Vector(64, f80), @Vector(64, i128), .{ + 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, + 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, + 1e37, 1e38, imax(i128) - 1, imax(i128), imin(i128) + 2, imin(i128) + 3, -2e37, -2e36, + -2e35, -2e34, -2e33, -2e32, -2e31, -2e30, -2e29, -2e28, + -2e27, -2e26, -2e25, -2e24, -2e23, -2e22, -2e21, -2e20, + -2e19, -2e18, -2e17, -2e16, -2e15, -2e14, -2e13, -2e12, + -2e11, -2e10, -2e9, -2e8, -2e7, -2e6, -2e5, -2e4, + -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, 2e2, 2e3, + }); + + try testArgs(@Vector(1, f80), @Vector(1, u128), .{ + 0, + }); + try testArgs(@Vector(2, f80), @Vector(2, u128), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f80), @Vector(4, u128), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f80), @Vector(8, u128), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f80), @Vector(16, u128), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f80), @Vector(32, u128), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, imax(u128) - 1, imax(u128), 2e0, 2e1, 2e2, 2e3, 2e4, + 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, + 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, + }); + try testArgs(@Vector(64, f80), @Vector(64, u128), .{ + 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, + 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, + 2e37, 2e38, imax(u128) - 3, imax(u128) - 2, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, 3e38, imax(u128) - 5, imax(u128) - 4, 4e0, 4e1, 4e2, + }); + + try testArgs(@Vector(1, f80), @Vector(1, i256), .{ + imin(i256), + }); + try testArgs(@Vector(2, f80), @Vector(2, i256), .{ + imin(i256) + 1, -1e76, + }); + try testArgs(@Vector(4, f80), @Vector(4, i256), .{ + -1e75, -1e74, -1e73, -1e72, + }); + try testArgs(@Vector(8, f80), @Vector(8, i256), .{ + -1e71, -1e70, -1e69, -1e68, -1e67, -1e66, -1e65, -1e64, + }); + try testArgs(@Vector(16, f80), @Vector(16, i256), .{ + -1e63, -1e62, -1e61, -1e60, -1e59, -1e58, -1e57, -1e56, + -1e55, -1e54, -1e53, -1e52, -1e51, -1e50, -1e49, -1e48, + }); + try testArgs(@Vector(32, f80), @Vector(32, i256), .{ + -1e47, -1e46, -1e45, -1e44, -1e43, -1e42, -1e41, -1e40, + -1e39, -1e38, -1e37, -1e36, -1e35, -1e34, -1e33, -1e32, + -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, -1e25, -1e24, + -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, -1e17, -1e16, + }); + try testArgs(@Vector(64, f80), @Vector(64, i256), .{ + -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, + -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, + 0, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, + 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, + 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, + 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, + 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, + 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, + }); + + try testArgs(@Vector(1, f80), @Vector(1, u256), .{ + 0, + }); + try testArgs(@Vector(2, f80), @Vector(2, u256), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f80), @Vector(4, u256), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f80), @Vector(8, u256), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f80), @Vector(16, u256), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f80), @Vector(32, u256), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, + 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, + 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, + }); + try testArgs(@Vector(64, f80), @Vector(64, u256), .{ + 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, + 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, + imax(u256) - 1, imax(u256), 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, + 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, + 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, 2e21, + 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, 2e29, + 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, 2e37, + 2e38, 2e39, 2e40, 2e41, 2e42, 2e43, 2e44, 2e45, + }); + + try testArgs(@Vector(1, f128), @Vector(1, i8), .{ + imin(i8), + }); + try testArgs(@Vector(2, f128), @Vector(2, i8), .{ + imin(i8) + 1, -1e2, + }); + try testArgs(@Vector(4, f128), @Vector(4, i8), .{ + -1e1, -1e0, 0, 1e0, + }); + try testArgs(@Vector(8, f128), @Vector(8, i8), .{ + 1e1, 1e2, imax(i8) - 1, imax(i8), imin(i8) + 2, imin(i8) + 3, -2e1, -2e0, + }); + try testArgs(@Vector(16, f128), @Vector(16, i8), .{ + 2e0, 2e1, imax(i8) - 3, imax(i8) - 2, imin(i8) + 4, imin(i8) + 5, -3e1, -3e0, + 3e0, 3e1, imax(i8) - 5, imax(i8) - 4, imin(i8) + 6, imin(i8) + 7, -4e1, -4e0, + }); + try testArgs(@Vector(32, f128), @Vector(32, i8), .{ + 4e0, 4e1, imax(i8) - 7, imax(i8) - 6, imin(i8) + 8, imin(i8) + 9, -5e1, -5e0, + 5e0, 5e1, imax(i8) - 9, imax(i8) - 8, imin(i8) + 10, imin(i8) + 11, -6e1, -6e0, + 6e0, 6e1, imax(i8) - 11, imax(i8) - 10, imin(i8) + 12, imin(i8) + 13, -7e1, -7e0, + 7e0, 7e1, imax(i8) - 13, imax(i8) - 12, imin(i8) + 14, imin(i8) + 15, -8e1, -8e0, + }); + try testArgs(@Vector(64, f128), @Vector(64, i8), .{ + 8e0, 8e1, imax(i8) - 15, imax(i8) - 14, imin(i8) + 16, imin(i8) + 17, -9e1, -9e0, + 9e0, 9e1, imax(i8) - 17, imax(i8) - 16, imin(i8) + 18, imin(i8) + 19, -11e1, -11e0, + 11e0, 11e1, imax(i8) - 19, imax(i8) - 18, imin(i8) + 20, imin(i8) + 21, -12e1, -12e0, + 12e0, 12e1, imax(i8) - 21, imax(i8) - 20, imin(i8) + 22, imin(i8) + 23, -13e0, 13e0, + imax(i8) - 23, imax(i8) - 22, imin(i8) + 24, imin(i8) + 25, -14e0, 14e0, imax(i8) - 25, imax(i8) - 24, + imin(i8) + 26, imin(i8) + 27, -15e0, 15e0, imax(i8) - 27, imax(i8) - 26, imin(i8) + 28, imin(i8) + 29, + -16e0, 16e0, imax(i8) - 29, imax(i8) - 28, imin(i8) + 30, imin(i8) + 31, -17e0, 17e0, + imax(i8) - 31, imax(i8) - 30, imin(i8) + 32, imin(i8) + 33, -18e0, 18e0, imax(i8) - 33, imax(i8) - 32, + }); + + try testArgs(@Vector(1, f128), @Vector(1, u8), .{ + 0, + }); + try testArgs(@Vector(2, f128), @Vector(2, u8), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f128), @Vector(4, u8), .{ + 1e2, imax(u8) - 1, imax(u8), 2e0, + }); + try testArgs(@Vector(8, f128), @Vector(8, u8), .{ + 2e1, 2e2, imax(u8) - 3, imax(u8) - 2, 3e0, 3e1, imax(u8) - 5, imax(u8) - 4, + }); + try testArgs(@Vector(16, f128), @Vector(16, u8), .{ + imax(u8) - 7, imax(u8) - 6, 5e0, 5e1, imax(u8) - 9, imax(u8) - 8, 6e0, 6e1, + imax(u8) - 11, imax(u8) - 10, 7e0, 7e1, imax(u8) - 13, imax(u8) - 12, 8e0, 8e1, + }); + try testArgs(@Vector(32, f128), @Vector(32, u8), .{ + imax(u8) - 15, imax(u8) - 14, 9e0, 9e1, imax(u8) - 17, imax(u8) - 16, 11e0, 11e1, + imax(u8) - 19, imax(u8) - 18, 12e0, 12e1, imax(u8) - 21, imax(u8) - 20, 13e0, 13e1, + imax(u8) - 23, imax(u8) - 22, 14e0, 14e1, imax(u8) - 25, imax(u8) - 24, 15e0, 15e1, + imax(u8) - 27, imax(u8) - 26, 16e0, 16e1, imax(u8) - 29, imax(u8) - 28, 17e0, 17e1, + }); + try testArgs(@Vector(64, f128), @Vector(64, u8), .{ + imax(u8) - 31, imax(u8) - 30, 18e0, 18e1, imax(u8) - 33, imax(u8) - 32, 19e0, 19e1, + imax(u8) - 35, imax(u8) - 34, 21e0, 21e1, imax(u8) - 37, imax(u8) - 36, 22e0, 22e1, + imax(u8) - 39, imax(u8) - 38, 23e0, 23e1, imax(u8) - 41, imax(u8) - 40, 24e0, 24e1, + imax(u8) - 43, imax(u8) - 42, 25e0, 25e1, imax(u8) - 45, imax(u8) - 44, 26e0, imax(u8) - 47, + imax(u8) - 46, 27e0, imax(u8) - 49, imax(u8) - 48, 28e0, imax(u8) - 51, imax(u8) - 50, 29e0, + imax(u8) - 53, imax(u8) - 52, 31e0, imax(u8) - 55, imax(u8) - 54, 32e0, imax(u8) - 57, imax(u8) - 56, + 33e0, imax(u8) - 59, imax(u8) - 58, 34e0, imax(u8) - 61, imax(u8) - 60, 35e0, imax(u8) - 63, + imax(u8) - 62, 36e0, imax(u8) - 65, imax(u8) - 64, 37e0, imax(u8) - 67, imax(u8) - 66, 38e0, + }); + + try testArgs(@Vector(1, f128), @Vector(1, i16), .{ + imin(i16), + }); + try testArgs(@Vector(2, f128), @Vector(2, i16), .{ + imin(i16) + 1, -1e4, + }); + try testArgs(@Vector(4, f128), @Vector(4, i16), .{ + -1e3, -1e2, -1e1, -1e0, + }); + try testArgs(@Vector(8, f128), @Vector(8, i16), .{ + 0, 1e0, 1e1, 1e2, 1e3, 1e4, imax(i16) - 1, imax(i16), + }); + try testArgs(@Vector(16, f128), @Vector(16, i16), .{ + imin(i16) + 2, imin(i16) + 3, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, + 2e1, 2e2, 2e3, 2e4, imax(i16) - 3, imax(i16) - 2, imin(i16) + 4, imin(i16) + 5, + }); + try testArgs(@Vector(32, f128), @Vector(32, i16), .{ + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + 3e3, 3e4, imax(i16) - 5, imax(i16) - 4, imin(i16) + 6, imin(i16) + 7, -4e3, -4e2, + -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, imax(i16) - 7, imax(i16) - 6, + imin(i16) + 8, imin(i16) + 9, -5e3, -5e2, -5e1, -5e0, 5e0, 5e1, + }); + try testArgs(@Vector(64, f128), @Vector(64, i16), .{ + 5e2, 5e3, imax(i16) - 9, imax(i16) - 8, imin(i16) + 10, imin(i16) + 11, -6e3, -6e2, + -6e1, -6e0, 6e0, 6e1, 6e2, 6e3, imax(i16) - 11, imax(i16) - 10, + imin(i16) + 12, imin(i16) + 13, -7e3, -7e2, -7e1, -7e0, 7e0, 7e1, + 7e2, 7e3, imax(i16) - 13, imax(i16) - 12, imin(i16) + 14, imin(i16) + 15, -8e3, -8e2, + -8e1, -8e0, 8e0, 8e1, 8e2, 8e3, imax(i16) - 15, imax(i16) - 14, + imin(i16) + 16, imin(i16) + 17, -9e3, -9e2, -9e1, -9e0, 9e0, 9e1, + 9e2, 9e3, imax(i16) - 17, imax(i16) - 16, imin(i16) + 18, imin(i16) + 19, -11e3, -11e2, + -11e1, -11e0, 11e0, 11e1, 11e2, 11e3, imax(i16) - 19, imax(i16) - 18, + }); + + try testArgs(@Vector(1, f128), @Vector(1, u16), .{ + 0, + }); + try testArgs(@Vector(2, f128), @Vector(2, u16), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f128), @Vector(4, u16), .{ + 1e2, 1e3, 1e4, imax(u16) - 1, + }); + try testArgs(@Vector(8, f128), @Vector(8, u16), .{ + imax(u16), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u16) - 3, imax(u16) - 2, + }); + try testArgs(@Vector(16, f128), @Vector(16, u16), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u16) - 5, imax(u16) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u16) - 7, imax(u16) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f128), @Vector(32, u16), .{ + 5e2, 5e3, 5e4, imax(u16) - 9, imax(u16) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u16) - 11, imax(u16) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u16) - 13, imax(u16) - 12, 8e0, 8e1, 8e2, 8e3, imax(u16) - 15, imax(u16) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u16) - 17, imax(u16) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f128), @Vector(64, u16), .{ + 11e2, 11e3, imax(u16) - 19, imax(u16) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u16) - 21, imax(u16) - 20, 13e0, 13e1, 13e2, 13e3, imax(u16) - 23, imax(u16) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u16) - 25, imax(u16) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u16) - 27, imax(u16) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u16) - 29, imax(u16) - 28, 17e0, 17e1, 17e2, 17e3, imax(u16) - 31, imax(u16) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u16) - 33, imax(u16) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u16) - 35, imax(u16) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u16) - 37, imax(u16) - 36, 22e0, 22e1, 22e2, 22e3, imax(u16) - 39, imax(u16) - 38, + }); + + try testArgs(@Vector(1, f128), @Vector(1, i32), .{ + imin(i32), + }); + try testArgs(@Vector(2, f128), @Vector(2, i32), .{ + imin(i32) + 1, -1e9, + }); + try testArgs(@Vector(4, f128), @Vector(4, i32), .{ + -1e8, -1e7, -1e6, -1e5, + }); + try testArgs(@Vector(8, f128), @Vector(8, i32), .{ + -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, 1e1, + }); + try testArgs(@Vector(16, f128), @Vector(16, i32), .{ + 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + imax(i32) - 1, imax(i32), imin(i32) + 2, imin(i32) + 3, -2e9, -2e8, -2e7, -2e6, + }); + try testArgs(@Vector(32, f128), @Vector(32, i32), .{ + -2e5, -2e4, -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, + 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, 2e8, 2e9, + imax(i32) - 3, imax(i32) - 2, imin(i32) + 4, imin(i32) + 5, -3e8, -3e7, -3e6, -3e5, + -3e4, -3e3, -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, + }); + try testArgs(@Vector(64, f128), @Vector(64, i32), .{ + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, imax(i32) - 5, imax(i32) - 4, + imin(i32) + 6, imin(i32) + 7, -4e8, -4e7, -4e6, -4e5, -4e4, -4e3, + -4e2, -4e1, -4e0, 4e0, 4e1, 4e2, 4e3, 4e4, + 4e5, 4e6, 4e7, 4e8, imax(i32) - 7, imax(i32) - 6, imin(i32) + 8, imin(i32) + 9, + -5e8, -5e7, -5e6, -5e5, -5e4, -5e3, -5e2, -5e1, + -5e0, 5e0, 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, + 5e7, 5e8, imax(i32) - 9, imax(i32) - 8, imin(i32) + 10, imin(i32) + 11, -6e8, -6e7, + -6e6, -6e5, -6e4, -6e3, -6e2, -6e1, -6e0, 6e0, + }); + + try testArgs(@Vector(1, f128), @Vector(1, u32), .{ + 0, + }); + try testArgs(@Vector(2, f128), @Vector(2, u32), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f128), @Vector(4, u32), .{ + 1e2, 1e3, 1e4, imax(u32) - 1, + }); + try testArgs(@Vector(8, f128), @Vector(8, u32), .{ + imax(u32), 2e0, 2e1, 2e2, 2e3, 2e4, imax(u32) - 3, imax(u32) - 2, + }); + try testArgs(@Vector(16, f128), @Vector(16, u32), .{ + 3e0, 3e1, 3e2, 3e3, 3e4, imax(u32) - 5, imax(u32) - 4, 4e0, + 4e1, 4e2, 4e3, 4e4, imax(u32) - 7, imax(u32) - 6, 5e0, 5e1, + }); + try testArgs(@Vector(32, f128), @Vector(32, u32), .{ + 5e2, 5e3, 5e4, imax(u32) - 9, imax(u32) - 8, 6e0, 6e1, 6e2, + 6e3, 6e4, imax(u32) - 11, imax(u32) - 10, 7e0, 7e1, 7e2, 7e3, + imax(u32) - 13, imax(u32) - 12, 8e0, 8e1, 8e2, 8e3, imax(u32) - 15, imax(u32) - 14, + 9e0, 9e1, 9e2, 9e3, imax(u32) - 17, imax(u32) - 16, 11e0, 11e1, + }); + try testArgs(@Vector(64, f128), @Vector(64, u32), .{ + 11e2, 11e3, imax(u32) - 19, imax(u32) - 18, 12e0, 12e1, 12e2, 12e3, + imax(u32) - 21, imax(u32) - 20, 13e0, 13e1, 13e2, 13e3, imax(u32) - 23, imax(u32) - 22, + 14e0, 14e1, 14e2, 14e3, imax(u32) - 25, imax(u32) - 24, 15e0, 15e1, + 15e2, 15e3, imax(u32) - 27, imax(u32) - 26, 16e0, 16e1, 16e2, 16e3, + imax(u32) - 29, imax(u32) - 28, 17e0, 17e1, 17e2, 17e3, imax(u32) - 31, imax(u32) - 30, + 18e0, 18e1, 18e2, 18e3, imax(u32) - 33, imax(u32) - 32, 19e0, 19e1, + 19e2, 19e3, imax(u32) - 35, imax(u32) - 34, 21e0, 21e1, 21e2, 21e3, + imax(u32) - 37, imax(u32) - 36, 22e0, 22e1, 22e2, 22e3, imax(u32) - 39, imax(u32) - 38, + }); + + try testArgs(@Vector(1, f128), @Vector(1, i64), .{ + imin(i64), + }); + try testArgs(@Vector(2, f128), @Vector(2, i64), .{ + imin(i64) + 1, -1e18, + }); + try testArgs(@Vector(4, f128), @Vector(4, i64), .{ + -1e17, -1e16, -1e15, -1e14, + }); + try testArgs(@Vector(8, f128), @Vector(8, i64), .{ + -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, -1e7, -1e6, + }); + try testArgs(@Vector(16, f128), @Vector(16, i64), .{ + -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, 0, 1e0, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, + }); + try testArgs(@Vector(32, f128), @Vector(32, i64), .{ + 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, + 1e17, 1e18, imax(i64) - 1, imax(i64), imin(i64) + 2, imin(i64) + 3, -2e18, -2e17, + -2e16, -2e15, -2e14, -2e13, -2e12, -2e11, -2e10, -2e9, + -2e8, -2e7, -2e6, -2e5, -2e4, -2e3, -2e2, -2e1, + }); + try testArgs(@Vector(64, f128), @Vector(64, i64), .{ + -2e0, 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, + 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, + 2e15, 2e16, 2e17, 2e18, imax(i64) - 3, imax(i64) - 2, imin(i64) + 4, imin(i64) + 5, + -3e18, -3e17, -3e16, -3e15, -3e14, -3e13, -3e12, -3e11, + -3e10, -3e9, -3e8, -3e7, -3e6, -3e5, -3e4, -3e3, + -3e2, -3e1, -3e0, 3e0, 3e1, 3e2, 3e3, 3e4, + 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, 3e12, + 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, imax(i64) - 5, imax(i64) - 4, + }); + + try testArgs(@Vector(1, f128), @Vector(1, u64), .{ + 0, + }); + try testArgs(@Vector(2, f128), @Vector(2, u64), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f128), @Vector(4, u64), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f128), @Vector(8, u64), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f128), @Vector(16, u64), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, imax(u64) - 1, imax(u64), + 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, 2e6, 2e7, + }); + try testArgs(@Vector(32, f128), @Vector(32, u64), .{ + 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, 2e14, 2e15, + 2e16, 2e17, 2e18, imax(u64) - 3, imax(u64) - 2, 3e0, 3e1, 3e2, + 3e3, 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, + 3e11, 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, + }); + try testArgs(@Vector(64, f128), @Vector(64, u64), .{ + imax(u64) - 5, imax(u64) - 4, 4e0, 4e1, 4e2, 4e3, 4e4, 4e5, + 4e6, 4e7, 4e8, 4e9, 4e10, 4e11, 4e12, 4e13, + 4e14, 4e15, 4e16, 4e17, 4e18, imax(u64) - 7, imax(u64) - 6, 5e0, + 5e1, 5e2, 5e3, 5e4, 5e5, 5e6, 5e7, 5e8, + 5e9, 5e10, 5e11, 5e12, 5e13, 5e14, 5e15, 5e16, + 5e17, 5e18, imax(u64) - 9, imax(u64) - 8, 6e0, 6e1, 6e2, 6e3, + 6e4, 6e5, 6e6, 6e7, 6e8, 6e9, 6e10, 6e11, + 6e12, 6e13, 6e14, 6e15, 6e16, 6e17, 6e18, imax(u64) - 11, + }); + + try testArgs(@Vector(1, f128), @Vector(1, i128), .{ + imin(i128), + }); + try testArgs(@Vector(2, f128), @Vector(2, i128), .{ + imin(i128) + 1, -1e38, + }); + try testArgs(@Vector(4, f128), @Vector(4, i128), .{ + -1e37, -1e36, -1e35, -1e34, + }); + try testArgs(@Vector(8, f128), @Vector(8, i128), .{ + -1e33, -1e32, -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, + }); + try testArgs(@Vector(16, f128), @Vector(16, i128), .{ + -1e25, -1e24, -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, + -1e17, -1e16, -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, + }); + try testArgs(@Vector(32, f128), @Vector(32, i128), .{ + -1e9, -1e8, -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, + -1e1, -1e0, 0, 1e0, 1e1, 1e2, 1e3, 1e4, + 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, + 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, + }); + try testArgs(@Vector(64, f128), @Vector(64, i128), .{ + 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, + 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, + 1e37, 1e38, imax(i128) - 1, imax(i128), imin(i128) + 2, imin(i128) + 3, -2e37, -2e36, + -2e35, -2e34, -2e33, -2e32, -2e31, -2e30, -2e29, -2e28, + -2e27, -2e26, -2e25, -2e24, -2e23, -2e22, -2e21, -2e20, + -2e19, -2e18, -2e17, -2e16, -2e15, -2e14, -2e13, -2e12, + -2e11, -2e10, -2e9, -2e8, -2e7, -2e6, -2e5, -2e4, + -2e3, -2e2, -2e1, -2e0, 2e0, 2e1, 2e2, 2e3, + }); + + try testArgs(@Vector(1, f128), @Vector(1, u128), .{ + 0, + }); + try testArgs(@Vector(2, f128), @Vector(2, u128), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f128), @Vector(4, u128), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f128), @Vector(8, u128), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f128), @Vector(16, u128), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f128), @Vector(32, u128), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, imax(u128) - 1, imax(u128), 2e0, 2e1, 2e2, 2e3, 2e4, + 2e5, 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, + 2e13, 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, + }); + try testArgs(@Vector(64, f128), @Vector(64, u128), .{ + 2e21, 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, + 2e29, 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, + 2e37, 2e38, imax(u128) - 3, imax(u128) - 2, 3e0, 3e1, 3e2, 3e3, + 3e4, 3e5, 3e6, 3e7, 3e8, 3e9, 3e10, 3e11, + 3e12, 3e13, 3e14, 3e15, 3e16, 3e17, 3e18, 3e19, + 3e20, 3e21, 3e22, 3e23, 3e24, 3e25, 3e26, 3e27, + 3e28, 3e29, 3e30, 3e31, 3e32, 3e33, 3e34, 3e35, + 3e36, 3e37, 3e38, imax(u128) - 5, imax(u128) - 4, 4e0, 4e1, 4e2, + }); + + try testArgs(@Vector(1, f128), @Vector(1, i256), .{ + imin(i256), + }); + try testArgs(@Vector(2, f128), @Vector(2, i256), .{ + imin(i256) + 1, -1e76, + }); + try testArgs(@Vector(4, f128), @Vector(4, i256), .{ + -1e75, -1e74, -1e73, -1e72, + }); + try testArgs(@Vector(8, f128), @Vector(8, i256), .{ + -1e71, -1e70, -1e69, -1e68, -1e67, -1e66, -1e65, -1e64, + }); + try testArgs(@Vector(16, f128), @Vector(16, i256), .{ + -1e63, -1e62, -1e61, -1e60, -1e59, -1e58, -1e57, -1e56, + -1e55, -1e54, -1e53, -1e52, -1e51, -1e50, -1e49, -1e48, + }); + try testArgs(@Vector(32, f128), @Vector(32, i256), .{ + -1e47, -1e46, -1e45, -1e44, -1e43, -1e42, -1e41, -1e40, + -1e39, -1e38, -1e37, -1e36, -1e35, -1e34, -1e33, -1e32, + -1e31, -1e30, -1e29, -1e28, -1e27, -1e26, -1e25, -1e24, + -1e23, -1e22, -1e21, -1e20, -1e19, -1e18, -1e17, -1e16, + }); + try testArgs(@Vector(64, f128), @Vector(64, i256), .{ + -1e15, -1e14, -1e13, -1e12, -1e11, -1e10, -1e9, -1e8, + -1e7, -1e6, -1e5, -1e4, -1e3, -1e2, -1e1, -1e0, + 0, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, + 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, + 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, + 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, + 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, + 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, + }); + + try testArgs(@Vector(1, f128), @Vector(1, u256), .{ + 0, + }); + try testArgs(@Vector(2, f128), @Vector(2, u256), .{ + 1e0, 1e1, + }); + try testArgs(@Vector(4, f128), @Vector(4, u256), .{ + 1e2, 1e3, 1e4, 1e5, + }); + try testArgs(@Vector(8, f128), @Vector(8, u256), .{ + 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, + }); + try testArgs(@Vector(16, f128), @Vector(16, u256), .{ + 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, + 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + }); + try testArgs(@Vector(32, f128), @Vector(32, u256), .{ + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, + 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, + 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, + 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, + }); + try testArgs(@Vector(64, f128), @Vector(64, u256), .{ + 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, + 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, + imax(u256) - 1, imax(u256), 2e0, 2e1, 2e2, 2e3, 2e4, 2e5, + 2e6, 2e7, 2e8, 2e9, 2e10, 2e11, 2e12, 2e13, + 2e14, 2e15, 2e16, 2e17, 2e18, 2e19, 2e20, 2e21, + 2e22, 2e23, 2e24, 2e25, 2e26, 2e27, 2e28, 2e29, + 2e30, 2e31, 2e32, 2e33, 2e34, 2e35, 2e36, 2e37, + 2e38, 2e39, 2e40, 2e41, 2e42, 2e43, 2e44, 2e45, + }); + } }; } @@ -14002,6 +19336,7 @@ inline fn intFromFloat(comptime Result: type, comptime Type: type, rhs: Type, co test intFromFloat { const test_int_from_float = cast(intFromFloat, .{ .compare = .strict }); try test_int_from_float.testIntsFromFloats(); + try test_int_from_float.testIntVectorsFromFloatVectors(); } inline fn floatFromInt(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result { @@ -14010,6 +19345,7 @@ inline fn floatFromInt(comptime Result: type, comptime Type: type, rhs: Type, co test floatFromInt { const test_float_from_int = cast(floatFromInt, .{ .compare = .strict }); try test_float_from_int.testFloatsFromInts(); + try test_float_from_int.testFloatVectorsFromIntVectors(); } inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {