radeon/llvm: More comments and cleanups
authorTom Stellard <thomas.stellard@amd.com>
Fri, 11 May 2012 17:44:24 +0000 (13:44 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Fri, 11 May 2012 19:09:52 +0000 (15:09 -0400)
22 files changed:
src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp
src/gallium/drivers/radeon/AMDGPUISelLowering.cpp
src/gallium/drivers/radeon/AMDGPUISelLowering.h
src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp
src/gallium/drivers/radeon/AMDGPUInstrInfo.h
src/gallium/drivers/radeon/AMDGPULowerInstructions.cpp
src/gallium/drivers/radeon/AMDGPURegisterInfo.h
src/gallium/drivers/radeon/AMDGPUTargetMachine.cpp
src/gallium/drivers/radeon/AMDGPUTargetMachine.h
src/gallium/drivers/radeon/AMDGPUUtil.cpp
src/gallium/drivers/radeon/AMDGPUUtil.h
src/gallium/drivers/radeon/R600CodeEmitter.cpp
src/gallium/drivers/radeon/R600ISelLowering.h
src/gallium/drivers/radeon/R600RegisterInfo.h
src/gallium/drivers/radeon/SIAssignInterpRegs.cpp
src/gallium/drivers/radeon/SICodeEmitter.cpp
src/gallium/drivers/radeon/SIISelLowering.cpp
src/gallium/drivers/radeon/SIISelLowering.h
src/gallium/drivers/radeon/SIInstrInfo.h
src/gallium/drivers/radeon/SIPropagateImmReads.cpp
src/gallium/drivers/radeon/SIRegisterInfo.cpp
src/gallium/drivers/radeon/SIRegisterInfo.h

index 8e82b8438bbfc54305daaa70e06fea73ddfa0e4d..1a3cf014d51cc00f09582d89200e447d2159baa3 100644 (file)
 using namespace llvm;
 
 namespace {
-  class AMDGPUConvertToISAPass : public MachineFunctionPass {
 
-  private:
-    static char ID;
-    TargetMachine &TM;
+class AMDGPUConvertToISAPass : public MachineFunctionPass {
 
-    void lowerFLT(MachineInstr &MI);
+private:
+  static char ID;
+  TargetMachine &TM;
 
-  public:
-    AMDGPUConvertToISAPass(TargetMachine &tm) :
-      MachineFunctionPass(ID), TM(tm) { }
+public:
+  AMDGPUConvertToISAPass(TargetMachine &tm) :
+    MachineFunctionPass(ID), TM(tm) { }
 
-    virtual bool runOnMachineFunction(MachineFunction &MF);
+  virtual bool runOnMachineFunction(MachineFunction &MF);
+};
 
-  };
 } // End anonymous namespace
 
 char AMDGPUConvertToISAPass::ID = 0;
index 2bdc8a759f2bff39b923b6bbb3dd65d57f617ba8..8d4207f24d4dc17ea0b8dee67b0a8a031ef141ce 100644 (file)
@@ -24,8 +24,8 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(TargetMachine &TM) :
 
 void AMDGPUTargetLowering::addLiveIn(MachineInstr * MI,
     MachineFunction * MF, MachineRegisterInfo & MRI,
-    const struct TargetInstrInfo * TII, unsigned reg) const
+    const TargetInstrInfo * TII, unsigned reg) const
 {
-  AMDGPU::utilAddLiveIn(MF, MRI, TII, reg, MI->getOperand(0).getReg()); 
+  AMDGPU::utilAddLiveIn(MF, MRI, TII, reg, MI->getOperand(0).getReg());
 }
 
