diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index 908217a4bc..19dbe2ca2b 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(27_100); + @setEvalBranchQuota(27_800); const pt = cg.pt; const zcu = pt.zcu; const ip = &zcu.intern_pool; @@ -117437,11 +117437,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { try res[0].finish(inst, &.{ty_op.operand}, &ops, cg); }, .reduce => |air_tag| if (use_old) try cg.airReduce(inst) else fallback: { + const nan = std.math.nan(f16); const reduce = air_datas[@intFromEnum(inst)].reduce; const res_ty = cg.typeOfIndex(inst); switch (reduce.operation) { - .And, .Or, .Xor => {}, - .Min, .Max => if (cg.floatBits(res_ty)) |_| break :fallback try cg.airReduce(inst), + .And, .Or, .Xor, .Min => {}, + .Max => if (cg.floatBits(res_ty)) |_| break :fallback try cg.airReduce(inst), .Add, .Mul => {}, } var ops = try cg.tempsFromOperands(inst, .{reduce.operand}); @@ -130164,7 +130165,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0, .invert = true } } }, .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, - .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -130207,7 +130207,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .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, .invert = true } } }, - .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } }, .unused, @@ -130570,6 +130569,2311 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ }, .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ }, } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .dword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .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_8_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .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_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"or", .dst0x, .src0x, .lea(.tmp0x), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .mem, .none, .none } }, + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .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_16_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .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_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .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), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp1y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_ps, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .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_32_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .v_f128, .extract, .tmp4x, .tmp3y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp5y, .tmp3y, .tmp4y, ._ }, + .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .tmp3y, .tmp3y, .tmp5y, .tmp4y }, + .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp5y, .dst0y, .tmp4y, ._ }, + .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp5y, .tmp4y }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .tmp0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp2y, .tmp0y, .tmp1y, ._ }, + .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .tmp0y, .tmp0y, .tmp2y, .tmp1y }, + .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp2y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y }, + .{ ._, .v_ps, .min, .tmp1y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_ps, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .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_ps, .cvtph2, .dst0y, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .v_ps, .min, .tmp2y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ss, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .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), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-80, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp4x, .tmp3y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp5y, .tmp3y, .tmp4y, ._ }, + .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .tmp3y, .tmp3y, .tmp5y, .tmp4y }, + .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp5y, .dst0y, .tmp4y, ._ }, + .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp5y, .tmp4y }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ .@"0:", .v_ps, .cvtph2, .tmp3y, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .f16c, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .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), ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ .@"0:", .v_ps, .cvtph2, .tmp3y, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .reg = .xmm0 }, .unused }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .vp_w, .insr, .dst0x, .dst0x, .memad(.src0w, .add_unaligned_size, -2), .ui(0) }, + .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ }, + .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .reg = .xmm0 }, .unused }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .p_w, .insr, .dst0x, .memad(.src0w, .add_unaligned_size, -2), .ui(0), ._ }, + .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .word }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f16, .kind = .{ .reg = .ax } }, + .{ .type = .f32, .kind = .mem }, + .{ .type = .f16, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .reg = .xmm0 }, .unused }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._, .movzx, .tmp1d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ }, + .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ }, + .{ ._, ._ss, .mov, .dst0x, .mem(.tmp2d), ._, ._ }, + .{ .@"0:", ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, ._ss, .mov, .tmp3x, .memi(.src0d, .tmp0), ._, ._ }, + .{ ._, ._, .call, .tmp4d, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, + .{ ._, .v_ss, .min, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .tmp0x, .src0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .tmp0x, .dst0x, ._ }, + .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .dst0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .tmp0x, .tmp1x, .dst0x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ }, + .{ ._, ._ps, .blendv, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ }, + .{ ._, ._ps, .@"and", .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp0x, .dst0x, ._, ._ }, + .{ ._, ._ps, .@"or", .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, + .{ ._, .v_ps, .min, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .dst0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp0x, .dst0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .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_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .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_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .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), ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .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_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_ps, .min, .tmp1y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_ps, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .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_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .v_ps, .min, .tmp2y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ss, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .vector_4_f32, .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), ._, ._ }, + .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp2x, .tmp1x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp2x, .tmp1x, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp1x, .tmp1x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp2x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .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), ._, ._ }, + .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp1x, .tmp1x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_8_f32, .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), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ }, + .{ .@"0:", .v_ps, .mova, .tmp3y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .v_ps, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .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), ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ .@"0:", .v_ps, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .mova, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._ps, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp4x, .tmp3x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp4x, .tmp3x, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .dst0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp3x, .tmp3x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ }, + .{ ._, ._ps, .blendv, .dst0x, .tmp4x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .dword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._ps, .mova, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._ps, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp3x, .tmp4x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._ps, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp3x, .tmp4x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .mova, .tmp3x, .dst0x, ._, ._ }, + .{ ._, ._ps, .shuf, .tmp3x, .tmp3x, .ui(0b01), ._ }, + .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._ss, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._ss, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ }, + .{ ._, ._ps, .@"and", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .andn, .tmp3x, .tmp4x, ._, ._ }, + .{ ._, ._ps, .@"or", .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, + .{ ._, .v_sd, .min, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._pd, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._sd, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._sd, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ }, + .{ ._, ._pd, .blendv, .dst0x, .tmp1x, .tmp0x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mut_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .ref = .src0 }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ }, + .{ ._, ._pd, .mova, .tmp1x, .src0x, ._, ._ }, + .{ ._, ._sd, .min, .tmp1x, .tmp0x, ._, ._ }, + .{ ._, ._sd, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ }, + .{ ._, ._pd, .@"and", .dst0x, .tmp0x, ._, ._ }, + .{ ._, ._pd, .andn, .tmp0x, .tmp1x, ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .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), ._ }, + .{ ._, .v_sd, .min, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .tmp0x, .src0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ }, + .{ ._, .v_sd, .min, .tmp1x, .tmp0x, .dst0x, ._ }, + .{ ._, .v_sd, .cmp, .dst0x, .dst0x, .dst0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .tmp0x, .tmp1x, .dst0x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_sse, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .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), ._ }, + .{ ._, .v_pd, .min, .tmp1x, .src0x, .tmp0x, ._ }, + .{ ._, .v_pd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exclusive_scalar_float = .{ .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_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ }, + .{ ._, .v_pd, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ }, + .{ ._, .v_pd, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_pd, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .v_pd, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_pd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_sd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .each = .{ .once = &.{ + .{ ._, .v_pd, .mova, .dst0y, .mem(.src0y), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_pd, .min, .tmp1y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_pd, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y }, + .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_pd, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_pd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .min, .tmp1x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .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_pd, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .v_pd, .min, .tmp2y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, + .{ ._, .v_pd, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_pd, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_pd, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .min, .tmp2x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_sd, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .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), ._, ._ }, + .{ ._, ._pd, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._pd, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, + .{ ._, ._pd, .blendv, .dst0x, .tmp2x, .tmp1x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._sd, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._sd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ }, + .{ ._, ._pd, .blendv, .dst0x, .tmp2x, .tmp1x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .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), ._, ._ }, + .{ ._, ._pd, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._pd, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, + .{ ._, ._pd, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._pd, .xor, .tmp1x, .tmp1x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ }, + .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ }, + .{ ._, ._sd, .min, .tmp2x, .tmp1x, ._, ._ }, + .{ ._, ._sd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ }, + .{ ._, ._pd, .@"and", .dst0x, .tmp1x, ._, ._ }, + .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .tmp1x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx512f, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, .v_pd, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_pd, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ }, + .{ ._, .v_pd, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, .v_pd, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ }, + .{ ._, .v_pd, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ }, + .{ .@"0:", .v_pd, .mova, .tmp3y, .memi(.src0y, .tmp0), ._, ._ }, + .{ ._, .v_pd, .min, .tmp4y, .dst0y, .tmp3y, ._ }, + .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y }, + .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_pd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_sd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ }, + .{ ._, .v_pd, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ }, + .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, + .{ ._, .v_pd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ .@"0:", .v_pd, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, .v_pd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, + .{ ._, .v_sd, .min, .tmp4x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_sd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) }, + .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x }, + } }, + }, .{ + .required_features = .{ .sse4_1, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._pd, .mova, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._pd, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._pd, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._pd, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ }, + .{ ._, ._pd, .blendv, .dst0x, .tmp4x, .tmp3x, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, + .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._sd, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._sd, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ }, + .{ ._, ._pd, .blendv, .dst0x, .tmp4x, .tmp3x, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .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_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .sse }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, + .{ ._, ._pd, .mova, .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, + .{ ._, ._pd, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .lea(.tmp0x), ._, ._ }, + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ }, + .{ .@"0:", ._pd, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._pd, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._pd, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ }, + .{ ._, ._pd, .@"and", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._pd, .andn, .tmp3x, .tmp4x, ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, + .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, + .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ }, + .{ ._, ._sd, .min, .tmp4x, .tmp3x, ._, ._ }, + .{ ._, ._sd, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ }, + .{ ._, ._pd, .@"and", .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._pd, .andn, .tmp3x, .tmp4x, ._, ._ }, + .{ ._, ._pd, .@"or", .dst0x, .tmp3x, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .cmov, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ }, + .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ }, + .{ ._, .f_, .ucomi, .tmp2t, .tmp2t, ._, ._ }, + .{ ._, .f_u, .cmov, .tmp2t, .tmp1t, ._, ._ }, + .{ ._, .f_, .ucomi, .tmp2t, .tmp1t, ._, ._ }, + .{ ._, .f_nb, .cmov, .tmp2t, .tmp1t, ._, ._ }, + .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sahf, .x87, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .u16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ }, + .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ }, + .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .sahf, ._, ._, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .xam, ._, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ }, + .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .st, .tmp1t, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .dst_constraints = .{ .{ .float = .qword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f64, .kind = .{ .reg = .st7 } }, + .{ .type = .f64, .kind = .{ .reg = .st6 } }, + .{ .type = .u16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .mem, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ }, + .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ }, + .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp3h, .si(0b0_000_001), ._, ._ }, + .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .xam, ._, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ }, + .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .st, .tmp1t, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0q, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, .cmov, null, null }, + .dst_constraints = .{ .{ .float = .tbyte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .x87 }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ }, + .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ }, + .{ ._, .f_, .ucomi, .tmp2t, .tmp2t, ._, ._ }, + .{ ._, .f_u, .cmov, .tmp2t, .tmp1t, ._, ._ }, + .{ ._, .f_, .ucomi, .tmp2t, .tmp1t, ._, ._ }, + .{ ._, .f_nb, .cmov, .tmp2t, .tmp1t, ._, ._ }, + .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sahf, .x87, null, null }, + .dst_constraints = .{ .{ .float = .tbyte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .u16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .x87 }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ }, + .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ }, + .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .sahf, ._, ._, ._, ._ }, + .{ ._, ._nb, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .xam, ._, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ }, + .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .st, .tmp1t, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .x87, null, null, null }, + .dst_constraints = .{ .{ .float = .tbyte }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f80, .kind = .{ .reg = .st7 } }, + .{ .type = .f80, .kind = .{ .reg = .st6 } }, + .{ .type = .u16, .kind = .{ .reg = .ax } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .rc = .x87 }, .unused }, + .clobbers = .{ .eflags = true }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ }, + .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ }, + .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp3h, .si(0b0_000_001), ._, ._ }, + .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .xam, ._, ._, ._, ._ }, + .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ }, + .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ }, + .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, + .{ ._, .f_, .st, .tmp1t, ._, ._, ._ }, + .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + .{ ._, .f_p, .st, .dst0t, ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .avx, null, null, null }, + .dst_constraints = .{ .{ .float = .xword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .reg = .xmm0 }, .unused }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .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), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse2, null, null, null }, + .dst_constraints = .{ .{ .float = .xword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .reg = .xmm0 }, .unused }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .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), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, + }, .{ + .required_features = .{ .sse, null, null, null }, + .dst_constraints = .{ .{ .float = .xword }, .any }, + .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any }, + .patterns = &.{ + .{ .src = .{ .to_mem, .none, .none } }, + }, + .call_frame = .{ .alignment = .@"16" }, + .extra_temps = .{ + .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, + .{ .type = .f128, .kind = .{ .reg = .xmm1 } }, + .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } }, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + .unused, + }, + .dst_temps = .{ .{ .reg = .xmm0 }, .unused }, + .clobbers = .{ .eflags = true, .caller_preserved = .ccc }, + .each = .{ .once = &.{ + .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ }, + .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ }, + .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ }, + .{ ._, ._, .call, .tmp2d, ._, ._, ._ }, + .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, + .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, + } }, } }, .Max => comptime &.{ .{ .required_features = .{ .avx, null, null, null }, @@ -137981,7 +140285,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .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, @@ -138024,7 +140327,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .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, @@ -146819,7 +149121,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, @@ -146830,26 +149131,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .rc = .sse }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_ps, .mova, .tmp1y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .tmp1y, .ui(1), ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .tmp0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .min, .tmp1y, .tmp1y, .tmp2y, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .min, .dst0y, .dst0y, .tmp2y, ._ }, - .{ ._, .v_ps, .min, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .min, .tmp0y, .tmp0y, .tmp1y, ._ }, .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10) }, - .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .min, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .min, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .min, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, } }, }, .{ @@ -147218,8 +149520,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, .{ ._, .v_ps, .min, .dst0x, .src0x, .tmp0x, ._ }, - .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01) }, - .{ ._, .v_ss, .min, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, @@ -147275,7 +149577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_ps, .@"or", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, @@ -147291,7 +149593,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -147302,15 +149603,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ }, - .{ ._, .v_ps, .min, .dst0x, .src0x, .tmp1x, ._ }, - .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .min, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .v_ps, .min, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .min, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .min, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .avx512f, null, null, null }, @@ -147690,7 +149992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, .{ .type = .vector_8_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = inf } } }, - .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -147723,7 +150025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -147754,7 +150056,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -147776,7 +150078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, .{ ._, .v_pd, .min, .dst0x, .dst0x, .tmp1x, ._ }, .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .min, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_sd, .min, .dst0x, .dst0x, .tmp1x, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, @@ -147887,7 +150189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .min, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_sd, .min, .dst0x, .dst0x, .tmp3x, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, @@ -147923,7 +150225,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, - .{ ._, ._pd, .min, .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._sd, .min, .dst0x, .tmp3x, ._, ._ }, } }, }, .{ .required_features = .{ .x87, .cmov, null, null }, @@ -148511,7 +150813,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, @@ -148522,26 +150823,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .rc = .sse }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_ps, .mova, .tmp1y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .tmp1y, .ui(1), ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .tmp0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .max, .tmp1y, .tmp1y, .tmp2y, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .max, .dst0y, .dst0y, .tmp2y, ._ }, - .{ ._, .v_ps, .max, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .max, .tmp0y, .tmp0y, .tmp1y, ._ }, .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10) }, - .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .max, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .max, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .max, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .max, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, } }, }, .{ @@ -148910,8 +151212,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, .{ ._, .v_ps, .max, .dst0x, .src0x, .tmp0x, ._ }, - .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01) }, - .{ ._, .v_ss, .max, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .max, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, @@ -148967,7 +151269,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_ps, .@"or", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, @@ -148983,7 +151285,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -148994,15 +151295,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ }, - .{ ._, .v_ps, .max, .dst0x, .src0x, .tmp1x, ._ }, - .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .max, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .v_ps, .max, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .max, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .max, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .avx512f, null, null, null }, @@ -149382,7 +151684,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } }, .{ .type = .vector_8_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -inf } } }, - .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -149415,7 +151717,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -149446,7 +151748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { }, .extra_temps = .{ .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, - .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, + .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } }, .unused, .unused, .unused, @@ -149468,7 +151770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, .{ ._, .v_pd, .max, .dst0x, .dst0x, .tmp1x, ._ }, .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .max, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_sd, .max, .dst0x, .dst0x, .tmp1x, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, @@ -149579,7 +151881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .max, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_sd, .max, .dst0x, .dst0x, .tmp3x, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, @@ -149615,7 +151917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, - .{ ._, ._pd, .max, .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._sd, .max, .dst0x, .tmp3x, ._, ._ }, } }, }, .{ .required_features = .{ .x87, .cmov, null, null }, @@ -150381,7 +152683,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, @@ -150392,26 +152693,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .rc = .sse }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_ps, .mova, .tmp1y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .tmp1y, .ui(1), ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .tmp0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .tmp2y, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ }, - .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .add, .tmp0y, .tmp0y, .tmp1y, ._ }, .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10) }, - .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, } }, }, .{ @@ -150938,8 +153240,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, .{ ._, .v_ps, .add, .dst0x, .src0x, .tmp0x, ._ }, - .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01) }, - .{ ._, .v_ss, .add, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .sse3, .fast_hops, null, null }, @@ -151050,7 +153352,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -151061,13 +153362,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, .each = .{ .once = &.{ .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ }, .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ }, - .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ }, - .{ ._, .v_ss, .add, .dst0x, .src0x, .tmp1x, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .v_ss, .add, .dst0x, .src0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .avx, null, null, null }, @@ -151077,7 +153379,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -151088,15 +153389,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ }, - .{ ._, .v_ps, .add, .dst0x, .src0x, .tmp1x, ._ }, - .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .v_ps, .add, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .avx512f, null, null, null }, @@ -151787,7 +154089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp1x, ._ }, .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp1x, ._ }, } }, }, .{ .required_features = .{ .sse3, .fast_hops, null, null }, @@ -151957,7 +154259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp2x, ._ }, + .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp2x, ._ }, } }, }, .{ .required_features = .{ .sse3, .fast_hops, null, null }, @@ -152023,7 +154325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ }, .{ ._, ._ps, .movhl, .tmp2x, .dst0x, ._, ._ }, - .{ ._, ._pd, .add, .dst0x, .tmp2x, ._, ._ }, + .{ ._, ._sd, .add, .dst0x, .tmp2x, ._, ._ }, } }, }, .{ .required_features = .{ .x87, null, null, null }, @@ -152462,7 +154764,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_mem, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } }, .unused, @@ -152473,26 +154774,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .rc = .sse }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_ps, .mova, .tmp1y, .memd(.src0y, 32), ._, ._ }, + .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ }, .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .tmp1y, .ui(1), ._ }, + .{ ._, .v_f128, .extract, .tmp1x, .tmp0y, .ui(1), ._ }, + .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ }, .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .mul, .tmp1y, .tmp1y, .tmp2y, ._ }, - .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, - .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ }, - .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp2y, ._ }, - .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .mul, .tmp0y, .tmp0y, .tmp1y, ._ }, .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, - .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10) }, - .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ }, + .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ }, + .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp1y, ._ }, + .{ ._, .v_ps, .mul, .dst0y, .dst0y, .tmp0y, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ }, + .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) }, + .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0x, ._ }, .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ }, } }, }, .{ @@ -152861,8 +155163,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .each = .{ .once = &.{ .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ }, .{ ._, .v_ps, .mul, .dst0x, .src0x, .tmp0x, ._ }, - .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01) }, - .{ ._, .v_ss, .mul, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .sse, null, null, null }, @@ -152918,7 +155220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ }, .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ }, .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ }, - .{ ._, .v_ps, .@"or", .dst0y, .src0y, .lea(.tmp0y), ._ }, + .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ }, .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ }, .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp3x, ._ }, .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, @@ -152934,7 +155236,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ .src = .{ .to_sse, .none, .none } }, }, .extra_temps = .{ - .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } }, .unused, .unused, @@ -152945,15 +155246,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .unused, .unused, .unused, + .unused, }, .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused }, .each = .{ .once = &.{ - .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ }, - .{ ._, .v_ps, .mul, .dst0x, .src0x, .tmp1x, ._ }, - .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp1x, ._ }, - .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) }, - .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ }, + .{ ._, .v_ps, .mul, .dst0x, .src0x, .tmp0x, ._ }, + .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ }, + .{ ._, .v_ps, .mul, .dst0x, .dst0x, .tmp0x, ._ }, + .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) }, + .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0x, ._ }, } }, }, .{ .required_features = .{ .avx512f, null, null, null }, @@ -153419,7 +155721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ }, .{ ._, .v_pd, .mul, .dst0x, .dst0x, .tmp1x, ._ }, .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .mul, .dst0x, .dst0x, .tmp1x, ._ }, + .{ ._, .v_sd, .mul, .dst0x, .dst0x, .tmp1x, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, @@ -153530,7 +155832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ }, .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ }, - .{ ._, .v_pd, .mul, .dst0x, .dst0x, .tmp3x, ._ }, + .{ ._, .v_sd, .mul, .dst0x, .dst0x, .tmp3x, ._ }, } }, }, .{ .required_features = .{ .sse2, null, null, null }, @@ -153566,7 +155868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { .{ ._, ._nb, .j, .@"0b", ._, ._, ._ }, .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ }, .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ }, - .{ ._, ._pd, .mul, .dst0x, .tmp3x, ._, ._ }, + .{ ._, ._sd, .mul, .dst0x, .tmp3x, ._, ._ }, } }, }, .{ .required_features = .{ .x87, null, null, null }, diff --git a/test/behavior/x86_64/unary.zig b/test/behavior/x86_64/unary.zig index 9757d33f72..e2a61008af 100644 --- a/test/behavior/x86_64/unary.zig +++ b/test/behavior/x86_64/unary.zig @@ -5100,6 +5100,7 @@ inline fn reduceMin(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child test reduceMin { const test_reduce_min = unary(reduceMin, .{}); try test_reduce_min.testIntVectors(); + try test_reduce_min.testFloatVectors(); } inline fn reduceMax(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {