diff --git a/lib/std/simd.zig b/lib/std/simd.zig index a07f58ec8a..2c2b92e36e 100644 --- a/lib/std/simd.zig +++ b/lib/std/simd.zig @@ -368,7 +368,8 @@ pub fn countElementsWithValue(vec: anytype, value: std.meta.Child(@TypeOf(vec))) } test "vector searching" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64 and + !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .ssse3)) return error.SkipZigTest; const base = @Vector(8, u32){ 6, 4, 7, 4, 4, 2, 3, 7 }; diff --git a/lib/std/zig/Zir.zig b/lib/std/zig/Zir.zig index 5eb1ec3f3a..937b399a5d 100644 --- a/lib/std/zig/Zir.zig +++ b/lib/std/zig/Zir.zig @@ -2142,7 +2142,7 @@ pub const Inst = struct { ref_start_index = static_len, _, - pub const static_len = 117; + pub const static_len = 118; pub fn toRef(i: Index) Inst.Ref { return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i)); @@ -2246,6 +2246,7 @@ pub const Inst = struct { vector_8_u16_type, vector_16_u16_type, vector_32_u16_type, + vector_2_i32_type, vector_4_i32_type, vector_8_i32_type, vector_16_i32_type, diff --git a/src/Air.zig b/src/Air.zig index b5078a7748..409a040f1c 100644 --- a/src/Air.zig +++ b/src/Air.zig @@ -1029,6 +1029,7 @@ pub const Inst = struct { vector_8_u16_type = @intFromEnum(InternPool.Index.vector_8_u16_type), vector_16_u16_type = @intFromEnum(InternPool.Index.vector_16_u16_type), vector_32_u16_type = @intFromEnum(InternPool.Index.vector_32_u16_type), + vector_2_i32_type = @intFromEnum(InternPool.Index.vector_2_i32_type), vector_4_i32_type = @intFromEnum(InternPool.Index.vector_4_i32_type), vector_8_i32_type = @intFromEnum(InternPool.Index.vector_8_i32_type), vector_16_i32_type = @intFromEnum(InternPool.Index.vector_16_i32_type), diff --git a/src/InternPool.zig b/src/InternPool.zig index 0a6a4c0f76..f5fb33ede9 100644 --- a/src/InternPool.zig +++ b/src/InternPool.zig @@ -4606,6 +4606,7 @@ pub const Index = enum(u32) { vector_8_u16_type, vector_16_u16_type, vector_32_u16_type, + vector_2_i32_type, vector_4_i32_type, vector_8_i32_type, vector_16_i32_type, @@ -5168,6 +5169,8 @@ pub const static_keys: [static_len]Key = .{ .{ .vector_type = .{ .len = 16, .child = .u16_type } }, // @Vector(32, u16) .{ .vector_type = .{ .len = 32, .child = .u16_type } }, + // @Vector(2, i32) + .{ .vector_type = .{ .len = 2, .child = .i32_type } }, // @Vector(4, i32) .{ .vector_type = .{ .len = 4, .child = .i32_type } }, // @Vector(8, i32) @@ -11870,6 +11873,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index { .vector_8_u16_type, .vector_16_u16_type, .vector_32_u16_type, + .vector_2_i32_type, .vector_4_i32_type, .vector_8_i32_type, .vector_16_i32_type, @@ -12210,6 +12214,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId { .vector_8_u16_type, .vector_16_u16_type, .vector_32_u16_type, + .vector_2_i32_type, .vector_4_i32_type, .vector_8_i32_type, .vector_16_i32_type, diff --git a/src/Sema.zig b/src/Sema.zig index 95f968a346..967fa3a23e 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -36562,6 +36562,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value { .vector_8_u16_type, .vector_16_u16_type, .vector_32_u16_type, + .vector_2_i32_type, .vector_4_i32_type, .vector_8_i32_type, .vector_16_i32_type, diff --git a/src/Type.zig b/src/Type.zig index 7988033501..f957a41808 100644 --- a/src/Type.zig +++ b/src/Type.zig @@ -4127,6 +4127,7 @@ pub const vector_4_u16: Type = .{ .ip_index = .vector_4_u16_type }; pub const vector_8_u16: Type = .{ .ip_index = .vector_8_u16_type }; pub const vector_16_u16: Type = .{ .ip_index = .vector_16_u16_type }; pub const vector_32_u16: Type = .{ .ip_index = .vector_32_u16_type }; +pub const vector_2_i32: Type = .{ .ip_index = .vector_2_i32_type }; pub const vector_4_i32: Type = .{ .ip_index = .vector_4_i32_type }; pub const vector_8_i32: Type = .{ .ip_index = .vector_8_i32_type }; pub const vector_16_i32: Type = .{ .ip_index = .vector_16_i32_type }; diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index ca79f995a0..9300aaa37c 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -2389,7 +2389,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { } fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { - @setEvalBranchQuota(25_200); + @setEvalBranchQuota(26_500); const pt = cg.pt; const zcu = pt.zcu; const ip = &zcu.intern_pool; @@ -117441,8 +117441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { const res_ty = cg.typeOfIndex(inst); switch (reduce.operation) { .And, .Or, .Xor => {}, - .Min => if (cg.floatBits(res_ty)) |_| break :fallback try cg.airReduce(inst), - .Max => break :fallback try cg.airReduce(inst), + .Min, .Max => if (cg.floatBits(res_ty)) |_| break :fallback try cg.airReduce(inst), .Add, .Mul => {}, } var ops = try cg.tempsFromOperands(inst, .{reduce.operand}); @@ -125052,7 +125051,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._g, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nl, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -125083,7 +125082,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._g, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nl, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, } }, @@ -125114,7 +125113,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._ng, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._l, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(1), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -125145,7 +125144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._ng, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._l, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._c, .de, .tmp0d, ._, ._, ._ }, .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, @@ -125177,7 +125176,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._a, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nb, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -125208,7 +125207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._a, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nb, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, } }, @@ -125239,7 +125238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(1), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -125270,7 +125269,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, - .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._c, .de, .tmp0d, ._, ._, ._ }, .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, @@ -125895,7 +125894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_w, .sub, .dst0x, .tmp3x, ._, ._ }, } }, }, .{ - .required_features = .{ .avx, null, null, null }, + .required_features = .{ .avx2, null, null, null }, .dst_constraints = .{ .{ .signed_int = .word }, .any }, .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, .patterns = &.{ @@ -125903,7 +125902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -125917,7 +125916,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp2x, .lea(.tmp0w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .src0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp2x, .lea(.tmp0d), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .src0x, .tmp2x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, @@ -125931,7 +125958,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .extra_temps = .{ .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -125945,7 +125972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .dst_temps = .{ .{ .ref = .src0 }, .unused }, .each = .{ .once = &.{ .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, - .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, @@ -126168,7 +126195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .extra_temps = .{ .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126183,7 +126210,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, .{ ._, .vp_w, .mins, .dst0x, .src0x, .tmp0x, ._ }, .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp0x, .lea(.tmp1x), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp0x, .lea(.tmp1w), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, @@ -126198,7 +126225,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .extra_temps = .{ .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126213,7 +126240,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, .{ ._, .vp_w, .mins, .dst0x, .src0x, .tmp0x, ._ }, .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp0x, .lea(.tmp1x), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp0x, .lea(.tmp1d), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, @@ -126348,7 +126375,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .extra_temps = .{ .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126365,7 +126392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, .{ ._, .vp_w, .mins, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp0x, .lea(.tmp1x), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp0x, .lea(.tmp1w), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, @@ -126408,7 +126435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126429,7 +126456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, .{ ._, .vp_w, .mins, .dst0x, .dst0x, .tmp1x, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp1x, .lea(.tmp0w), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, @@ -126443,7 +126470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -126463,7 +126490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp2x, .lea(.tmp0d), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, @@ -126477,7 +126504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -126497,7 +126524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, - .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, @@ -126684,7 +126711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, .{ .type = .vector_32_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smax } } }, .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126712,7 +126739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, .{ ._, .vp_w, .mins, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp3x, .lea(.tmp0x), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp3x, .lea(.tmp0w), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, @@ -126729,7 +126756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, .{ .type = .vector_16_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smax } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126752,7 +126779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, .{ ._, .vp_w, .mins, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp3x, .lea(.tmp0x), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp3x, .lea(.tmp0w), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, @@ -126769,7 +126796,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, .{ .type = .vector_16_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smax } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .unused, .unused, .unused, @@ -126792,7 +126819,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, - .{ ._, .v_dqa, .mov, .tmp3x, .lea(.tmp0x), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp3x, .lea(.tmp0d), ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, @@ -126808,7 +126835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smax } } }, - .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -126830,7 +126857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, - .{ ._, ._dqa, .mov, .tmp4x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .movddup, .tmp4x, .lea(.tmp0q), ._, ._ }, .{ ._, .p_, .xor, .dst0x, .tmp4x, ._, ._ }, .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, .{ ._, .p_, .xor, .dst0x, .tmp4x, ._, ._ }, @@ -127084,7 +127111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movsx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._g, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nl, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -127114,7 +127141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movsx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._ng, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._l, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(2), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -127146,7 +127173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movzx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._a, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nb, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -127176,7 +127203,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movzx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(2), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -127310,6 +127337,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, .{ ._, .p_d, .minu, .dst0x, .tmp0x, ._, ._ }, } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, }, .{ .required_features = .{ .sse2, null, null, null }, .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, @@ -127486,6 +127546,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b11_10), ._ }, .{ ._, .p_d, .minu, .dst0x, .tmp0x, ._, ._ }, } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp3x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"or", .tmp3x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, }, .{ .required_features = .{ .sse2, null, null, null }, .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, @@ -127668,6 +127767,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, .{ ._, .p_d, .minu, .dst0x, .tmp0x, ._, ._ }, } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .src0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, }, .{ .required_features = .{ .sse2, null, null, null }, .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, @@ -128334,6 +128472,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, .{ ._, .p_d, .minu, .dst0x, .tmp1x, ._, ._ }, } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, }, .{ .required_features = .{ .sse2, null, null, null }, .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, @@ -128744,6 +128933,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, .{ ._, .p_d, .minu, .dst0x, .tmp2x, ._, ._ }, } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp4x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, }, .{ .required_features = .{ .sse2, null, null, null }, .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, @@ -128771,8 +129013,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, - .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ }, .{ ._, .p_, .xor, .tmp4x, .tmp2x, ._, ._ }, @@ -128824,7 +129066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._g, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nl, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -128854,7 +129096,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._ng, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._l, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(4), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -128886,7 +129128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._a, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nb, .cmov, .dst0d, .tmp1d, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -128916,7 +129158,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, - .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(4), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -128974,6 +129216,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .p_q, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, .{ ._, .p_b, .blendv, .dst0x, .tmp0x, .tmp1x, ._ }, } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, }, .{ .required_features = .{ .avx, null, null, null }, .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, @@ -129352,10 +129625,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, - .{ ._, .vp_, .xor, .dst0y, .tmp2y, .mem(.src0y), ._ }, - .{ ._, .vp_, .xor, .tmp4y, .tmp2y, .memd(.src0y, 32), ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4y, .memd(.src0y, 32), ._, ._ }, .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, .{ ._, .vp_, .@"or", .tmp4y, .tmp4y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .vp_, .xor, .tmp4y, .tmp4y, .tmp2y, ._ }, .{ ._, .vp_q, .cmpgt, .tmp5y, .dst0y, .tmp4y, ._ }, .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp4y, .tmp5y }, .{ ._, .v_i128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, @@ -129854,10 +130129,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, - .{ ._, .vp_, .xor, .tmp4y, .tmp2y, .memad(.src0y, .add_size, -32), ._ }, - .{ ._, .vp_, .xor, .dst0y, .tmp2y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .v_dqa, .mov, .tmp4y, .memad(.src0y, .add_size, -32), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_size, -64), ._, ._ }, .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, .{ ._, .vp_, .@"or", .tmp4y, .tmp4y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .vp_, .xor, .tmp4y, .tmp4y, .tmp2y, ._ }, .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ }, .{ ._, .vp_q, .cmpgt, .tmp5y, .dst0y, .tmp4y, ._ }, .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp4y, .tmp5y }, @@ -129901,8 +130178,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, - .{ ._, .vp_, .xor, .dst0y, .tmp2y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_size, -32), ._, ._ }, .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .tmp2y, ._ }, .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, .{ .@"0:", .vp_, .xor, .tmp4y, .tmp2y, .memi(.src0y, .tmp0), ._ }, .{ ._, .vp_q, .cmpgt, .tmp5y, .dst0y, .tmp4y, ._ }, @@ -129944,8 +130222,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .v_sd, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, - .{ ._, .v_ps, .xor, .dst0y, .tmp2y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_size, -32), ._, ._ }, .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .xor, .dst0y, .dst0y, .tmp2y, ._ }, .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, .{ ._, .vp_q, .cmpgt, .tmp5x, .dst0x, .tmp4x, ._ }, @@ -129987,8 +130266,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, - .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ }, .{ ._, .p_, .xor, .tmp4x, .tmp2x, ._, ._ }, @@ -130030,7 +130309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._g, .cmov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._nl, .cmov, .dst0q, .tmp1q, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -130061,7 +130340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._ng, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._l, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(8), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -130093,7 +130372,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._a, .cmov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._nb, .cmov, .dst0q, .tmp1q, ._, ._ }, .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, } }, @@ -130124,7 +130403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, - .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._b, .j, .@"1f", ._, ._, ._ }, .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, .{ .@"1:", ._, .sub, .tmp0d, .si(8), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, @@ -130292,7 +130571,7823 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, } }, } }, - .Max => unreachable, + .Max => comptime &.{ .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .srl, .tmp0x, .src0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .srl, .tmp0x, .src0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .tmp0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .dst0x, .src0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .tmp0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .srl, .dst0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_, .@"or", .tmp0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .srl, .dst0x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .tmp0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .dst0x, .src0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .tmp0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .srl, .dst0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"or", .dst0x, .dst0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp3x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp3x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp2x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"or", .dst0x, .dst0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp3x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp3x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp2x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp0x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp0x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .zword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_64_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_b, .maxs, .dst0y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .zword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .vp_, .@"and", .tmp2y, .tmp2y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_b, .maxu, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .zword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .vp_b, .maxs, .dst0y, .dst0y, .memd(.src0y, 32), ._ }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .zword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .vp_b, .maxu, .dst0y, .dst0y, .memd(.src0y, 32), ._ }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .srl, .tmp0x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .vp_b, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .srl, .tmp1x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .vp_b, .maxs, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .srl, .tmp1x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .p_b, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp1x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp1x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .vp_b, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .srl, .tmp1x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .vp_b, .maxu, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .srl, .tmp1x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .p_b, .maxu, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp1x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .zword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_64_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_b, .maxs, .tmp3y, .tmp3y, .memid(.src0y, .tmp0, 32), ._ }, + .{ ._, .vp_b, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_b, .maxs, .dst0y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_b, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ .@"0:", .vp_b, .maxs, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .srl, .tmp3x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", .p_b, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp3x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxs, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i8, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp3x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp3x, .ui(8), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .zword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp2y, .tmp2y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ .@"0:", .vp_b, .maxu, .tmp2y, .tmp2y, .memid(.src0y, .tmp0, 32), ._ }, + .{ ._, .vp_b, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_b, .maxu, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ .@"0:", .vp_b, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ .@"0:", .vp_b, .maxu, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .srl, .tmp2x, .dst0x, .ui(8), ._ }, + .{ ._, .vp_b, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ .@"0:", .p_b, .maxu, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_w, .srl, .tmp2x, .ui(8), ._, ._ }, + .{ ._, .p_b, .maxu, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, .slow_incdec, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._l, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._l, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .dst_constraints = .{ .{ .signed_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, .slow_incdec, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._b, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._b, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .slow_incdec, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(1), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .dst_constraints = .{ .{ .unsigned_int = .byte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .memad(.src0b, .add_unaligned_size, -1), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0b, .tmp1b, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._c, .de, .tmp0d, ._, ._, ._ }, + .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_w, .maxs, .tmp0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .tmp0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .vp_w, .maxu, .tmp0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .tmp0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxu, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .add, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp2x, .lea(.tmp0w), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ }, + .{ ._, .vp_, .@"or", .dst0x, .dst0x, .lea(.tmp0x), ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp2x, .lea(.tmp0d), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ }, + .{ ._, .vp_, .@"or", .dst0x, .dst0x, .lea(.tmp0x), ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp3x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_w, .cmpeq, .tmp2x, .tmp2x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp2x, .lea(.tmp0w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .src0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp2x, .lea(.tmp0d), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .src0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .cmpeq, .tmp0x, .tmp0x, .tmp0x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .cmpeq, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp2y, .lea(.tmp0w), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_i128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .minu, .dst0x, .dst0x, .tmp4x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp2y, .lea(.tmp0d), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_ps, .xor, .dst0y, .tmp2y, .src0y, ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .minu, .dst0x, .dst0x, .tmp4x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp0x, .lea(.tmp1w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp0x, .lea(.tmp1d), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp0x, .tmp0x, .tmp0x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp0x, .tmp0x, .tmp0x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, + .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp2y, .lea(.tmp0w), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .tmp2y, .mem(.src0y), ._ }, + .{ ._, .vp_, .xor, .tmp4y, .tmp2y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp4y, .tmp4y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_w, .minu, .dst0y, .dst0y, .tmp4y, ._ }, + .{ ._, .v_i128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .minu, .dst0x, .dst0x, .tmp4x, ._ }, + .{ ._, .vp_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .vp_, .@"and", .tmp2y, .tmp2y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_w, .maxu, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .vp_w, .maxs, .dst0y, .dst0y, .memd(.src0y, 32), ._ }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp0x, .lea(.tmp1w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .vp_w, .maxu, .dst0y, .dst0y, .memd(.src0y, 32), ._ }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp0x, .tmp0x, .tmp0x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .vp_w, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp1x, .lea(.tmp0w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .vp_w, .maxs, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp2x, .lea(.tmp0d), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .p_w, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .p_w, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .vp_w, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ .@"0:", .vp_w, .maxu, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ ._, .p_w, .cmpeq, .tmp1x, .tmp1x, ._, ._ }, + .{ .@"0:", .p_w, .maxu, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_w, .subus, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_32_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_w, .maxs, .tmp3y, .tmp3y, .memid(.src0y, .tmp0, 32), ._ }, + .{ ._, .vp_w, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_w, .maxs, .dst0y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp3x, .lea(.tmp0w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_w, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .vp_w, .broadcast, .tmp3x, .lea(.tmp0w), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ .@"0:", .vp_w, .maxs, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ }, + .{ ._, .v_ss, .broadcast, .tmp3x, .lea(.tmp0d), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smax, .outside = .smax } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", .p_w, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._, .movddup, .tmp4x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp4x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp4x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i16, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", .p_w, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .maxs, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp2y, .tmp2y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ .@"0:", .vp_w, .maxu, .tmp2y, .tmp2y, .memid(.src0y, .tmp0, 32), ._ }, + .{ ._, .vp_w, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_w, .maxu, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ .@"0:", .vp_w, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_w, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ .@"0:", .vp_w, .maxu, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_w, .cmpeq, .tmp2x, .tmp2x, .tmp2x, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_w, .cmpeq, .tmp2x, .tmp2x, ._, ._ }, + .{ .@"0:", .p_w, .maxu, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .ph_w, .minposu, .dst0x, .dst0x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp2x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_w, .subus, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b01), ._ }, + .{ ._, .p_w, .subus, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._l, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .dst_constraints = .{ .{ .signed_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movsx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, + .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._b, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .dst_constraints = .{ .{ .unsigned_int = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .dst0d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, + .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .tmp0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .tmp0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_, .@"or", .tmp0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .tmp0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .tmp0x, .dst0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_w, .shufl, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .tmp0x, .src0x, ._, ._ }, + .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp3x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"or", .tmp3x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"and", .tmp3x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_, .@"or", .tmp3x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .dst0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_, .andn, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp0x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .src0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .src0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_d, .maxs, .dst0y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .vp_, .@"and", .tmp2y, .tmp2y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_d, .maxu, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .vp_d, .maxs, .dst0y, .dst0y, .memd(.src0y, 32), ._ }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .vp_d, .maxu, .dst0y, .dst0y, .memd(.src0y, 32), ._ }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_w, .shufl, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .vp_d, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .vp_d, .maxs, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .p_d, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_, .andn, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .vp_d, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .vp_d, .maxu, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .vp_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .p_d, .maxu, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_d, .maxs, .tmp3y, .tmp3y, .memid(.src0y, .tmp0, 32), ._ }, + .{ ._, .vp_d, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .maxs, .dst0y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_16_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_d, .maxs, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ .@"0:", .vp_d, .maxs, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxs, .dst0x, .dst0x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", .p_d, .maxs, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp3x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxs, .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp4x, ._, ._ }, + .{ ._, .p_, .andn, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp4x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp2y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp2y, .tmp2y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ .@"0:", .vp_d, .maxu, .tmp2y, .tmp2y, .memid(.src0y, .tmp0, 32), ._ }, + .{ ._, .vp_d, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .maxu, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ .@"0:", .vp_d, .maxu, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ .@"0:", .vp_d, .maxu, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .vp_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_d, .maxu, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ .@"0:", .p_d, .maxu, .dst0x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp2x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .p_d, .maxu, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse3, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp4x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i32, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp4x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_w, .shufl, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_d, .cmpgt, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .andn, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .tmp5x, ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._l, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .dst_constraints = .{ .{ .signed_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(4), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .cmov, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._b, .cmov, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .dst_constraints = .{ .{ .unsigned_int = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0d, .memad(.src0d, .add_unaligned_size, -4), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0d, .tmp1d, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(4), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .src0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .src0x, .tmp0x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .sse4_2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp1x, .src0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp0x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp3x, .tmp4x, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .src0x, ._ }, + .{ ._, .vp_b, .blendv, .tmp0x, .src0x, .tmp0x, .tmp1x }, + .{ ._, .v_i128, .extract, .dst0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .tmp0x, .dst0x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .src0x, ._ }, + .{ ._, .vp_b, .blendv, .tmp0x, .src0x, .tmp0x, .tmp1x }, + .{ ._, .v_f128, .extract, .dst0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .tmp0x, .dst0x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .tmp3x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .v_i128, .extract, .dst0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .tmp3x, .dst0x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_sd, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, .v_pd, .xor, .dst0y, .tmp2y, .src0y, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .tmp3x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .v_f128, .extract, .dst0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .tmp3x, .dst0x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_i128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .src0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .src0x, .tmp0x, .tmp1x }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .src0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .src0x, .tmp0x, .tmp1x }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_sd, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, .v_pd, .xor, .dst0y, .tmp2y, .src0y, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_signed_int = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4y, .tmp3y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp3y, .tmp4y }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_unsigned_int = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"and", .tmp4y, .tmp4y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .vp_, .xor, .tmp4y, .tmp4y, .tmp2y, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp4y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp4y, .tmp5y }, + .{ ._, .v_i128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_signed_int = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp0y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1y, .tmp0y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp0y, .tmp1y }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, + .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp1x, .tmp0x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp0x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_unsigned_int = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .tmp2y, .mem(.src0y), ._ }, + .{ ._, .vp_, .xor, .tmp3y, .tmp2y, .memd(.src0y, 32), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4y, .tmp3y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp3y, .tmp4y }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp2y, .tmp1y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp1y, .tmp2y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp2x, .tmp1x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp1x, .tmp2x }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp2x, .tmp1x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp1x, .tmp2x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp2x, .tmp1x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp1x, .tmp2x }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp2x, .tmp1x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp1x, .tmp2x }, + } }, + }, .{ + .required_features = .{ .sse4_2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp1x, .tmp2x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp1x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp2x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp1x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_, .xor, .dst0y, .tmp2y, .memad(.src0y, .add_unaligned_size, -32), ._ }, + .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memi(.src0y, .tmp0), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4y, .tmp3y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp3y, .tmp4y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_, .xor, .dst0x, .tmp2x, .memad(.src0x, .add_unaligned_size, -16), ._ }, + .{ .@"0:", .vp_, .xor, .tmp3x, .tmp2x, .memi(.src0x, .tmp0), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp3x, .tmp4x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp3x, .tmp4x, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_8_i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4y, .tmp3y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp3y, .tmp4y }, + .{ .@"0:", .v_dqa, .mov, .tmp3y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4y, .tmp3y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp3y, .tmp4y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .vp_, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ .@"0:", .v_dqa, .mov, .tmp3y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4y, .tmp3y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp3y, .tmp4y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ .@"0:", .v_dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp4x, .tmp3x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp3x, .tmp4x }, + } }, + }, .{ + .required_features = .{ .sse4_2, null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_2_i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp3x, .tmp4x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp3x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp4x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp3x, .tmp4x, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .tmp4y, .memad(.src0y, .add_size, -32), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_size, -64), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .@"and", .tmp4y, .tmp4y, .lead(.tmp0y, 32), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, .vp_, .xor, .tmp4y, .tmp4y, .tmp2y, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp4y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp4y, .tmp5y }, + .{ .@"0:", .vp_, .xor, .tmp4y, .tmp2y, .memi(.src0y, .tmp0), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp4y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp4y, .tmp5y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_size, -32), ._, ._ }, + .{ ._, .vp_, .@"and", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .vp_, .xor, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ }, + .{ .@"0:", .vp_, .xor, .tmp4y, .tmp2y, .memi(.src0y, .tmp0), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5y, .tmp4y, .dst0y, ._ }, + .{ ._, .vp_b, .blendv, .dst0y, .dst0y, .tmp4y, .tmp5y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_i128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_sd, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_size, -32), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .xor, .dst0y, .dst0y, .tmp2y, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ .@"0:", .vp_, .xor, .tmp4x, .tmp2x, .memi(.src0x, .tmp0), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .vp_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, .vp_q, .cmpgt, .tmp5x, .tmp4x, .dst0x, ._ }, + .{ ._, .vp_b, .blendv, .dst0x, .dst0x, .tmp4x, .tmp5x }, + .{ ._, .vp_, .xor, .dst0x, .dst0x, .tmp2x, ._ }, + } }, + }, .{ + .required_features = .{ .sse4_2, null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .splat_int_mem = .{ .ref = .src0, .inside = .smin, .outside = .smin } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, + .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_i64, .kind = .{ .reg = .xmm0 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ }, + .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .p_, .xor, .tmp4x, .tmp2x, ._, ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp4x, .tmp5x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .p_d, .shuf, .tmp4x, .dst0x, .ui(0b11_10), ._ }, + .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ }, + .{ ._, .p_q, .cmpgt, .tmp5x, .dst0x, ._, ._ }, + .{ ._, .p_b, .blendv, .dst0x, .tmp4x, .tmp5x, ._ }, + .{ ._, .p_, .xor, .dst0x, .tmp2x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .cmov, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._l, .cmov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .dst_constraints = .{ .{ .signed_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .cmov, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._b, .cmov, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .dst_constraints = .{ .{ .unsigned_int = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .mov, .dst0q, .memad(.src0q, .add_unaligned_size, -8), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ }, + .{ ._, ._, .cmp, .dst0q, .tmp1q, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .cmov, null, null }, + .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .isize, .kind = .{ .reg = .rcx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_unaligned_size_sub_2_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .sia(1, .dst0, .sub_size_div_8), ._, ._ }, + .{ ._, ._, .lea, .tmp3p, .memi(.src0, .tmp0), ._, ._ }, + .{ ._, ._c, .cl, ._, ._, ._, ._ }, + .{ .@"1:", ._, .mov, .tmp4q, .leasiad(.tmp1q, .@"8", .tmp2, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .leasiad(.tmp3q, .@"8", .tmp2, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._c, .in, .tmp2p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .leaad(.tmp1q, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .leaad(.tmp3q, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._l, .cmov, .tmp1p, .tmp3p, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .sa(.dst0, .add_size), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .isize, .kind = .{ .reg = .rcx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_unaligned_size_sub_2_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .sia(1, .dst0, .sub_size_div_8), ._, ._ }, + .{ ._, ._, .lea, .tmp3p, .memi(.src0, .tmp0), ._, ._ }, + .{ ._, ._c, .cl, ._, ._, ._, ._ }, + .{ .@"1:", ._, .mov, .tmp4q, .leasiad(.tmp1q, .@"8", .tmp2, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .leasiad(.tmp3q, .@"8", .tmp2, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._c, .in, .tmp2p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp4q, .leaad(.tmp1q, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .leaad(.tmp3q, .add_src0_elem_size, -8), ._, ._ }, + .{ ._, ._nl, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .tmp3p, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .sa(.dst0, .add_size), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", .cmov, null, null }, + .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .isize, .kind = .{ .reg = .rcx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_unaligned_size_sub_2_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .sa(.dst0, .sub_size_div_8), ._, ._ }, + .{ ._, ._, .lea, .tmp3p, .memi(.src0, .tmp0), ._, ._ }, + .{ ._, ._c, .cl, ._, ._, ._, ._ }, + .{ .@"1:", ._, .mov, .tmp4q, .leasia(.tmp1q, .@"8", .tmp2, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .leasia(.tmp3q, .@"8", .tmp2, .add_src0_elem_size), ._, ._ }, + .{ ._, ._c, .in, .tmp2p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, + .{ ._, ._b, .cmov, .tmp1p, .tmp3p, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .sa(.dst0, .add_size), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .@"64bit", null, null, null }, + .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any }, + .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .reg = .rdi } }, + .{ .type = .usize, .kind = .{ .reg = .rsi } }, + .{ .type = .isize, .kind = .{ .reg = .rcx } }, + .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, + .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_unaligned_size_sub_2_elem_size), ._, ._ }, + .{ ._, ._, .lea, .tmp1p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ }, + .{ .@"0:", ._, .mov, .tmp2p, .sa(.dst0, .sub_size_div_8), ._, ._ }, + .{ ._, ._, .lea, .tmp3p, .memi(.src0, .tmp0), ._, ._ }, + .{ ._, ._c, .cl, ._, ._, ._, ._ }, + .{ .@"1:", ._, .mov, .tmp4q, .leasia(.tmp1q, .@"8", .tmp2, .add_src0_elem_size), ._, ._ }, + .{ ._, ._, .sbb, .tmp4q, .leasia(.tmp3q, .@"8", .tmp2, .add_src0_elem_size), ._, ._ }, + .{ ._, ._c, .in, .tmp2p, ._, ._, ._ }, + .{ ._, ._nz, .j, .@"1b", ._, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, ._, .mov, .tmp1p, .tmp3p, ._, ._ }, + .{ .@"1:", ._, .sub, .tmp0d, .sa(.dst0, .add_size), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ }, + .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, + .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, + } }, + } }, .Add => comptime &.{ .{ .required_features = .{ .avx, null, null, null }, .dst_constraints = .{ .{ .int = .byte }, .any }, @@ -162641,10 +170736,10 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void { ) else try self.asmRegisterRegister( .{ mir_tag[0], .andn }, mask_alias, - if (rhs_mcv.isRegister()) + registerAlias(if (rhs_mcv.isRegister()) rhs_mcv.getReg().? else - try self.copyToTmpRegister(ty, rhs_mcv), + try self.copyToTmpRegister(ty, rhs_mcv), abi_size), ); try self.asmRegisterRegister(.{ mir_tag[0], .@"or" }, dst_alias, mask_alias); } diff --git a/src/codegen/c/Type.zig b/src/codegen/c/Type.zig index 783e887324..7d3a485e2a 100644 --- a/src/codegen/c/Type.zig +++ b/src/codegen/c/Type.zig @@ -1747,6 +1747,21 @@ pub const Pool = struct { }; return pool.fromFields(allocator, .@"struct", &fields, kind); }, + .vector_2_i32_type => { + const vector_ctype = try pool.getVector(allocator, .{ + .elem_ctype = .i32, + .len = 2, + }); + if (!kind.isParameter()) return vector_ctype; + var fields = [_]Info.Field{ + .{ + .name = .{ .index = .array }, + .ctype = vector_ctype, + .alignas = AlignAs.fromAbiAlignment(Type.i32.abiAlignment(zcu)), + }, + }; + return pool.fromFields(allocator, .@"struct", &fields, kind); + }, .vector_4_i32_type => { const vector_ctype = try pool.getVector(allocator, .{ .elem_ctype = .i32, diff --git a/test/behavior/x86_64/unary.zig b/test/behavior/x86_64/unary.zig index 9540aafeb1..91d7d3a899 100644 --- a/test/behavior/x86_64/unary.zig +++ b/test/behavior/x86_64/unary.zig @@ -5102,6 +5102,14 @@ test reduceMin { try test_reduce_min.testIntVectors(); } +inline fn reduceMax(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child { + return @reduce(.Max, rhs); +} +test reduceMax { + const test_reduce_max = unary(reduceMax, .{}); + try test_reduce_max.testIntVectors(); +} + inline fn reduceAdd(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child { return @reduce(.Add, rhs); } diff --git a/test/cases/compile_errors/@import_zon_bad_type.zig b/test/cases/compile_errors/@import_zon_bad_type.zig index 0b245d3e33..f20c4efd7c 100644 --- a/test/cases/compile_errors/@import_zon_bad_type.zig +++ b/test/cases/compile_errors/@import_zon_bad_type.zig @@ -117,9 +117,9 @@ export fn testMutablePointer() void { // tmp.zig:37:38: note: imported here // neg_inf.zon:1:1: error: expected type '?u8' // tmp.zig:57:28: note: imported here -// neg_inf.zon:1:1: error: expected type 'tmp.testNonExhaustiveEnum__enum_517' +// neg_inf.zon:1:1: error: expected type 'tmp.testNonExhaustiveEnum__enum_518' // tmp.zig:62:39: note: imported here -// neg_inf.zon:1:1: error: expected type 'tmp.testUntaggedUnion__union_519' +// neg_inf.zon:1:1: error: expected type 'tmp.testUntaggedUnion__union_520' // tmp.zig:67:44: note: imported here -// neg_inf.zon:1:1: error: expected type 'tmp.testTaggedUnionVoid__union_522' +// neg_inf.zon:1:1: error: expected type 'tmp.testTaggedUnionVoid__union_523' // tmp.zig:72:50: note: imported here diff --git a/test/cases/compile_errors/anytype_param_requires_comptime.zig b/test/cases/compile_errors/anytype_param_requires_comptime.zig index 6cbb2e9234..1212d04a00 100644 --- a/test/cases/compile_errors/anytype_param_requires_comptime.zig +++ b/test/cases/compile_errors/anytype_param_requires_comptime.zig @@ -15,6 +15,6 @@ pub export fn entry() void { // error // // :7:25: error: unable to resolve comptime value -// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_491.C' must be comptime-known +// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_492.C' must be comptime-known // :4:16: note: struct requires comptime because of this field // :4:16: note: types are not available at runtime diff --git a/test/cases/compile_errors/bogus_method_call_on_slice.zig b/test/cases/compile_errors/bogus_method_call_on_slice.zig index fcd40557b3..5c203b90ad 100644 --- a/test/cases/compile_errors/bogus_method_call_on_slice.zig +++ b/test/cases/compile_errors/bogus_method_call_on_slice.zig @@ -16,5 +16,5 @@ pub export fn entry2() void { // // :3:6: error: no field or member function named 'copy' in '[]const u8' // :9:8: error: no field or member function named 'bar' in '@TypeOf(.{})' -// :12:18: error: no field or member function named 'bar' in 'tmp.entry2__struct_495' +// :12:18: error: no field or member function named 'bar' in 'tmp.entry2__struct_496' // :12:6: note: struct declared here diff --git a/test/cases/compile_errors/coerce_anon_struct.zig b/test/cases/compile_errors/coerce_anon_struct.zig index 4262baafca..461e44de3e 100644 --- a/test/cases/compile_errors/coerce_anon_struct.zig +++ b/test/cases/compile_errors/coerce_anon_struct.zig @@ -6,6 +6,6 @@ export fn foo() void { // error // -// :4:16: error: expected type 'tmp.T', found 'tmp.foo__struct_484' +// :4:16: error: expected type 'tmp.T', found 'tmp.foo__struct_485' // :3:16: note: struct declared here // :1:11: note: struct declared here diff --git a/test/cases/compile_errors/redundant_try.zig b/test/cases/compile_errors/redundant_try.zig index d9bd8317eb..c58049e92b 100644 --- a/test/cases/compile_errors/redundant_try.zig +++ b/test/cases/compile_errors/redundant_try.zig @@ -44,9 +44,9 @@ comptime { // // :5:23: error: expected error union type, found 'comptime_int' // :10:23: error: expected error union type, found '@TypeOf(.{})' -// :15:23: error: expected error union type, found 'tmp.test2__struct_521' +// :15:23: error: expected error union type, found 'tmp.test2__struct_522' // :15:23: note: struct declared here -// :20:27: error: expected error union type, found 'tmp.test3__struct_523' +// :20:27: error: expected error union type, found 'tmp.test3__struct_524' // :20:27: note: struct declared here // :25:23: error: expected error union type, found 'struct { comptime *const [5:0]u8 = "hello" }' // :31:13: error: expected error union type, found 'u32'