index 1b3f71006e208aa9ea9b9d3eb3402ed41ee604fa..16adf1b32bbdbb6ec6289e7c5a1b0b521848af37 100644 (file)
@@ -22,8 +22,15 @@ namespace llvm {
 class AMDGPUTargetLowering : public AMDILTargetLowering
 {
 protected:
+
+  /// addLiveIn - This functions adds reg to the live in list of the entry block
+  /// and emits a copy from reg to MI.getOperand(0).
+  ///
+  //  Some registers are loaded with values before the program
+  /// begins to execute.  The loading of these values is modeled with pseudo
+  /// instructions which are lowered using this function. 
   void addLiveIn(MachineInstr * MI, MachineFunction * MF,
-                 MachineRegisterInfo & MRI, const struct TargetInstrInfo * TII,
+                 MachineRegisterInfo & MRI, const TargetInstrInfo * TII,
                 unsigned reg) const;
 
 public:
@@ -31,6 +38,6 @@ public:
 
 };
 
-} /* End namespace llvm */
+} // End namespace llvm
 
-#endif /* AMDGPUISELLOWERING_H */
+#endif // AMDGPUISELLOWERING_H
index ecd8ac9052631983c610ea3a3d91eda9c8f10660..2d683c7bcee31bfce3a44d9c48703a1f17ae2004 100644 (file)
@@ -76,12 +76,12 @@ MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr & MI, MachineFunction
   const AMDGPURegisterInfo & RI = getRegisterInfo();
   unsigned ISAOpcode = getISAOpcode(MI.getOpcode());
 
-  /* Create the new instruction */
+  // Create the new instruction
   newInstr = BuildMI(MF, DL, TM.getInstrInfo()->get(ISAOpcode));
 
   for (unsigned i = 0; i < MI.getNumOperands(); i++) {
     MachineOperand &MO = MI.getOperand(i);
-    /* Convert dst regclass to one that is supported by the ISA */
+    // Convert dst regclass to one that is supported by the ISA
     if (MO.isReg() && MO.isDef()) {
       if (TargetRegisterInfo::isVirtualRegister(MO.getReg())) {
         const TargetRegisterClass * oldRegClass = MRI.getRegClass(MO.getReg());
@@ -92,7 +92,7 @@ MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr & MI, MachineFunction
         MRI.setRegClass(MO.getReg(), newRegClass);
       }
     }
-    /* Add the operand to the new instruction */
+    // Add the operand to the new instruction
     newInstr.addOperand(MO);
   }
 
index 930b41e71916b7e91d301b1ca345209fad70d24e..0f3698930a9c5af64ace6e29a0752b5d80636393 100644 (file)
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// This file contains the definitoin of a TargetInstrInfo class that is common
+// This file contains the definition of a TargetInstrInfo class that is common
 // to all AMD GPUs.
 //
 //===----------------------------------------------------------------------===//
@@ -37,8 +37,12 @@ public:
 
   virtual const AMDGPURegisterInfo &getRegisterInfo() const = 0;
 
+  /// getISAOpcode - This function takes an AMDIL opcode as an argument and
+  /// returns an equivalent ISA opcode.
   virtual unsigned getISAOpcode(unsigned AMDILopcode) const;
 
+  /// convertToISA - Convert the AMDIL MachineInstr to a supported ISA
+  /// MachineInstr
   virtual MachineInstr * convertToISA(MachineInstr & MI, MachineFunction &MF,
     DebugLoc DL) const;
 
index 2e455fea8aba0ab27bd5d9531ab94584afc22486..42374ef12549efe791db72fd0ab74b69bd1ec52e 100644 (file)
 using namespace llvm;
 
 namespace {
-  class AMDGPULowerInstructionsPass : public MachineFunctionPass {
 
-  private:
-    static char ID;
-    TargetMachine &TM;
-    void lowerVCREATE_v4(MachineInstr &MI, MachineBasicBlock::iterator I,
-                              MachineBasicBlock &MBB, MachineFunction &MF);
+class AMDGPULowerInstructionsPass : public MachineFunctionPass {
 
-  public:
-    AMDGPULowerInstructionsPass(TargetMachine &tm) :
-      MachineFunctionPass(ID), TM(tm) { }
+private:
+  static char ID;
+  TargetMachine &TM;
+  void lowerVCREATE_v4(MachineInstr &MI, MachineBasicBlock::iterator I,
+                            MachineBasicBlock &MBB, MachineFunction &MF);
 
-    virtual bool runOnMachineFunction(MachineFunction &MF);
+public:
+  AMDGPULowerInstructionsPass(TargetMachine &tm) :
+    MachineFunctionPass(ID), TM(tm) { }
 
-  };
-} /* End anonymous namespace */
+  virtual bool runOnMachineFunction(MachineFunction &MF);
+
+};
+
+} // End anonymous namespace
 
 char AMDGPULowerInstructionsPass::ID = 0;
 
