radeon/llvm: Simplify the convert to ISA pass
authorTom Stellard <thomas.stellard@amd.com>
Thu, 23 Aug 2012 19:27:48 +0000 (19:27 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Thu, 23 Aug 2012 21:54:32 +0000 (21:54 +0000)
src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp
src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp
src/gallium/drivers/radeon/AMDGPUInstrInfo.h

index b876a660fe791e0ff81199d740d6313bfbf65410..fbca0a7b832a17f7e80dbe8395d44e9fc87d1931 100644 (file)
@@ -52,15 +52,10 @@ bool AMDGPUConvertToISAPass::runOnMachineFunction(MachineFunction &MF)
   for (MachineFunction::iterator BB = MF.begin(), BB_E = MF.end();
                                                   BB != BB_E; ++BB) {
     MachineBasicBlock &MBB = *BB;
-    for (MachineBasicBlock::iterator I = MBB.begin(), Next = llvm::next(I);
-         I != MBB.end(); I = Next, Next = llvm::next(I) ) {
+    for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end();
+                                                      I != E; ++I) {
       MachineInstr &MI = *I;
-      MachineInstr * newInstr = TII->convertToISA(MI, MF, MBB.findDebugLoc(I));
-      if (!newInstr) {
-        continue;
-      }
-      MBB.insert(I, newInstr);
-      MI.eraseFromParent();
+      TII->convertToISA(MI, MF, MBB.findDebugLoc(I));
     }
   }
   return false;
index 03a647e43874ec5833f4f65992c3463af8d773d7..9aae09a4a15eb5c3c8f2783892d0fb5d79c1a265 100644 (file)
@@ -27,7 +27,7 @@
 using namespace llvm;
 
 AMDGPUInstrInfo::AMDGPUInstrInfo(TargetMachine &tm)
-  : AMDGPUGenInstrInfo(), RI(tm, *this), TM(tm) { }
+  : AMDGPUGenInstrInfo(0,0), RI(tm, *this), TM(tm) { }
 
 const AMDGPURegisterInfo &AMDGPUInstrInfo::getRegisterInfo() const {
   return RI;
@@ -234,17 +234,13 @@ AMDGPUInstrInfo::isSafeToMoveRegClassDefs(const TargetRegisterClass *RC) const {
   // TODO: Implement this function
   return true;
 }
-
-MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr & MI, MachineFunction &MF,
+void AMDGPUInstrInfo::convertToISA(MachineInstr & MI, MachineFunction &MF,
     DebugLoc DL) const
 {
-  MachineInstrBuilder newInstr;
   MachineRegisterInfo &MRI = MF.getRegInfo();
   const AMDGPURegisterInfo & RI = getRegisterInfo();
 
-  // Create the new instruction
-  newInstr = BuildMI(MF, DL, TM.getInstrInfo()->get(MI.getOpcode()));
-
   for (unsigned i = 0; i < MI.getNumOperands(); i++) {
     MachineOperand &MO = MI.getOperand(i);
     // Convert dst regclass to one that is supported by the ISA
@@ -258,9 +254,5 @@ MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr & MI, MachineFunction
         MRI.setRegClass(MO.getReg(), newRegClass);
       }
     }
-    // Add the operand to the new instruction
-    newInstr.addOperand(MO);
   }
-
-  return newInstr;
 }
index dd5108e8192e24f1e7b15684747ef73e6bf8b619..264311962bae2c7026a129e7d006f8923c014ba7 100644 (file)
@@ -138,7 +138,7 @@ public:
 
   /// convertToISA - Convert the AMDIL MachineInstr to a supported ISA
   /// MachineInstr
-  virtual MachineInstr * convertToISA(MachineInstr & MI, MachineFunction &MF,
+  virtual void convertToISA(MachineInstr & MI, MachineFunction &MF,
     DebugLoc DL) const;
 
 };