R600/SI: Merge tables for commuting
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 23 Mar 2015 18:45:41 +0000 (18:45 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 23 Mar 2015 18:45:41 +0000 (18:45 +0000)
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

lib/Target/R600/SIInstrInfo.cpp
lib/Target/R600/SIInstrInfo.h
lib/Target/R600/SIInstrInfo.td

index b0952e357f1fe8944d88efd084c8cc9f140bada2..88f9ee08c9eac08ce9f7e893f112ed81acbb6c9b 100644 (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
index 62140086bb611a82017453842a34445e173e6e96..a9aa99fc227380c8ea593b24146cf43f3fa1c73e 100644 (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);
index 3288d33f1cff72fa5bcedbd94bb432d72d365a80..a5a6d66c150a4d5f5b61a4b2f38625ccc74e71f8 100644 (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"];