index d545c06f69e7a27bd7c4db3c410c19d716325884..5863807a1392322e2d96791c5979a20f08bef77f 100644 (file)
 
 namespace llvm {
 
-  class AMDGPUTargetMachine;
-  class TargetInstrInfo;
+class AMDGPUTargetMachine;
+class TargetInstrInfo;
 
-  struct AMDGPURegisterInfo : public AMDILRegisterInfo
-  {
-    AMDGPUTargetMachine &TM;
-    const TargetInstrInfo &TII;
+struct AMDGPURegisterInfo : public AMDILRegisterInfo
+{
+  AMDGPUTargetMachine &TM;
+  const TargetInstrInfo &TII;
 
-    AMDGPURegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii);
+  AMDGPURegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii);
 
-    virtual BitVector getReservedRegs(const MachineFunction &MF) const = 0;
+  virtual BitVector getReservedRegs(const MachineFunction &MF) const = 0;
 
-    virtual const TargetRegisterClass *
+  /// getISARegClass - rc is an AMDIL reg class.  This function returns the
+  /// ISA reg class that is equivalent to the given AMDIL reg class.
+  virtual const TargetRegisterClass *
     getISARegClass(const TargetRegisterClass * rc) const = 0;
-  };
+};
+
 } // End namespace llvm
 
 #endif // AMDIDSAREGISTERINFO_H_
index c1c21abc9c11186906295dbc6f2ba493c9bc053c..5c4d82b6597f88b3c7debb9034ffe2eaf1c2b43c 100644 (file)
@@ -45,7 +45,7 @@ AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, StringRef TT,
   mDump(false)
 
 {
-  /* TLInfo uses InstrInfo so it must be initialized after. */
+  // TLInfo uses InstrInfo so it must be initialized after.
   if (Subtarget.device()->getGeneration() <= AMDILDeviceInfo::HD6XXX) {
     InstrInfo = new R600InstrInfo(*this);
     TLInfo = new R600TargetLowering(*this);
@@ -63,8 +63,8 @@ bool AMDGPUTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
                                               formatted_raw_ostream &Out,
                                               CodeGenFileType FileType,
                                               bool DisableVerify) {
-  /* XXX: Hack here addPassesToEmitFile will fail, but this is Ok since we are
-   * only using it to access addPassesToGenerateCode() */
+  // XXX: Hack here addPassesToEmitFile will fail, but this is Ok since we are
+  // only using it to access addPassesToGenerateCode()
   bool fail = LLVMTargetMachine::addPassesToEmitFile(PM, Out, FileType,
                                                      DisableVerify);
   assert(fail);
index 2428fe638a731e14078ec162be4587b2b51b3657..2f60e76299b887db0e689ed4feb421ec35dbe001 100644 (file)
@@ -54,6 +54,6 @@ public:
                                               bool DisableVerify);
 };
 
-} /* End namespace llvm */
+} // End namespace llvm
 
-#endif /* AMDGPU_TARGET_MACHINE_H */
+#endif // AMDGPU_TARGET_MACHINE_H
index bd8f5eef697217e32add6fcbe85745c5c8eb11f2..f0621384dbc0899a55440f220076993254bcfaa5 100644 (file)
@@ -119,7 +119,7 @@ bool AMDGPU::isFCOp(unsigned opcode)
   case AMDIL::CONTINUE_LOGICALNZ_f32:
   case AMDIL::IF_LOGICALNZ_i32:
   case AMDIL::IF_LOGICALZ_f32:
-       case AMDIL::ELSE:
+  case AMDIL::ELSE:
   case AMDIL::ENDIF:
   case AMDIL::ENDLOOP:
   case AMDIL::IF_LOGICALNZ_f32:
