Index: lib/Target/AMDGPU/AMDGPUAsmPrinter.h =================================================================== --- lib/Target/AMDGPU/AMDGPUAsmPrinter.h +++ lib/Target/AMDGPU/AMDGPUAsmPrinter.h @@ -108,9 +108,7 @@ bool runOnMachineFunction(MachineFunction &MF) override; - const char *getPassName() const override { - return "AMDGPU Assembly Printer"; - } + const char *getPassName() const override; /// Implemented in AMDGPUMCInstLower.cpp void EmitInstruction(const MachineInstr *MI) override; Index: lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp =================================================================== --- lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -95,6 +95,10 @@ std::unique_ptr Streamer) : AsmPrinter(TM, std::move(Streamer)) {} +const char *AMDGPUAsmPrinter::getPassName() const { + return "AMDGPU Assembly Printer"; +} + void AMDGPUAsmPrinter::EmitStartOfAsmFile(Module &M) { if (TM.getTargetTriple().getOS() != Triple::AMDHSA) return; @@ -229,7 +233,7 @@ } else { R600MachineFunctionInfo *MFI = MF.getInfo(); OutStreamer->emitRawComment( - Twine("SQ_PGM_RESOURCES:STACK_SIZE = " + Twine(MFI->StackSize))); + Twine("SQ_PGM_RESOURCES:STACK_SIZE = " + Twine(MFI->CFStackSize))); } } @@ -301,7 +305,7 @@ OutStreamer->EmitIntValue(RsrcReg, 4); OutStreamer->EmitIntValue(S_NUM_GPRS(MaxGPR + 1) | - S_STACK_SIZE(MFI->StackSize), 4); + S_STACK_SIZE(MFI->CFStackSize), 4); OutStreamer->EmitIntValue(R_02880C_DB_SHADER_CONTROL, 4); OutStreamer->EmitIntValue(S_02880C_KILL_ENABLE(killPixel), 4); Index: lib/Target/AMDGPU/AMDGPUSubtarget.h =================================================================== --- lib/Target/AMDGPU/AMDGPUSubtarget.h +++ lib/Target/AMDGPU/AMDGPUSubtarget.h @@ -116,10 +116,10 @@ AMDGPUSubtarget &initializeSubtargetDependencies(const Triple &TT, StringRef GPU, StringRef FS); - const AMDGPUInstrInfo *getInstrInfo() const override; - const AMDGPUFrameLowering *getFrameLowering() const override; - const AMDGPUTargetLowering *getTargetLowering() const override; - const AMDGPURegisterInfo *getRegisterInfo() const override; + const AMDGPUInstrInfo *getInstrInfo() const override = 0; + const AMDGPUFrameLowering *getFrameLowering() const override = 0; + const AMDGPUTargetLowering *getTargetLowering() const override = 0; + const AMDGPURegisterInfo *getRegisterInfo() const override = 0; const InstrItineraryData *getInstrItineraryData() const override { return &InstrItins; @@ -428,35 +428,6 @@ } }; - -inline const AMDGPUInstrInfo *AMDGPUSubtarget::getInstrInfo() const { - if (getGeneration() >= SOUTHERN_ISLANDS) - return static_cast(this)->getInstrInfo(); - - return static_cast(this)->getInstrInfo(); -} - -inline const AMDGPUFrameLowering *AMDGPUSubtarget::getFrameLowering() const { - if (getGeneration() >= SOUTHERN_ISLANDS) - return static_cast(this)->getFrameLowering(); - - return static_cast(this)->getFrameLowering(); -} - -inline const AMDGPUTargetLowering *AMDGPUSubtarget::getTargetLowering() const { - if (getGeneration() >= SOUTHERN_ISLANDS) - return static_cast(this)->getTargetLowering(); - - return static_cast(this)->getTargetLowering(); -} - -inline const AMDGPURegisterInfo *AMDGPUSubtarget::getRegisterInfo() const { - if (getGeneration() >= SOUTHERN_ISLANDS) - return static_cast(this)->getRegisterInfo(); - - return static_cast(this)->getRegisterInfo(); -} - } // End namespace llvm #endif Index: lib/Target/AMDGPU/AMDGPUTargetMachine.h =================================================================== --- lib/Target/AMDGPU/AMDGPUTargetMachine.h +++ lib/Target/AMDGPU/AMDGPUTargetMachine.h @@ -40,7 +40,7 @@ ~AMDGPUTargetMachine(); const AMDGPUSubtarget *getSubtargetImpl() const; - const AMDGPUSubtarget *getSubtargetImpl(const Function &) const override; + const AMDGPUSubtarget *getSubtargetImpl(const Function &) const override = 0; const AMDGPUIntrinsicInfo *getIntrinsicInfo() const override { return &IntrinsicInfo; @@ -90,13 +90,6 @@ const SISubtarget *getSubtargetImpl(const Function &) const override; }; -inline const AMDGPUSubtarget *AMDGPUTargetMachine::getSubtargetImpl( - const Function &F) const { - if (getTargetTriple().getArch() == Triple::amdgcn) - return static_cast(this)->getSubtargetImpl(F); - return static_cast(this)->getSubtargetImpl(F); -} - } // End namespace llvm #endif Index: lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp =================================================================== --- lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp +++ lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp @@ -680,7 +680,7 @@ .addImm(Alu->getOperand(8).getImm()); Alu->eraseFromParent(); } - MFI->StackSize = CFStack.MaxStackSize; + MFI->CFStackSize = CFStack.MaxStackSize; } return false; Index: lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp =================================================================== --- lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp +++ lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp @@ -116,85 +116,6 @@ MI.eraseFromParent(); continue; } - - case AMDGPU::INTERP_PAIR_XY: { - MachineInstr *BMI; - unsigned PReg = AMDGPU::R600_ArrayBaseRegClass.getRegister( - MI.getOperand(2).getImm()); - - for (unsigned Chan = 0; Chan < 4; ++Chan) { - unsigned DstReg; - - if (Chan < 2) - DstReg = MI.getOperand(Chan).getReg(); - else - DstReg = Chan == 2 ? AMDGPU::T0_Z : AMDGPU::T0_W; - - BMI = TII->buildDefaultInstruction(MBB, I, AMDGPU::INTERP_XY, - DstReg, MI.getOperand(3 + (Chan % 2)).getReg(), PReg); - - if (Chan > 0) { - BMI->bundleWithPred(); - } - if (Chan >= 2) - TII->addFlag(*BMI, 0, MO_FLAG_MASK); - if (Chan != 3) - TII->addFlag(*BMI, 0, MO_FLAG_NOT_LAST); - } - - MI.eraseFromParent(); - continue; - } - - case AMDGPU::INTERP_PAIR_ZW: { - MachineInstr *BMI; - unsigned PReg = AMDGPU::R600_ArrayBaseRegClass.getRegister( - MI.getOperand(2).getImm()); - - for (unsigned Chan = 0; Chan < 4; ++Chan) { - unsigned DstReg; - - if (Chan < 2) - DstReg = Chan == 0 ? AMDGPU::T0_X : AMDGPU::T0_Y; - else - DstReg = MI.getOperand(Chan-2).getReg(); - - BMI = TII->buildDefaultInstruction(MBB, I, AMDGPU::INTERP_ZW, - DstReg, MI.getOperand(3 + (Chan % 2)).getReg(), PReg); - - if (Chan > 0) { - BMI->bundleWithPred(); - } - if (Chan < 2) - TII->addFlag(*BMI, 0, MO_FLAG_MASK); - if (Chan != 3) - TII->addFlag(*BMI, 0, MO_FLAG_NOT_LAST); - } - - MI.eraseFromParent(); - continue; - } - - case AMDGPU::INTERP_VEC_LOAD: { - const R600RegisterInfo &TRI = TII->getRegisterInfo(); - MachineInstr *BMI; - unsigned PReg = AMDGPU::R600_ArrayBaseRegClass.getRegister( - MI.getOperand(1).getImm()); - unsigned DstReg = MI.getOperand(0).getReg(); - - for (unsigned Chan = 0; Chan < 4; ++Chan) { - BMI = TII->buildDefaultInstruction(MBB, I, AMDGPU::INTERP_LOAD_P0, - TRI.getSubReg(DstReg, TRI.getSubRegFromChannel(Chan)), PReg); - if (Chan > 0) { - BMI->bundleWithPred(); - } - if (Chan != 3) - TII->addFlag(*BMI, 0, MO_FLAG_NOT_LAST); - } - - MI.eraseFromParent(); - continue; - } case AMDGPU::DOT_4: { const R600RegisterInfo &TRI = TII->getRegisterInfo(); Index: lib/Target/AMDGPU/R600ISelLowering.cpp =================================================================== --- lib/Target/AMDGPU/R600ISelLowering.cpp +++ lib/Target/AMDGPU/R600ISelLowering.cpp @@ -592,12 +592,6 @@ break; } case AMDGPU::RETURN: { - // RETURN instructions must have the live-out registers as implicit uses, - // otherwise they appear dead. - R600MachineFunctionInfo *MFI = MF->getInfo(); - MachineInstrBuilder MIB(*MF, MI); - for (unsigned i = 0, e = MFI->LiveOuts.size(); i != e; ++i) - MIB.addReg(MFI->LiveOuts[i], RegState::Implicit); return BB; } } @@ -671,15 +665,7 @@ switch(IntrinsicID) { default: return AMDGPUTargetLowering::LowerOperation(Op, DAG); case AMDGPUIntrinsic::r600_tex: - case AMDGPUIntrinsic::r600_texc: - case AMDGPUIntrinsic::r600_txl: - case AMDGPUIntrinsic::r600_txlc: - case AMDGPUIntrinsic::r600_txb: - case AMDGPUIntrinsic::r600_txbc: - case AMDGPUIntrinsic::r600_txf: - case AMDGPUIntrinsic::r600_txq: - case AMDGPUIntrinsic::r600_ddx: - case AMDGPUIntrinsic::r600_ddy: { + case AMDGPUIntrinsic::r600_texc: { unsigned TextureOp; switch (IntrinsicID) { case AMDGPUIntrinsic::r600_tex: @@ -688,30 +674,6 @@ case AMDGPUIntrinsic::r600_texc: TextureOp = 1; break; - case AMDGPUIntrinsic::r600_txl: - TextureOp = 2; - break; - case AMDGPUIntrinsic::r600_txlc: - TextureOp = 3; - break; - case AMDGPUIntrinsic::r600_txb: - TextureOp = 4; - break; - case AMDGPUIntrinsic::r600_txbc: - TextureOp = 5; - break; - case AMDGPUIntrinsic::r600_txf: - TextureOp = 6; - break; - case AMDGPUIntrinsic::r600_txq: - TextureOp = 7; - break; - case AMDGPUIntrinsic::r600_ddx: - TextureOp = 8; - break; - case AMDGPUIntrinsic::r600_ddy: - TextureOp = 9; - break; default: llvm_unreachable("Unknow Texture Operation"); } Index: lib/Target/AMDGPU/R600MachineFunctionInfo.h =================================================================== --- lib/Target/AMDGPU/R600MachineFunctionInfo.h +++ lib/Target/AMDGPU/R600MachineFunctionInfo.h @@ -14,18 +14,13 @@ #define LLVM_LIB_TARGET_AMDGPU_R600MACHINEFUNCTIONINFO_H #include "AMDGPUMachineFunction.h" -#include "llvm/CodeGen/SelectionDAG.h" -#include namespace llvm { class R600MachineFunctionInfo final : public AMDGPUMachineFunction { - void anchor() override; public: R600MachineFunctionInfo(const MachineFunction &MF); - SmallVector LiveOuts; - std::vector IndirectRegs; - unsigned StackSize; + unsigned CFStackSize; }; } // End llvm namespace Index: lib/Target/AMDGPU/R600MachineFunctionInfo.cpp =================================================================== --- lib/Target/AMDGPU/R600MachineFunctionInfo.cpp +++ lib/Target/AMDGPU/R600MachineFunctionInfo.cpp @@ -12,9 +12,5 @@ using namespace llvm; - -// Pin the vtable to this file. -void R600MachineFunctionInfo::anchor() {} - R600MachineFunctionInfo::R600MachineFunctionInfo(const MachineFunction &MF) : AMDGPUMachineFunction(MF) { } Index: lib/Target/AMDGPU/SIInstructions.td =================================================================== --- lib/Target/AMDGPU/SIInstructions.td +++ lib/Target/AMDGPU/SIInstructions.td @@ -11,13 +11,6 @@ // that are not yet supported remain commented out. //===----------------------------------------------------------------------===// -class InterpSlots { -int P0 = 2; -int P10 = 0; -int P20 = 1; -} -def INTERP : InterpSlots; - def isGCN : Predicate<"Subtarget->getGeneration() " ">= SISubtarget::SOUTHERN_ISLANDS">, AssemblerPredicate<"FeatureGCN">;