Skip to content

Commit

Permalink
[X86] Add missing immediate qualifier to the SSE42 (V)PCMPEST/PCMPIST…
Browse files Browse the repository at this point in the history
… string instruction names
  • Loading branch information
RKSimon committed Mar 11, 2024
1 parent 546f32d commit 2b8f1da
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 26 deletions.
28 changes: 18 additions & 10 deletions llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6133,14 +6133,18 @@ void X86DAGToDAGISel::Select(SDNode *Node) {

MachineSDNode *CNode;
if (NeedMask) {
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPISTRMrr : X86::PCMPISTRMrr;
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPISTRMrm : X86::PCMPISTRMrm;
unsigned ROpc =
Subtarget->hasAVX() ? X86::VPCMPISTRMrri : X86::PCMPISTRMrri;
unsigned MOpc =
Subtarget->hasAVX() ? X86::VPCMPISTRMrmi : X86::PCMPISTRMrmi;
CNode = emitPCMPISTR(ROpc, MOpc, MayFoldLoad, dl, MVT::v16i8, Node);
ReplaceUses(SDValue(Node, 1), SDValue(CNode, 0));
}
if (NeedIndex || !NeedMask) {
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPISTRIrr : X86::PCMPISTRIrr;
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPISTRIrm : X86::PCMPISTRIrm;
unsigned ROpc =
Subtarget->hasAVX() ? X86::VPCMPISTRIrri : X86::PCMPISTRIrri;
unsigned MOpc =
Subtarget->hasAVX() ? X86::VPCMPISTRIrmi : X86::PCMPISTRIrmi;
CNode = emitPCMPISTR(ROpc, MOpc, MayFoldLoad, dl, MVT::i32, Node);
ReplaceUses(SDValue(Node, 0), SDValue(CNode, 0));
}
Expand Down Expand Up @@ -6168,15 +6172,19 @@ void X86DAGToDAGISel::Select(SDNode *Node) {

MachineSDNode *CNode;
if (NeedMask) {
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPESTRMrr : X86::PCMPESTRMrr;
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPESTRMrm : X86::PCMPESTRMrm;
CNode = emitPCMPESTR(ROpc, MOpc, MayFoldLoad, dl, MVT::v16i8, Node,
InGlue);
unsigned ROpc =
Subtarget->hasAVX() ? X86::VPCMPESTRMrri : X86::PCMPESTRMrri;
unsigned MOpc =
Subtarget->hasAVX() ? X86::VPCMPESTRMrmi : X86::PCMPESTRMrmi;
CNode =
emitPCMPESTR(ROpc, MOpc, MayFoldLoad, dl, MVT::v16i8, Node, InGlue);
ReplaceUses(SDValue(Node, 1), SDValue(CNode, 0));
}
if (NeedIndex || !NeedMask) {
unsigned ROpc = Subtarget->hasAVX() ? X86::VPCMPESTRIrr : X86::PCMPESTRIrr;
unsigned MOpc = Subtarget->hasAVX() ? X86::VPCMPESTRIrm : X86::PCMPESTRIrm;
unsigned ROpc =
Subtarget->hasAVX() ? X86::VPCMPESTRIrri : X86::PCMPESTRIrri;
unsigned MOpc =
Subtarget->hasAVX() ? X86::VPCMPESTRIrmi : X86::PCMPESTRIrmi;
CNode = emitPCMPESTR(ROpc, MOpc, MayFoldLoad, dl, MVT::i32, Node, InGlue);
ReplaceUses(SDValue(Node, 0), SDValue(CNode, 0));
}
Expand Down
16 changes: 8 additions & 8 deletions llvm/lib/Target/X86/X86InstrSSE.td
Original file line number Diff line number Diff line change
Expand Up @@ -6561,12 +6561,12 @@ let Constraints = "$src1 = $dst" in
//===----------------------------------------------------------------------===//

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

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

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

multiclass SS42AI_pcmpestri<string asm> {
def rr : SS42AI<0x61, MRMSrcReg, (outs),
def rri : SS42AI<0x61, MRMSrcReg, (outs),
(ins VR128:$src1, VR128:$src3, u8imm:$src5),
!strconcat(asm, "\t{$src5, $src3, $src1|$src1, $src3, $src5}"),
[]>, Sched<[WritePCmpEStrI]>;
let mayLoad = 1 in
def rm : SS42AI<0x61, MRMSrcMem, (outs),
def rmi : SS42AI<0x61, MRMSrcMem, (outs),
(ins VR128:$src1, i128mem:$src3, u8imm:$src5),
!strconcat(asm, "\t{$src5, $src3, $src1|$src1, $src3, $src5}"),
[]>, Sched<[WritePCmpEStrI.Folded, WritePCmpEStrI.ReadAfterFold]>;
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/TableGen/x86-fold-tables.inc
Original file line number Diff line number Diff line change
Expand Up @@ -866,10 +866,10 @@ static const X86FoldTableEntry Table1[] = {
{X86::PABSBrr, X86::PABSBrm, TB_ALIGN_16},
{X86::PABSDrr, X86::PABSDrm, TB_ALIGN_16},
{X86::PABSWrr, X86::PABSWrm, TB_ALIGN_16},
{X86::PCMPESTRIrr, X86::PCMPESTRIrm, 0},
{X86::PCMPESTRMrr, X86::PCMPESTRMrm, 0},
{X86::PCMPISTRIrr, X86::PCMPISTRIrm, 0},
{X86::PCMPISTRMrr, X86::PCMPISTRMrm, 0},
{X86::PCMPESTRIrri, X86::PCMPESTRIrmi, 0},
{X86::PCMPESTRMrri, X86::PCMPESTRMrmi, 0},
{X86::PCMPISTRIrri, X86::PCMPISTRIrmi, 0},
{X86::PCMPISTRMrri, X86::PCMPISTRMrmi, 0},
{X86::PF2IDrr, X86::PF2IDrm, 0},
{X86::PF2IWrr, X86::PF2IWrm, 0},
{X86::PFRCPrr, X86::PFRCPrm, 0},
Expand Down Expand Up @@ -1544,10 +1544,10 @@ static const X86FoldTableEntry Table1[] = {
{X86::VPBROADCASTWZ256rr, X86::VPBROADCASTWZ256rm, TB_NO_REVERSE},
{X86::VPBROADCASTWZrr, X86::VPBROADCASTWZrm, TB_NO_REVERSE},
{X86::VPBROADCASTWrr, X86::VPBROADCASTWrm, TB_NO_REVERSE},
{X86::VPCMPESTRIrr, X86::VPCMPESTRIrm, 0},
{X86::VPCMPESTRMrr, X86::VPCMPESTRMrm, 0},
{X86::VPCMPISTRIrr, X86::VPCMPISTRIrm, 0},
{X86::VPCMPISTRMrr, X86::VPCMPISTRMrm, 0},
{X86::VPCMPESTRIrri, X86::VPCMPESTRIrmi, 0},
{X86::VPCMPESTRMrri, X86::VPCMPESTRMrmi, 0},
{X86::VPCMPISTRIrri, X86::VPCMPISTRIrmi, 0},
{X86::VPCMPISTRMrri, X86::VPCMPISTRMrmi, 0},
{X86::VPCONFLICTDZ128rr, X86::VPCONFLICTDZ128rm, 0},
{X86::VPCONFLICTDZ256rr, X86::VPCONFLICTDZ256rm, 0},
{X86::VPCONFLICTDZrr, X86::VPCONFLICTDZrm, 0},
Expand Down

0 comments on commit 2b8f1da

Please sign in to comment.