@@ -6917,14 +6917,14 @@ def PCLMULCommuteImm : SDNodeXForm<timm, [{
6917
6917
let Predicates = [NoAVX, HasPCLMUL] in {
6918
6918
let Constraints = "$src1 = $dst" in {
6919
6919
let isCommutable = 1 in
6920
- def PCLMULQDQrr : PCLMULIi8<0x44, MRMSrcReg, (outs VR128:$dst),
6920
+ def PCLMULQDQrri : PCLMULIi8<0x44, MRMSrcReg, (outs VR128:$dst),
6921
6921
(ins VR128:$src1, VR128:$src2, u8imm:$src3),
6922
6922
"pclmulqdq\t{$src3, $src2, $dst|$dst, $src2, $src3}",
6923
6923
[(set VR128:$dst,
6924
6924
(int_x86_pclmulqdq VR128:$src1, VR128:$src2, timm:$src3))]>,
6925
6925
Sched<[WriteCLMul]>;
6926
6926
6927
- def PCLMULQDQrm : PCLMULIi8<0x44, MRMSrcMem, (outs VR128:$dst),
6927
+ def PCLMULQDQrmi : PCLMULIi8<0x44, MRMSrcMem, (outs VR128:$dst),
6928
6928
(ins VR128:$src1, i128mem:$src2, u8imm:$src3),
6929
6929
"pclmulqdq\t{$src3, $src2, $dst|$dst, $src2, $src3}",
6930
6930
[(set VR128:$dst,
@@ -6935,44 +6935,44 @@ let Predicates = [NoAVX, HasPCLMUL] in {
6935
6935
6936
6936
def : Pat<(int_x86_pclmulqdq (memop addr:$src2), VR128:$src1,
6937
6937
(i8 timm:$src3)),
6938
- (PCLMULQDQrm VR128:$src1, addr:$src2,
6938
+ (PCLMULQDQrmi VR128:$src1, addr:$src2,
6939
6939
(PCLMULCommuteImm timm:$src3))>;
6940
6940
} // Predicates = [NoAVX, HasPCLMUL]
6941
6941
6942
6942
// SSE aliases
6943
6943
foreach HI = ["hq","lq"] in
6944
6944
foreach LO = ["hq","lq"] in {
6945
6945
def : InstAlias<"pclmul" # HI # LO # "dq\t{$src, $dst|$dst, $src}",
6946
- (PCLMULQDQrr VR128:$dst, VR128:$src,
6946
+ (PCLMULQDQrri VR128:$dst, VR128:$src,
6947
6947
!add(!shl(!eq(LO,"hq"),4),!eq(HI,"hq"))), 0>;
6948
6948
def : InstAlias<"pclmul" # HI # LO # "dq\t{$src, $dst|$dst, $src}",
6949
- (PCLMULQDQrm VR128:$dst, i128mem:$src,
6949
+ (PCLMULQDQrmi VR128:$dst, i128mem:$src,
6950
6950
!add(!shl(!eq(LO,"hq"),4),!eq(HI,"hq"))), 0>;
6951
6951
}
6952
6952
6953
6953
// AVX carry-less Multiplication instructions
6954
6954
multiclass vpclmulqdq<RegisterClass RC, X86MemOperand MemOp,
6955
6955
PatFrag LdFrag, Intrinsic IntId> {
6956
6956
let isCommutable = 1 in
6957
- def rr : PCLMULIi8<0x44, MRMSrcReg, (outs RC:$dst),
6958
- (ins RC:$src1, RC:$src2, u8imm:$src3),
6959
- "vpclmulqdq\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
6960
- [(set RC:$dst,
6961
- (IntId RC:$src1, RC:$src2, timm:$src3))]>,
6962
- Sched<[WriteCLMul]>;
6963
-
6964
- def rm : PCLMULIi8<0x44, MRMSrcMem, (outs RC:$dst),
6965
- (ins RC:$src1, MemOp:$src2, u8imm:$src3),
6966
- "vpclmulqdq\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
6967
- [(set RC:$dst,
6968
- (IntId RC:$src1, (LdFrag addr:$src2), timm:$src3))]>,
6969
- Sched<[WriteCLMul.Folded, WriteCLMul.ReadAfterFold]>;
6957
+ def rri : PCLMULIi8<0x44, MRMSrcReg, (outs RC:$dst),
6958
+ (ins RC:$src1, RC:$src2, u8imm:$src3),
6959
+ "vpclmulqdq\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
6960
+ [(set RC:$dst,
6961
+ (IntId RC:$src1, RC:$src2, timm:$src3))]>,
6962
+ Sched<[WriteCLMul]>;
6963
+
6964
+ def rmi : PCLMULIi8<0x44, MRMSrcMem, (outs RC:$dst),
6965
+ (ins RC:$src1, MemOp:$src2, u8imm:$src3),
6966
+ "vpclmulqdq\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
6967
+ [(set RC:$dst,
6968
+ (IntId RC:$src1, (LdFrag addr:$src2), timm:$src3))]>,
6969
+ Sched<[WriteCLMul.Folded, WriteCLMul.ReadAfterFold]>;
6970
6970
6971
6971
// We can commute a load in the first operand by swapping the sources and
6972
6972
// rotating the immediate.
6973
6973
def : Pat<(IntId (LdFrag addr:$src2), RC:$src1, (i8 timm:$src3)),
6974
- (!cast<Instruction>(NAME#"rm ") RC:$src1, addr:$src2,
6975
- (PCLMULCommuteImm timm:$src3))>;
6974
+ (!cast<Instruction>(NAME#"rmi ") RC:$src1, addr:$src2,
6975
+ (PCLMULCommuteImm timm:$src3))>;
6976
6976
}
6977
6977
6978
6978
let Predicates = [HasAVX, NoVLX_Or_NoVPCLMULQDQ, HasPCLMUL] in
@@ -6986,10 +6986,10 @@ defm VPCLMULQDQY : vpclmulqdq<VR256, i256mem, load,
6986
6986
multiclass vpclmulqdq_aliases_impl<string InstStr, RegisterClass RC,
6987
6987
X86MemOperand MemOp, string Hi, string Lo> {
6988
6988
def : InstAlias<"vpclmul"#Hi#Lo#"dq\t{$src2, $src1, $dst|$dst, $src1, $src2}",
6989
- (!cast<Instruction>(InstStr # "rr ") RC:$dst, RC:$src1, RC:$src2,
6989
+ (!cast<Instruction>(InstStr # "rri ") RC:$dst, RC:$src1, RC:$src2,
6990
6990
!add(!shl(!eq(Lo,"hq"),4),!eq(Hi,"hq"))), 0>;
6991
6991
def : InstAlias<"vpclmul"#Hi#Lo#"dq\t{$src2, $src1, $dst|$dst, $src1, $src2}",
6992
- (!cast<Instruction>(InstStr # "rm ") RC:$dst, RC:$src1, MemOp:$src2,
6992
+ (!cast<Instruction>(InstStr # "rmi ") RC:$dst, RC:$src1, MemOp:$src2,
6993
6993
!add(!shl(!eq(Lo,"hq"),4),!eq(Hi,"hq"))), 0>;
6994
6994
}
6995
6995
0 commit comments