@@ -129,16 +129,16 @@ bool AMDGPU::isFCOp(unsigned opcode)
 }
 
 void AMDGPU::utilAddLiveIn(llvm::MachineFunction * MF,
-                                                                                                        llvm::MachineRegisterInfo & MRI,
-                                                                                                        const struct llvm::TargetInstrInfo * TII,
-                                                                                                        unsigned physReg, unsigned virtReg)
+                           llvm::MachineRegisterInfo & MRI,
+                           const llvm::TargetInstrInfo * TII,
+                           unsigned physReg, unsigned virtReg)
 {
     if (!MRI.isLiveIn(physReg)) {
       MRI.addLiveIn(physReg, virtReg);
       MF->front().addLiveIn(physReg);
       BuildMI(MF->front(), MF->front().begin(), DebugLoc(),
-                           TII->get(TargetOpcode::COPY), virtReg)
-            .addReg(physReg);
+              TII->get(TargetOpcode::COPY), virtReg)
+                .addReg(physReg);
     } else {
       MRI.replaceRegWith(virtReg, MRI.getLiveInVirtReg(physReg));
     }
index 15f2ce57af96ee4821567679da630b56d6ec1e91..633ea3bf6cf71acd4999d99995f8316ba973b830 100644 (file)
@@ -39,7 +39,7 @@ bool isFCOp(unsigned opcode);
 #define MO_FLAG_MASK  (1 << 3)
 
 void utilAddLiveIn(llvm::MachineFunction * MF, llvm::MachineRegisterInfo & MRI,
-    const struct llvm::TargetInstrInfo * TII, unsigned physReg, unsigned virtReg);
+    const llvm::TargetInstrInfo * TII, unsigned physReg, unsigned virtReg);
 
 } // End namespace AMDGPU
 
index 421562255f6a09603c9cb2f1e6ad4c4cc5e6da1f..cc1fbb72cf5b44dd6b2c413ba353c994e5476a4e 100644 (file)
@@ -90,8 +90,6 @@ namespace {
 
   unsigned getHWReg(unsigned regNo) const;
 
-  unsigned getElement(unsigned regNo);
-
 };
 
 } /* End anonymous namespace */
@@ -710,19 +708,5 @@ uint64_t R600CodeEmitter::getMachineOpValue(const MachineInstr &MI,
   }
 }
 
-
-RegElement maskBitToElement(unsigned int maskBit)
-{
-  switch (maskBit) {
-    case WRITE_MASK_X: return ELEMENT_X;
-    case WRITE_MASK_Y: return ELEMENT_Y;
-    case WRITE_MASK_Z: return ELEMENT_Z;
-    case WRITE_MASK_W: return ELEMENT_W;
-    default:
-      assert("Invalid maskBit");
-      return ELEMENT_X;
-  }
-}
-
 #include "AMDILGenCodeEmitter.inc"
 
index fdd552a172d6254ba46239c5a961ac702cdb6af5..6296145f668e6d8ea74a363340e8ec2af252c746 100644 (file)
@@ -30,6 +30,10 @@ public:
 private:
   const R600InstrInfo * TII;
 
+  /// lowerImplicitParameter - Each OpenCL kernel has nine implicit parameters
+  /// that are stored in the first nine dwords of a Vertex Buffer.  These
+  /// implicit parameters are represented by pseudo instructions, which are
+  /// lowered to VTX_READ instructions by this function. 
   void lowerImplicitParameter(MachineInstr *MI, MachineBasicBlock &BB,
       MachineRegisterInfo & MRI, unsigned dword_offset) const;
 
