R600/SI: Merge tables for commuting

Don't use a separate table for compares anymore,
and use the same VOP2_REV class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232992 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Matt Arsenault 2015-03-23 18:45:41 +00:00
parent 16ef3632cf
commit a9da1cee40
3 changed files with 3 additions and 32 deletions

View File

@ -426,29 +426,9 @@ SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
}
}
static unsigned commuteCompareOpcode(unsigned Opcode) {
// Compares have arbitrarily selected that < is the "original" and > is the
// "reverse"
int NewOpc;
NewOpc = AMDGPU::getCommuteCmpRev(Opcode);
if (NewOpc != -1)
return NewOpc;
NewOpc = AMDGPU::getCommuteCmpOrig(Opcode);
if (NewOpc != -1)
return NewOpc;
return Opcode;
}
unsigned SIInstrInfo::commuteOpcode(const MachineInstr &MI) const {
const unsigned Opcode = MI.getOpcode();
if (MI.isCompare())
return commuteCompareOpcode(Opcode);
int NewOpc;
// Try to map original to commuted opcode

View File

@ -349,10 +349,6 @@ namespace AMDGPU {
int getVOPe32(uint16_t Opcode);
int getCommuteRev(uint16_t Opcode);
int getCommuteOrig(uint16_t Opcode);
int getCommuteCmpRev(uint16_t Opcode);
int getCommuteCmpOrig(uint16_t Opcode);
int getAddr64Inst(uint16_t Opcode);
int getAtomicRetOp(uint16_t Opcode);
int getAtomicNoRetOp(uint16_t Opcode);

View File

@ -829,11 +829,6 @@ class VOP2_REV <string revOp, bit isOrig> {
bit IsOrig = isOrig;
}
class VOPC_REV <string revOp, bit isOrig> {
string RevOp = revOp;
bit IsOrig = isOrig;
}
class AtomicNoRet <string noRetOp, bit isRet> {
string NoRetOp = noRetOp;
bit IsRet = isRet;
@ -1077,7 +1072,7 @@ multiclass VOP3_C_m <vop op, dag outs, dag ins, string asm,
bit HasMods, bit defExec, string revOp> {
def "" : VOP3_Pseudo <outs, ins, pattern, opName>,
VOPC_REV<revOp#"_e64", !eq(revOp, opName)>;
VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
VOP3DisableFields<1, 0, HasMods> {
@ -2246,7 +2241,7 @@ def getCommuteRev : InstrMapping {
}
def getCommuteCmpOrig : InstrMapping {
let FilterClass = "VOPC_REV";
let FilterClass = "VOP2_REV";
let RowFields = ["RevOp"];
let ColFields = ["IsOrig"];
let KeyCol = ["0"];
@ -2255,7 +2250,7 @@ def getCommuteCmpOrig : InstrMapping {
// Maps an original opcode to its commuted version
def getCommuteCmpRev : InstrMapping {
let FilterClass = "VOPC_REV";
let FilterClass = "VOP2_REV";
let RowFields = ["RevOp"];
let ColFields = ["IsOrig"];
let KeyCol = ["1"];