mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
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:
parent
16ef3632cf
commit
a9da1cee40
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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"];
|
||||
|
Loading…
Reference in New Issue
Block a user