index 89a11f9333b3fa704a9289072414533f12b35ab7..7525a97d50a50c847d53d9f9d1880152033346f8 100644 (file)
 
 namespace llvm {
 
-  class R600TargetMachine;
-  class TargetInstrInfo;
+class R600TargetMachine;
+class TargetInstrInfo;
 
-  struct R600RegisterInfo : public AMDGPURegisterInfo
-  {
-    AMDGPUTargetMachine &TM;
-    const TargetInstrInfo &TII;
+struct R600RegisterInfo : public AMDGPURegisterInfo
+{
+  AMDGPUTargetMachine &TM;
+  const TargetInstrInfo &TII;
 
-    R600RegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii);
+  R600RegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii);
 
-    virtual BitVector getReservedRegs(const MachineFunction &MF) const;
+  virtual BitVector getReservedRegs(const MachineFunction &MF) const;
+
+  /// getISARegClass - rc is an AMDIL reg class.  This function returns the
+  /// R600 reg class that is equivalent to the given AMDIL reg class.
+  virtual const TargetRegisterClass * getISARegClass(
+    const TargetRegisterClass * rc) const;
+
+  /// getHWRegIndex - get the HW encoding for a register.
+  unsigned getHWRegIndex(unsigned reg) const;
+
+  /// getHWRegChan - get the HW encoding for a register's channel.
+  unsigned getHWRegChan(unsigned reg) const;
 
-    virtual const TargetRegisterClass *
-    getISARegClass(const TargetRegisterClass * rc) const;
-    unsigned getHWRegIndex(unsigned reg) const;
-    unsigned getHWRegChan(unsigned reg) const;
 private:
-    unsigned getHWRegChanGen(unsigned reg) const;
-    unsigned getHWRegIndexGen(unsigned reg) const;
-  };
+  /// getHWRegIndexGen - Generated function returns a register's encoding
+  unsigned getHWRegIndexGen(unsigned reg) const;
+  /// getHWRegChanGen - Generated function returns a register's channel
+  /// encoding.
+  unsigned getHWRegChanGen(unsigned reg) const;
+};
+
 } // End namespace llvm
 
 #endif // AMDIDSAREGISTERINFO_H_
index 1ef097f7b1e6bb34c8738003ead544592eba8f47..a2d14b5fb2f98dd7115e5272f7718037bb0bf5fb 100644 (file)
 using namespace llvm;
 
 namespace {
-  class SIAssignInterpRegsPass : public MachineFunctionPass {
 
-  private:
-    static char ID;
-    TargetMachine &TM;
+class SIAssignInterpRegsPass : public MachineFunctionPass {
 
-  public:
-    SIAssignInterpRegsPass(TargetMachine &tm) :
-      MachineFunctionPass(ID), TM(tm) { }
+private:
+  static char ID;
+  TargetMachine &TM;
 
-    virtual bool runOnMachineFunction(MachineFunction &MF);
+public:
+  SIAssignInterpRegsPass(TargetMachine &tm) :
+    MachineFunctionPass(ID), TM(tm) { }
+
+  virtual bool runOnMachineFunction(MachineFunction &MF);
+
+  const char *getPassName() const { return "SI Assign intrpolation registers"; }
+};
 
-    const char *getPassName() const { return "SI Assign intrpolation registers"; }
-  };
 } // End anonymous namespace
 
 char SIAssignInterpRegsPass::ID = 0;
index 6970d9f0875881eccccca886ac8532d3894bef40..1db9764365a4dc22ed0d09610aef3a8f9542e055 100644 (file)
@@ -49,14 +49,24 @@ namespace {
         _OS(OS), TM(NULL) { }
     const char *getPassName() const { return "SI Code Emitter"; }
     bool runOnMachineFunction(MachineFunction &MF);
+
+    /// getMachineOpValue - Return the encoding for MO
     virtual uint64_t getMachineOpValue(const MachineInstr &MI,
                                        const MachineOperand &MO) const;
+
+    /// GPR4AlignEncode - Encoding for when 4 consectuive registers are used 
     virtual unsigned GPR4AlignEncode(const MachineInstr  &MI, unsigned OpNo)
                                                                       const;
+
+    /// GPR2AlignEncode - Encoding for when 2 consecutive registers are used
     virtual unsigned GPR2AlignEncode(const MachineInstr &MI, unsigned OpNo)
                                                                       const;
+    /// i32LiteralEncode - Encode an i32 literal this is used as an operand
+    /// for an instruction in place of a register.
     virtual uint64_t i32LiteralEncode(const MachineInstr &MI, unsigned OpNo)
                                                                       const;
+
+    /// VOPPostEncode - Post-Encoder method for VOP instructions 
     virtual uint64_t VOPPostEncode(const MachineInstr &MI,
                                    uint64_t Value) const;
   };
