@@ -6726,31 +6726,31 @@ let Predicates = [HasCRC32, HasEGPR, In64BitMode], OpMap = T_MAP4, OpEnc = EncEV
6726
6726
6727
6727
// FIXME: Is there a better scheduler class for SHA than WriteVecIMul?
6728
6728
multiclass SHAI_binop<bits<8> Opc, string OpcodeStr, Intrinsic IntId,
6729
- X86FoldableSchedWrite sched, string Suffix = "", bit UsesXMM0 = 0> {
6730
- def rr#Suffix : I<Opc, MRMSrcReg, (outs VR128:$dst),
6731
- (ins VR128:$src1, VR128:$src2),
6732
- !if(UsesXMM0,
6733
- !strconcat(OpcodeStr, "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
6734
- !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}")),
6735
- [!if(UsesXMM0,
6736
- (set VR128:$dst, (IntId VR128:$src1, VR128:$src2, XMM0)),
6737
- (set VR128:$dst, (IntId VR128:$src1, VR128:$src2)))]>,
6738
- T8, Sched<[sched]>;
6739
-
6740
- def rm#Suffix : I<Opc, MRMSrcMem, (outs VR128:$dst),
6741
- (ins VR128:$src1, i128mem:$src2),
6742
- !if(UsesXMM0,
6743
- !strconcat(OpcodeStr, "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
6744
- !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}")),
6745
- [!if(UsesXMM0,
6746
- (set VR128:$dst, (IntId VR128:$src1,
6747
- (memop addr:$src2), XMM0)),
6748
- (set VR128:$dst, (IntId VR128:$src1,
6749
- (memop addr:$src2))))]>, T8,
6750
- Sched<[sched.Folded, sched.ReadAfterFold]>;
6729
+ X86FoldableSchedWrite sched, bit UsesXMM0 = 0> {
6730
+ def rr : I<Opc, MRMSrcReg, (outs VR128:$dst),
6731
+ (ins VR128:$src1, VR128:$src2),
6732
+ !if(UsesXMM0,
6733
+ !strconcat(OpcodeStr, "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
6734
+ !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}")),
6735
+ [!if(UsesXMM0,
6736
+ (set VR128:$dst, (IntId VR128:$src1, VR128:$src2, XMM0)),
6737
+ (set VR128:$dst, (IntId VR128:$src1, VR128:$src2)))]>,
6738
+ T8, Sched<[sched]>;
6739
+
6740
+ def rm : I<Opc, MRMSrcMem, (outs VR128:$dst),
6741
+ (ins VR128:$src1, i128mem:$src2),
6742
+ !if(UsesXMM0,
6743
+ !strconcat(OpcodeStr, "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
6744
+ !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}")),
6745
+ [!if(UsesXMM0,
6746
+ (set VR128:$dst, (IntId VR128:$src1,
6747
+ (memop addr:$src2), XMM0)),
6748
+ (set VR128:$dst, (IntId VR128:$src1,
6749
+ (memop addr:$src2))))]>, T8,
6750
+ Sched<[sched.Folded, sched.ReadAfterFold]>;
6751
6751
}
6752
6752
6753
- let Constraints = "$src1 = $dst", Predicates = [HasSHA, NoEGPR ] in {
6753
+ let Constraints = "$src1 = $dst", Predicates = [HasSHA] in {
6754
6754
def SHA1RNDS4rri : Ii8<0xCC, MRMSrcReg, (outs VR128:$dst),
6755
6755
(ins VR128:$src1, VR128:$src2, u8imm:$src3),
6756
6756
"sha1rnds4\t{$src3, $src2, $dst|$dst, $src2, $src3}",
@@ -6777,55 +6777,14 @@ let Constraints = "$src1 = $dst", Predicates = [HasSHA, NoEGPR] in {
6777
6777
6778
6778
let Uses=[XMM0] in
6779
6779
defm SHA256RNDS2 : SHAI_binop<0xCB, "sha256rnds2", int_x86_sha256rnds2,
6780
- SchedWriteVecIMul.XMM, "", 1>;
6780
+ SchedWriteVecIMul.XMM, 1>;
6781
6781
6782
6782
defm SHA256MSG1 : SHAI_binop<0xCC, "sha256msg1", int_x86_sha256msg1,
6783
6783
SchedWriteVecIMul.XMM>;
6784
6784
defm SHA256MSG2 : SHAI_binop<0xCD, "sha256msg2", int_x86_sha256msg2,
6785
6785
SchedWriteVecIMul.XMM>;
6786
6786
}
6787
6787
6788
- let Constraints = "$src1 = $dst", Predicates = [HasSHA, HasEGPR, In64BitMode] in {
6789
- def SHA1RNDS4rri_EVEX: Ii8<0xD4, MRMSrcReg, (outs VR128:$dst),
6790
- (ins VR128:$src1, VR128:$src2, u8imm:$src3),
6791
- "sha1rnds4\t{$src3, $src2, $dst|$dst, $src2, $src3}",
6792
- [(set VR128:$dst,
6793
- (int_x86_sha1rnds4 VR128:$src1, VR128:$src2,
6794
- (i8 timm:$src3)))]>,
6795
- EVEX, NoCD8, T_MAP4, Sched<[SchedWriteVecIMul.XMM]>;
6796
- def SHA1RNDS4rmi_EVEX: Ii8<0xD4, MRMSrcMem, (outs VR128:$dst),
6797
- (ins VR128:$src1, i128mem:$src2, u8imm:$src3),
6798
- "sha1rnds4\t{$src3, $src2, $dst|$dst, $src2, $src3}",
6799
- [(set VR128:$dst,
6800
- (int_x86_sha1rnds4 VR128:$src1,
6801
- (memop addr:$src2),
6802
- (i8 timm:$src3)))]>,
6803
- EVEX, NoCD8, T_MAP4,
6804
- Sched<[SchedWriteVecIMul.XMM.Folded,
6805
- SchedWriteVecIMul.XMM.ReadAfterFold]>;
6806
-
6807
- defm SHA1NEXTE : SHAI_binop<0xD8, "sha1nexte", int_x86_sha1nexte,
6808
- SchedWriteVecIMul.XMM, "_EVEX">,
6809
- EVEX, NoCD8, T_MAP4;
6810
- defm SHA1MSG1 : SHAI_binop<0xD9, "sha1msg1", int_x86_sha1msg1,
6811
- SchedWriteVecIMul.XMM, "_EVEX">,
6812
- EVEX, NoCD8, T_MAP4;
6813
- defm SHA1MSG2 : SHAI_binop<0xDA, "sha1msg2", int_x86_sha1msg2,
6814
- SchedWriteVecIMul.XMM, "_EVEX">,
6815
- EVEX, NoCD8, T_MAP4;
6816
-
6817
- let Uses=[XMM0] in
6818
- defm SHA256RNDS2 : SHAI_binop<0xDB, "sha256rnds2", int_x86_sha256rnds2,
6819
- SchedWriteVecIMul.XMM, "_EVEX", 1>,
6820
- EVEX, NoCD8, T_MAP4;
6821
-
6822
- defm SHA256MSG1 : SHAI_binop<0xDC, "sha256msg1", int_x86_sha256msg1,
6823
- SchedWriteVecIMul.XMM, "_EVEX">,
6824
- EVEX, NoCD8, T_MAP4;
6825
- defm SHA256MSG2 : SHAI_binop<0xDD, "sha256msg2", int_x86_sha256msg2,
6826
- SchedWriteVecIMul.XMM, "_EVEX">,
6827
- EVEX, NoCD8, T_MAP4;
6828
- }
6829
6788
6830
6789
//===----------------------------------------------------------------------===//
6831
6790
// AES-NI Instructions
0 commit comments