@@ -2782,7 +2782,7 @@ multiclass avx512_mask_unop<bits<8> opc, string OpcodeStr,
2782
2782
RegisterClass KRC, SDPatternOperator OpNode,
2783
2783
X86FoldableSchedWrite sched, Predicate prd> {
2784
2784
let Predicates = [prd] in
2785
- def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src),
2785
+ def kk : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src),
2786
2786
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
2787
2787
[(set KRC:$dst, (OpNode KRC:$src))]>,
2788
2788
Sched<[sched]>;
@@ -2807,14 +2807,14 @@ defm KNOT : avx512_mask_unop_all<0x44, "knot", vnot, SchedWriteVecLogic.XMM>;
2807
2807
// KNL does not support KMOVB, 8-bit mask is promoted to 16-bit
2808
2808
let Predicates = [HasAVX512, NoDQI] in
2809
2809
def : Pat<(vnot VK8:$src),
2810
- (COPY_TO_REGCLASS (KNOTWrr (COPY_TO_REGCLASS VK8:$src, VK16)), VK8)>;
2810
+ (COPY_TO_REGCLASS (KNOTWkk (COPY_TO_REGCLASS VK8:$src, VK16)), VK8)>;
2811
2811
2812
2812
def : Pat<(vnot VK4:$src),
2813
- (COPY_TO_REGCLASS (KNOTWrr (COPY_TO_REGCLASS VK4:$src, VK16)), VK4)>;
2813
+ (COPY_TO_REGCLASS (KNOTWkk (COPY_TO_REGCLASS VK4:$src, VK16)), VK4)>;
2814
2814
def : Pat<(vnot VK2:$src),
2815
- (COPY_TO_REGCLASS (KNOTWrr (COPY_TO_REGCLASS VK2:$src, VK16)), VK2)>;
2815
+ (COPY_TO_REGCLASS (KNOTWkk (COPY_TO_REGCLASS VK2:$src, VK16)), VK2)>;
2816
2816
def : Pat<(vnot VK1:$src),
2817
- (COPY_TO_REGCLASS (KNOTWrr (COPY_TO_REGCLASS VK1:$src, VK16)), VK2)>;
2817
+ (COPY_TO_REGCLASS (KNOTWkk (COPY_TO_REGCLASS VK1:$src, VK16)), VK2)>;
2818
2818
2819
2819
// Mask binary operation
2820
2820
// - KAND, KANDN, KOR, KXNOR, KXOR
@@ -2823,7 +2823,7 @@ multiclass avx512_mask_binop<bits<8> opc, string OpcodeStr,
2823
2823
X86FoldableSchedWrite sched, Predicate prd,
2824
2824
bit IsCommutable> {
2825
2825
let Predicates = [prd], isCommutable = IsCommutable in
2826
- def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src1, KRC:$src2),
2826
+ def kk : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src1, KRC:$src2),
2827
2827
!strconcat(OpcodeStr,
2828
2828
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2829
2829
[(set KRC:$dst, (OpNode KRC:$src1, KRC:$src2))]>,
@@ -2877,25 +2877,25 @@ multiclass avx512_binop_pat<SDPatternOperator VOpNode,
2877
2877
(COPY_TO_REGCLASS VK4:$src2, VK16)), VK4)>;
2878
2878
}
2879
2879
2880
- defm : avx512_binop_pat<and, KANDWrr >;
2881
- defm : avx512_binop_pat<vandn, KANDNWrr >;
2882
- defm : avx512_binop_pat<or, KORWrr >;
2883
- defm : avx512_binop_pat<vxnor, KXNORWrr >;
2884
- defm : avx512_binop_pat<xor, KXORWrr >;
2880
+ defm : avx512_binop_pat<and, KANDWkk >;
2881
+ defm : avx512_binop_pat<vandn, KANDNWkk >;
2882
+ defm : avx512_binop_pat<or, KORWkk >;
2883
+ defm : avx512_binop_pat<vxnor, KXNORWkk >;
2884
+ defm : avx512_binop_pat<xor, KXORWkk >;
2885
2885
2886
2886
// Mask unpacking
2887
2887
multiclass avx512_mask_unpck<string Suffix, X86KVectorVTInfo Dst,
2888
2888
X86KVectorVTInfo Src, X86FoldableSchedWrite sched,
2889
2889
Predicate prd> {
2890
2890
let Predicates = [prd] in {
2891
2891
let hasSideEffects = 0 in
2892
- def rr : I<0x4b, MRMSrcReg, (outs Dst.KRC:$dst),
2892
+ def kk : I<0x4b, MRMSrcReg, (outs Dst.KRC:$dst),
2893
2893
(ins Src.KRC:$src1, Src.KRC:$src2),
2894
2894
"kunpck"#Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
2895
2895
VEX, VVVV, VEX_L, Sched<[sched]>;
2896
2896
2897
2897
def : Pat<(Dst.KVT (concat_vectors Src.KRC:$src1, Src.KRC:$src2)),
2898
- (!cast<Instruction>(NAME#rr ) Src.KRC:$src2, Src.KRC:$src1)>;
2898
+ (!cast<Instruction>(NAME#kk ) Src.KRC:$src2, Src.KRC:$src1)>;
2899
2899
}
2900
2900
}
2901
2901
@@ -2908,7 +2908,7 @@ multiclass avx512_mask_testop<bits<8> opc, string OpcodeStr, RegisterClass KRC,
2908
2908
SDNode OpNode, X86FoldableSchedWrite sched,
2909
2909
Predicate prd> {
2910
2910
let Predicates = [prd], Defs = [EFLAGS] in
2911
- def rr : I<opc, MRMSrcReg, (outs), (ins KRC:$src1, KRC:$src2),
2911
+ def kk : I<opc, MRMSrcReg, (outs), (ins KRC:$src1, KRC:$src2),
2912
2912
!strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
2913
2913
[(set EFLAGS, (OpNode KRC:$src1, KRC:$src2))]>,
2914
2914
Sched<[sched]>;
@@ -2935,7 +2935,7 @@ defm KTEST : avx512_mask_testop_w<0x99, "ktest", X86ktest, SchedWriteVecLogic.
2935
2935
multiclass avx512_mask_shiftop<bits<8> opc, string OpcodeStr, RegisterClass KRC,
2936
2936
SDNode OpNode, X86FoldableSchedWrite sched> {
2937
2937
let Predicates = [HasAVX512] in
2938
- def ri : Ii8<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src, u8imm:$imm),
2938
+ def ki : Ii8<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src, u8imm:$imm),
2939
2939
!strconcat(OpcodeStr,
2940
2940
"\t{$imm, $src, $dst|$dst, $src, $imm}"),
2941
2941
[(set KRC:$dst, (OpNode KRC:$src, (i8 timm:$imm)))]>,
@@ -3463,12 +3463,12 @@ def VMOVUPSZ256mr_NOVLX : I<0, Pseudo, (outs), (ins f256mem:$dst, VR256X:$src),
3463
3463
3464
3464
def : Pat<(v8i64 (vselect VK8WM:$mask, (v8i64 immAllZerosV),
3465
3465
(v8i64 VR512:$src))),
3466
- (VMOVDQA64Zrrkz (COPY_TO_REGCLASS (KNOTWrr (COPY_TO_REGCLASS VK8:$mask, VK16)),
3466
+ (VMOVDQA64Zrrkz (COPY_TO_REGCLASS (KNOTWkk (COPY_TO_REGCLASS VK8:$mask, VK16)),
3467
3467
VK8), VR512:$src)>;
3468
3468
3469
3469
def : Pat<(v16i32 (vselect VK16WM:$mask, (v16i32 immAllZerosV),
3470
3470
(v16i32 VR512:$src))),
3471
- (VMOVDQA32Zrrkz (KNOTWrr VK16WM:$mask), VR512:$src)>;
3471
+ (VMOVDQA32Zrrkz (KNOTWkk VK16WM:$mask), VR512:$src)>;
3472
3472
3473
3473
// These patterns exist to prevent the above patterns from introducing a second
3474
3474
// mask inversion when one already exists.
@@ -10425,7 +10425,7 @@ defm VSCATTERPF1QPD: avx512_gather_scatter_prefetch<0xC7, MRM6m, "vscatterpf1qpd
10425
10425
VK8WM, vz512mem>, EVEX_V512, REX_W, EVEX_CD8<64, CD8VT1>;
10426
10426
10427
10427
multiclass cvt_by_vec_width<bits<8> opc, X86VectorVTInfo Vec, string OpcodeStr, SchedWrite Sched> {
10428
- def rr : AVX512XS8I<opc, MRMSrcReg, (outs Vec.RC:$dst), (ins Vec.KRC:$src),
10428
+ def rk : AVX512XS8I<opc, MRMSrcReg, (outs Vec.RC:$dst), (ins Vec.KRC:$src),
10429
10429
!strconcat(OpcodeStr#Vec.Suffix, "\t{$src, $dst|$dst, $src}"),
10430
10430
[(set Vec.RC:$dst, (Vec.VT (sext Vec.KRC:$src)))]>,
10431
10431
EVEX, Sched<[Sched]>;
@@ -10448,7 +10448,7 @@ defm VPMOVM2D : cvt_mask_by_elt_width<0x38, avx512vl_i32_info, "vpmovm2", HasDQI
10448
10448
defm VPMOVM2Q : cvt_mask_by_elt_width<0x38, avx512vl_i64_info, "vpmovm2", HasDQI> , REX_W;
10449
10449
10450
10450
multiclass convert_vector_to_mask_common<bits<8> opc, X86VectorVTInfo _, string OpcodeStr > {
10451
- def rr : AVX512XS8I<opc, MRMSrcReg, (outs _.KRC:$dst), (ins _.RC:$src),
10451
+ def kr : AVX512XS8I<opc, MRMSrcReg, (outs _.KRC:$dst), (ins _.RC:$src),
10452
10452
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
10453
10453
[(set _.KRC:$dst, (X86pcmpgtm _.ImmAllZerosV, (_.VT _.RC:$src)))]>,
10454
10454
EVEX, Sched<[WriteMove]>;
@@ -10461,7 +10461,7 @@ multiclass convert_vector_to_mask_lowering<X86VectorVTInfo ExtendInfo,
10461
10461
10462
10462
def : Pat<(_.KVT (X86pcmpgtm _.ImmAllZerosV, (_.VT _.RC:$src))),
10463
10463
(_.KVT (COPY_TO_REGCLASS
10464
- (!cast<Instruction>(Name#"Zrr ")
10464
+ (!cast<Instruction>(Name#"Zkr ")
10465
10465
(INSERT_SUBREG (ExtendInfo.VT (IMPLICIT_DEF)),
10466
10466
_.RC:$src, _.SubRegIdx)),
10467
10467
_.KRC))>;
@@ -10499,14 +10499,14 @@ defm VPMOVQ2M : avx512_convert_vector_to_mask<0x39, "vpmovq2m",
10499
10499
// a target independent DAG combine likes to combine sext and trunc.
10500
10500
let Predicates = [HasDQI, NoBWI] in {
10501
10501
def : Pat<(v16i8 (sext (v16i1 VK16:$src))),
10502
- (VPMOVDBZrr (v16i32 (VPMOVM2DZrr VK16:$src)))>;
10502
+ (VPMOVDBZrr (v16i32 (VPMOVM2DZrk VK16:$src)))>;
10503
10503
def : Pat<(v16i16 (sext (v16i1 VK16:$src))),
10504
- (VPMOVDWZrr (v16i32 (VPMOVM2DZrr VK16:$src)))>;
10504
+ (VPMOVDWZrr (v16i32 (VPMOVM2DZrk VK16:$src)))>;
10505
10505
}
10506
10506
10507
10507
let Predicates = [HasDQI, NoBWI, HasVLX] in {
10508
10508
def : Pat<(v8i16 (sext (v8i1 VK8:$src))),
10509
- (VPMOVDWZ256rr (v8i32 (VPMOVM2DZ256rr VK8:$src)))>;
10509
+ (VPMOVDWZ256rr (v8i32 (VPMOVM2DZ256rk VK8:$src)))>;
10510
10510
}
10511
10511
10512
10512
//===----------------------------------------------------------------------===//
0 commit comments