@@ -174,8 +184,6 @@ void SICodeEmitter::emitInstr(MachineInstr &MI)
     abort();
   }
 
-//  hwInst |= SII->getBinaryCode(MI);
-
   unsigned bytes = SII->getEncodingBytes(MI);
   outputBytes(hwInst, bytes);
 }
@@ -194,8 +202,8 @@ uint64_t SICodeEmitter::getMachineOpValue(const MachineInstr &MI,
     return MO.getImm();
 
   case MachineOperand::MO_FPImmediate:
-    /* XXX: Not all instructions can use inline literals */
-    /* XXX: We should make sure this is a 32-bit constant */
+    // XXX: Not all instructions can use inline literals
+    // XXX: We should make sure this is a 32-bit constant
     return LITERAL_REG | (MO.getFPImm()->getValueAPF().bitcastToAPInt().getZExtValue() << 32);
   default:
     llvm_unreachable("Encoding of this operand type is not supported yet.");
@@ -230,9 +238,8 @@ uint64_t SICodeEmitter::i32LiteralEncode(const MachineInstr &MI,
   return LITERAL_REG | (MI.getOperand(OpNo).getImm() << 32);
 }
 
-/* Set the "VGPR" bit for VOP args that can take either a VGPR or a SGPR.
- * XXX: It would be nice if we could handle this without a PostEncode function.
- */
+/// Set the "VGPR" bit for VOP args that can take either a VGPR or a SGPR.
+/// XXX: It would be nice if we could handle this without a PostEncode function.
 uint64_t SICodeEmitter::VOPPostEncode(const MachineInstr &MI,
     uint64_t Value) const
 {
@@ -249,7 +256,7 @@ uint64_t SICodeEmitter::VOPPostEncode(const MachineInstr &MI,
     vgprBitOffset = 0;
   }
 
-  /* Add one to skip over the destination reg operand. */
+  // Add one to skip over the destination reg operand.
   for (unsigned opIdx = 1; opIdx < numSrcOps + 1; opIdx++) {
     if (!MI.getOperand(opIdx).isReg()) {
       continue;
index 441a4a072908d5fb77cee5d15ffa06bfd1bf8634..e176defcf5dbafbe1f29d931a3683aea09ed3d02 100644 (file)
@@ -33,7 +33,7 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) :
 MachineBasicBlock * SITargetLowering::EmitInstrWithCustomInserter(
     MachineInstr * MI, MachineBasicBlock * BB) const
 {
-  const struct TargetInstrInfo * TII = getTargetMachine().getInstrInfo();
+  const TargetInstrInfo * TII = getTargetMachine().getInstrInfo();
   MachineRegisterInfo & MRI = BB->getParent()->getRegInfo();
   MachineBasicBlock::iterator I = MI;
 
@@ -141,7 +141,7 @@ void SITargetLowering::LowerSI_V_CNDLT(MachineInstr *MI, MachineBasicBlock &BB,
 void SITargetLowering::lowerUSE_SGPR(MachineInstr *MI,
     MachineFunction * MF, MachineRegisterInfo & MRI) const
 {
-  const struct TargetInstrInfo * TII = getTargetMachine().getInstrInfo();
+  const TargetInstrInfo * TII = getTargetMachine().getInstrInfo();
   unsigned dstReg = MI->getOperand(0).getReg();
   int64_t newIndex = MI->getOperand(1).getImm();
   const TargetRegisterClass * dstClass = MRI.getRegClass(dstReg);
index 229e682ef51968f142ce04ac5f3b59f3a6deb2c2..4a1bc38b5f6ac2e3230b3140a7416cd2f90789dc 100644 (file)
@@ -23,6 +23,10 @@ class SITargetLowering : public AMDGPUTargetLowering
 {
   const SIInstrInfo * TII;
 
+  /// AppendS_WAITCNT - Memory reads and writes are syncronized using the
+  /// S_WAITCNT instruction.  This function takes the most conservative
+  /// approach and inserts an S_WAITCNT instruction after every read and
+  /// write.
   void AppendS_WAITCNT(MachineInstr *MI, MachineBasicBlock &BB,
               MachineBasicBlock::iterator I) const;
   void LowerSI_INTERP(MachineInstr *MI, MachineBasicBlock &BB,
index 68940ea3ca4abd98bc90784d286deded5a8a00ff..24f7a56f63888f88dab01a7804d847f9afbeaeba 100644 (file)
 
 namespace llvm {
 
-  class SIInstrInfo : public AMDGPUInstrInfo {
-  private:
-    const SIRegisterInfo RI;
-    AMDGPUTargetMachine &TM;
+class SIInstrInfo : public AMDGPUInstrInfo {
+private:
+  const SIRegisterInfo RI;
+  AMDGPUTargetMachine &TM;
 
-    MachineInstr * convertABS_f32(MachineInstr & absInstr, MachineFunction &MF,
-                                  DebugLoc DL) const;
+  MachineInstr * convertABS_f32(MachineInstr & absInstr, MachineFunction &MF,
+                                DebugLoc DL) const;
 
-    MachineInstr * convertCLAMP_f32(MachineInstr & clampInstr,
-                                    MachineFunction &MF, DebugLoc DL) const;
+  MachineInstr * convertCLAMP_f32(MachineInstr & clampInstr,
+                                  MachineFunction &MF, DebugLoc DL) const;
 
-  public:
-    explicit SIInstrInfo(AMDGPUTargetMachine &tm);
+public:
+  explicit SIInstrInfo(AMDGPUTargetMachine &tm);
 
-    const SIRegisterInfo &getRegisterInfo() const;
+  const SIRegisterInfo &getRegisterInfo() const;
 
-    virtual void copyPhysReg(MachineBasicBlock &MBB,
+  virtual void copyPhysReg(MachineBasicBlock &MBB,
                            MachineBasicBlock::iterator MI, DebugLoc DL,
                            unsigned DestReg, unsigned SrcReg,
                            bool KillSrc) const;
 
-    unsigned getEncodingType(const MachineInstr &MI) const;
+  /// getEncodingType - Returns the encoding type of this instruction.  
+  unsigned getEncodingType(const MachineInstr &MI) const;
 
-    unsigned getEncodingBytes(const MachineInstr &MI) const;
+  /// getEncodingBytes - Returns the size of this instructions encoding in
+  /// number of bytes.
+  unsigned getEncodingBytes(const MachineInstr &MI) const;
 
-    uint64_t getBinaryCode(const MachineInstr &MI, bool encodOpcode = false) const;
-
-    virtual MachineInstr * convertToISA(MachineInstr & MI, MachineFunction &MF,
+  /// convertToISA - Convert the AMDIL MachineInstr to a supported SI
+  ///MachineInstr
+  virtual MachineInstr * convertToISA(MachineInstr & MI, MachineFunction &MF,
                                         DebugLoc DL) const;
 
-    virtual unsigned getISAOpcode(unsigned AMDILopcode) const;
+  /// getISAOpcode - This function takes an AMDIL opcode as an argument and
+  /// returns an equivalent SI opcode.
+  virtual unsigned getISAOpcode(unsigned AMDILopcode) const;
 
   };
 
 } // End namespace llvm
 
-/* These must be kept in sync with SIInstructions.td and also the
- * InstrEncodingInfo array in SIInstrInfo.cpp.
- *
- * NOTE: This enum is only used to identify the encoding type within LLVM,
- * the actual encoding type that is part of the instruction format is different
- */
+// These must be kept in sync with SIInstructions.td and also the
+// InstrEncodingInfo array in SIInstrInfo.cpp.
+//
+// NOTE: This enum is only used to identify the encoding type within LLVM,
+// the actual encoding type that is part of the instruction format is different
 namespace SIInstrEncodingType {
   enum Encoding {
     EXP = 0,
@@ -87,7 +91,7 @@ namespace SIInstrEncodingType {
 
 namespace SIInstrFlags {
   enum Flags {
-    /* First 4 bits are the instruction encoding */
+    // First 4 bits are the instruction encoding
     NEED_WAIT = 1 << 4
   };
 }
index 6a1654888311bf0356f22a38cb5b84868189114b..09a28c605e239033fc4e158a491f5491abbd0915 100644 (file)
 using namespace llvm;
 
 namespace {
-  class SIPropagateImmReadsPass : public MachineFunctionPass {
 
-  private:
-    static char ID;
-    TargetMachine &TM;
+class SIPropagateImmReadsPass : public MachineFunctionPass {
 
-  public:
-    SIPropagateImmReadsPass(TargetMachine &tm) :
-      MachineFunctionPass(ID), TM(tm) { }
+private:
+  static char ID;
+  TargetMachine &TM;
 
-    virtual bool runOnMachineFunction(MachineFunction &MF);
-  };
-} /* End anonymous namespace */
+public:
+  SIPropagateImmReadsPass(TargetMachine &tm) :
+    MachineFunctionPass(ID), TM(tm) { }
+
+  virtual bool runOnMachineFunction(MachineFunction &MF);
+};
+
+} // End anonymous namespace
 
 char SIPropagateImmReadsPass::ID = 0;
 
@@ -60,7 +62,7 @@ bool SIPropagateImmReadsPass::runOnMachineFunction(MachineFunction &MF)
         continue;
       }
 
-      /* XXX: Create and use S_MOV_IMM for SREGs */
+      // XXX: Create and use S_MOV_IMM for SREGs
       BuildMI(MBB, I, MBB.findDebugLoc(I), TII->get(AMDIL::V_MOV_IMM))
           .addOperand(MI.getOperand(0))
           .addOperand(MI.getOperand(1));
index 2d530a4f0229c88a5939acf7682b3cd77aafc73b..04e2e17d7ec8fe7e94ff9b49fbda7e6fa3b52e92 100644 (file)
@@ -40,16 +40,6 @@ unsigned SIRegisterInfo::getBinaryCode(unsigned reg) const
   }
 }
 
-bool SIRegisterInfo::isBaseRegClass(unsigned regClassID) const
-{
-  switch (regClassID) {
-  default: return true;
-  case AMDIL::AllReg_32RegClassID:
-  case AMDIL::AllReg_64RegClassID:
-    return false;
-  }
-}
-
 const TargetRegisterClass *
 SIRegisterInfo::getISARegClass(const TargetRegisterClass * rc) const
 {
index 77f3261efc5b8ba75edf440ff1e2e92b346ae938..949a1e2f6b78975641ef96339de999e003742dc4 100644 (file)
 
 namespace llvm {
 
-  class AMDGPUTargetMachine;
-  class TargetInstrInfo;
+class AMDGPUTargetMachine;
+class TargetInstrInfo;
 
-  struct SIRegisterInfo : public AMDGPURegisterInfo
-  {
-    AMDGPUTargetMachine &TM;
-    const TargetInstrInfo &TII;
+struct SIRegisterInfo : public AMDGPURegisterInfo
+{
+  AMDGPUTargetMachine &TM;
+  const TargetInstrInfo &TII;
 
-    SIRegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii);
+  SIRegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii);
 
-    virtual BitVector getReservedRegs(const MachineFunction &MF) const;
-    virtual unsigned getBinaryCode(unsigned reg) const;
+  virtual BitVector getReservedRegs(const MachineFunction &MF) const;
 
-    virtual bool isBaseRegClass(unsigned regClassID) const;
+  /// getBinaryCode - Returns the hardware encoding for a register
+  virtual unsigned getBinaryCode(unsigned reg) const;
 
-    virtual const TargetRegisterClass *
+  /// getISARegClass - rc is an AMDIL reg class.  This function returns the
+  /// SI register class that is equivalent to the given AMDIL register class.
+  virtual const TargetRegisterClass *
     getISARegClass(const TargetRegisterClass * rc) const;
 
-    unsigned getHWRegNum(unsigned reg) const;
+  /// getHWRegNum - Generated function that returns the hardware encoding for
+  /// a register
+  unsigned getHWRegNum(unsigned reg) const;
 
-  };
+};
 
 } // End namespace llvm