Skip to content

Commit 2b8f1da

Browse files
committed
[X86] Add missing immediate qualifier to the SSE42 (V)PCMPEST/PCMPIST string instruction names
1 parent 546f32d commit 2b8f1da

File tree

3 files changed

+34
-26
lines changed

3 files changed

+34
-26
lines changed

llvm/lib/Target/X86/X86ISelDAGToDAG.cpp

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6133,14 +6133,18 @@ void X86DAGToDAGISel::Select(SDNode *Node) {
61336133

61346134
MachineSDNode *CNode;
61356135
if (NeedMask) {
6136-
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPISTRMrr : X86::PCMPISTRMrr;
6137-
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPISTRMrm : X86::PCMPISTRMrm;
6136+
unsigned ROpc =
6137+
Subtarget->hasAVX() ? X86::VPCMPISTRMrri : X86::PCMPISTRMrri;
6138+
unsigned MOpc =
6139+
Subtarget->hasAVX() ? X86::VPCMPISTRMrmi : X86::PCMPISTRMrmi;
61386140
CNode = emitPCMPISTR(ROpc, MOpc, MayFoldLoad, dl, MVT::v16i8, Node);
61396141
ReplaceUses(SDValue(Node, 1), SDValue(CNode, 0));
61406142
}
61416143
if (NeedIndex || !NeedMask) {
6142-
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPISTRIrr : X86::PCMPISTRIrr;
6143-
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPISTRIrm : X86::PCMPISTRIrm;
6144+
unsigned ROpc =
6145+
Subtarget->hasAVX() ? X86::VPCMPISTRIrri : X86::PCMPISTRIrri;
6146+
unsigned MOpc =
6147+
Subtarget->hasAVX() ? X86::VPCMPISTRIrmi : X86::PCMPISTRIrmi;
61446148
CNode = emitPCMPISTR(ROpc, MOpc, MayFoldLoad, dl, MVT::i32, Node);
61456149
ReplaceUses(SDValue(Node, 0), SDValue(CNode, 0));
61466150
}
@@ -6168,15 +6172,19 @@ void X86DAGToDAGISel::Select(SDNode *Node) {
61686172

61696173
MachineSDNode *CNode;
61706174
if (NeedMask) {
6171-
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPESTRMrr : X86::PCMPESTRMrr;
6172-
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPESTRMrm : X86::PCMPESTRMrm;
6173-
CNode = emitPCMPESTR(ROpc, MOpc, MayFoldLoad, dl, MVT::v16i8, Node,
6174-
InGlue);
6175+
unsigned ROpc =
6176+
Subtarget->hasAVX() ? X86::VPCMPESTRMrri : X86::PCMPESTRMrri;
6177+
unsigned MOpc =
6178+
Subtarget->hasAVX() ? X86::VPCMPESTRMrmi : X86::PCMPESTRMrmi;
6179+
CNode =
6180+
emitPCMPESTR(ROpc, MOpc, MayFoldLoad, dl, MVT::v16i8, Node, InGlue);
61756181
ReplaceUses(SDValue(Node, 1), SDValue(CNode, 0));
61766182
}
61776183
if (NeedIndex || !NeedMask) {
6178-
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPESTRIrr : X86::PCMPESTRIrr;
6179-
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPESTRIrm : X86::PCMPESTRIrm;
6184+
unsigned ROpc =
6185+
Subtarget->hasAVX() ? X86::VPCMPESTRIrri : X86::PCMPESTRIrri;
6186+
unsigned MOpc =
6187+
Subtarget->hasAVX() ? X86::VPCMPESTRIrmi : X86::PCMPESTRIrmi;
61806188
CNode = emitPCMPESTR(ROpc, MOpc, MayFoldLoad, dl, MVT::i32, Node, InGlue);
61816189
ReplaceUses(SDValue(Node, 0), SDValue(CNode, 0));
61826190
}

llvm/lib/Target/X86/X86InstrSSE.td

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6561,12 +6561,12 @@ let Constraints = "$src1 = $dst" in
65616561
//===----------------------------------------------------------------------===//
65626562

65636563
multiclass pcmpistrm_SS42AI<string asm> {
6564-
def rr : SS42AI<0x62, MRMSrcReg, (outs),
6564+
def rri : SS42AI<0x62, MRMSrcReg, (outs),
65656565
(ins VR128:$src1, VR128:$src2, u8imm:$src3),
65666566
!strconcat(asm, "\t{$src3, $src2, $src1|$src1, $src2, $src3}"),
65676567
[]>, Sched<[WritePCmpIStrM]>;
65686568
let mayLoad = 1 in
6569-
def rm :SS42AI<0x62, MRMSrcMem, (outs),
6569+
def rmi :SS42AI<0x62, MRMSrcMem, (outs),
65706570
(ins VR128:$src1, i128mem:$src2, u8imm:$src3),
65716571
!strconcat(asm, "\t{$src3, $src2, $src1|$src1, $src2, $src3}"),
65726572
[]>, Sched<[WritePCmpIStrM.Folded, WritePCmpIStrM.ReadAfterFold]>;
@@ -6579,12 +6579,12 @@ let Defs = [XMM0, EFLAGS], hasSideEffects = 0 in {
65796579
}
65806580

65816581
multiclass SS42AI_pcmpestrm<string asm> {
6582-
def rr : SS42AI<0x60, MRMSrcReg, (outs),
6582+
def rri : SS42AI<0x60, MRMSrcReg, (outs),
65836583
(ins VR128:$src1, VR128:$src3, u8imm:$src5),
65846584
!strconcat(asm, "\t{$src5, $src3, $src1|$src1, $src3, $src5}"),
65856585
[]>, Sched<[WritePCmpEStrM]>;
65866586
let mayLoad = 1 in
6587-
def rm : SS42AI<0x60, MRMSrcMem, (outs),
6587+
def rmi : SS42AI<0x60, MRMSrcMem, (outs),
65886588
(ins VR128:$src1, i128mem:$src3, u8imm:$src5),
65896589
!strconcat(asm, "\t{$src5, $src3, $src1|$src1, $src3, $src5}"),
65906590
[]>, Sched<[WritePCmpEStrM.Folded, WritePCmpEStrM.ReadAfterFold]>;
@@ -6597,12 +6597,12 @@ let Defs = [XMM0, EFLAGS], Uses = [EAX, EDX], hasSideEffects = 0 in {
65976597
}
65986598

65996599
multiclass SS42AI_pcmpistri<string asm> {
6600-
def rr : SS42AI<0x63, MRMSrcReg, (outs),
6600+
def rri : SS42AI<0x63, MRMSrcReg, (outs),
66016601
(ins VR128:$src1, VR128:$src2, u8imm:$src3),
66026602
!strconcat(asm, "\t{$src3, $src2, $src1|$src1, $src2, $src3}"),
66036603
[]>, Sched<[WritePCmpIStrI]>;
66046604
let mayLoad = 1 in
6605-
def rm : SS42AI<0x63, MRMSrcMem, (outs),
6605+
def rmi : SS42AI<0x63, MRMSrcMem, (outs),
66066606
(ins VR128:$src1, i128mem:$src2, u8imm:$src3),
66076607
!strconcat(asm, "\t{$src3, $src2, $src1|$src1, $src2, $src3}"),
66086608
[]>, Sched<[WritePCmpIStrI.Folded, WritePCmpIStrI.ReadAfterFold]>;
@@ -6615,12 +6615,12 @@ let Defs = [ECX, EFLAGS], hasSideEffects = 0 in {
66156615
}
66166616

66176617
multiclass SS42AI_pcmpestri<string asm> {
6618-
def rr : SS42AI<0x61, MRMSrcReg, (outs),
6618+
def rri : SS42AI<0x61, MRMSrcReg, (outs),
66196619
(ins VR128:$src1, VR128:$src3, u8imm:$src5),
66206620
!strconcat(asm, "\t{$src5, $src3, $src1|$src1, $src3, $src5}"),
66216621
[]>, Sched<[WritePCmpEStrI]>;
66226622
let mayLoad = 1 in
6623-
def rm : SS42AI<0x61, MRMSrcMem, (outs),
6623+
def rmi : SS42AI<0x61, MRMSrcMem, (outs),
66246624
(ins VR128:$src1, i128mem:$src3, u8imm:$src5),
66256625
!strconcat(asm, "\t{$src5, $src3, $src1|$src1, $src3, $src5}"),
66266626
[]>, Sched<[WritePCmpEStrI.Folded, WritePCmpEStrI.ReadAfterFold]>;

llvm/test/TableGen/x86-fold-tables.inc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -866,10 +866,10 @@ static const X86FoldTableEntry Table1[] = {
866866
{X86::PABSBrr, X86::PABSBrm, TB_ALIGN_16},
867867
{X86::PABSDrr, X86::PABSDrm, TB_ALIGN_16},
868868
{X86::PABSWrr, X86::PABSWrm, TB_ALIGN_16},
869-
{X86::PCMPESTRIrr, X86::PCMPESTRIrm, 0},
870-
{X86::PCMPESTRMrr, X86::PCMPESTRMrm, 0},
871-
{X86::PCMPISTRIrr, X86::PCMPISTRIrm, 0},
872-
{X86::PCMPISTRMrr, X86::PCMPISTRMrm, 0},
869+
{X86::PCMPESTRIrri, X86::PCMPESTRIrmi, 0},
870+
{X86::PCMPESTRMrri, X86::PCMPESTRMrmi, 0},
871+
{X86::PCMPISTRIrri, X86::PCMPISTRIrmi, 0},
872+
{X86::PCMPISTRMrri, X86::PCMPISTRMrmi, 0},
873873
{X86::PF2IDrr, X86::PF2IDrm, 0},
874874
{X86::PF2IWrr, X86::PF2IWrm, 0},
875875
{X86::PFRCPrr, X86::PFRCPrm, 0},
@@ -1544,10 +1544,10 @@ static const X86FoldTableEntry Table1[] = {
15441544
{X86::VPBROADCASTWZ256rr, X86::VPBROADCASTWZ256rm, TB_NO_REVERSE},
15451545
{X86::VPBROADCASTWZrr, X86::VPBROADCASTWZrm, TB_NO_REVERSE},
15461546
{X86::VPBROADCASTWrr, X86::VPBROADCASTWrm, TB_NO_REVERSE},
1547-
{X86::VPCMPESTRIrr, X86::VPCMPESTRIrm, 0},
1548-
{X86::VPCMPESTRMrr, X86::VPCMPESTRMrm, 0},
1549-
{X86::VPCMPISTRIrr, X86::VPCMPISTRIrm, 0},
1550-
{X86::VPCMPISTRMrr, X86::VPCMPISTRMrm, 0},
1547+
{X86::VPCMPESTRIrri, X86::VPCMPESTRIrmi, 0},
1548+
{X86::VPCMPESTRMrri, X86::VPCMPESTRMrmi, 0},
1549+
{X86::VPCMPISTRIrri, X86::VPCMPISTRIrmi, 0},
1550+
{X86::VPCMPISTRMrri, X86::VPCMPISTRMrmi, 0},
15511551
{X86::VPCONFLICTDZ128rr, X86::VPCONFLICTDZ128rm, 0},
15521552
{X86::VPCONFLICTDZ256rr, X86::VPCONFLICTDZ256rm, 0},
15531553
{X86::VPCONFLICTDZrr, X86::VPCONFLICTDZrm, 0},

0 commit comments

Comments
 (0)