AMDGPU/R600: Initialize more passes
Reviewers: arsenm Reviewed By: arsenm Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits Differential Revision: https://reviews.llvm.org/D36128 llvm-svn: 309893
This commit is contained in:
parent
a0213850e5
commit
a2f57be260
|
@ -70,6 +70,21 @@ extern char &AMDGPULowerIntrinsicsID;
|
||||||
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &);
|
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &);
|
||||||
extern char &AMDGPURewriteOutArgumentsID;
|
extern char &AMDGPURewriteOutArgumentsID;
|
||||||
|
|
||||||
|
void initializeR600ClauseMergePassPass(PassRegistry &);
|
||||||
|
extern char &R600ClauseMergePassID;
|
||||||
|
|
||||||
|
void initializeR600ControlFlowFinalizerPass(PassRegistry &);
|
||||||
|
extern char &R600ControlFlowFinalizerID;
|
||||||
|
|
||||||
|
void initializeR600ExpandSpecialInstrsPassPass(PassRegistry &);
|
||||||
|
extern char &R600ExpandSpecialInstrsPassID;
|
||||||
|
|
||||||
|
void initializeR600VectorRegMergerPass(PassRegistry &);
|
||||||
|
extern char &R600VectorRegMergerID;
|
||||||
|
|
||||||
|
void initializeR600PacketizerPass(PassRegistry &);
|
||||||
|
extern char &R600PacketizerID;
|
||||||
|
|
||||||
void initializeSIFoldOperandsPass(PassRegistry &);
|
void initializeSIFoldOperandsPass(PassRegistry &);
|
||||||
extern char &SIFoldOperandsID;
|
extern char &SIFoldOperandsID;
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,11 @@ extern "C" void LLVMInitializeAMDGPUTarget() {
|
||||||
RegisterTargetMachine<GCNTargetMachine> Y(getTheGCNTarget());
|
RegisterTargetMachine<GCNTargetMachine> Y(getTheGCNTarget());
|
||||||
|
|
||||||
PassRegistry *PR = PassRegistry::getPassRegistry();
|
PassRegistry *PR = PassRegistry::getPassRegistry();
|
||||||
|
initializeR600ClauseMergePassPass(*PR);
|
||||||
|
initializeR600ControlFlowFinalizerPass(*PR);
|
||||||
|
initializeR600PacketizerPass(*PR);
|
||||||
|
initializeR600ExpandSpecialInstrsPassPass(*PR);
|
||||||
|
initializeR600VectorRegMergerPass(*PR);
|
||||||
initializeSILowerI1CopiesPass(*PR);
|
initializeSILowerI1CopiesPass(*PR);
|
||||||
initializeSIFixSGPRCopiesPass(*PR);
|
initializeSIFixSGPRCopiesPass(*PR);
|
||||||
initializeSIFixVGPRCopiesPass(*PR);
|
initializeSIFixVGPRCopiesPass(*PR);
|
||||||
|
|
|
@ -44,7 +44,6 @@ static bool isCFAlu(const MachineInstr &MI) {
|
||||||
class R600ClauseMergePass : public MachineFunctionPass {
|
class R600ClauseMergePass : public MachineFunctionPass {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static char ID;
|
|
||||||
const R600InstrInfo *TII;
|
const R600InstrInfo *TII;
|
||||||
|
|
||||||
unsigned getCFAluSize(const MachineInstr &MI) const;
|
unsigned getCFAluSize(const MachineInstr &MI) const;
|
||||||
|
@ -62,6 +61,8 @@ private:
|
||||||
const MachineInstr &LatrCFAlu) const;
|
const MachineInstr &LatrCFAlu) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static char ID;
|
||||||
|
|
||||||
R600ClauseMergePass() : MachineFunctionPass(ID) { }
|
R600ClauseMergePass() : MachineFunctionPass(ID) { }
|
||||||
|
|
||||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||||
|
@ -69,8 +70,17 @@ public:
|
||||||
StringRef getPassName() const override;
|
StringRef getPassName() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // end anonymous namespace
|
||||||
|
|
||||||
|
INITIALIZE_PASS_BEGIN(R600ClauseMergePass, DEBUG_TYPE,
|
||||||
|
"R600 Clause Merge", false, false)
|
||||||
|
INITIALIZE_PASS_END(R600ClauseMergePass, DEBUG_TYPE,
|
||||||
|
"R600 Clause Merge", false, false)
|
||||||
|
|
||||||
char R600ClauseMergePass::ID = 0;
|
char R600ClauseMergePass::ID = 0;
|
||||||
|
|
||||||
|
char &llvm::R600ClauseMergePassID = R600ClauseMergePass::ID;
|
||||||
|
|
||||||
unsigned R600ClauseMergePass::getCFAluSize(const MachineInstr &MI) const {
|
unsigned R600ClauseMergePass::getCFAluSize(const MachineInstr &MI) const {
|
||||||
assert(isCFAlu(MI));
|
assert(isCFAlu(MI));
|
||||||
return MI
|
return MI
|
||||||
|
@ -205,9 +215,6 @@ StringRef R600ClauseMergePass::getPassName() const {
|
||||||
return "R600 Merge Clause Markers Pass";
|
return "R600 Merge Clause Markers Pass";
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end anonymous namespace
|
|
||||||
|
|
||||||
|
|
||||||
llvm::FunctionPass *llvm::createR600ClauseMergePass() {
|
llvm::FunctionPass *llvm::createR600ClauseMergePass() {
|
||||||
return new R600ClauseMergePass();
|
return new R600ClauseMergePass();
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,7 +230,6 @@ private:
|
||||||
CF_END
|
CF_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static char ID;
|
|
||||||
const R600InstrInfo *TII = nullptr;
|
const R600InstrInfo *TII = nullptr;
|
||||||
const R600RegisterInfo *TRI = nullptr;
|
const R600RegisterInfo *TRI = nullptr;
|
||||||
unsigned MaxFetchInst;
|
unsigned MaxFetchInst;
|
||||||
|
@ -499,6 +498,8 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static char ID;
|
||||||
|
|
||||||
R600ControlFlowFinalizer() : MachineFunctionPass(ID) {}
|
R600ControlFlowFinalizer() : MachineFunctionPass(ID) {}
|
||||||
|
|
||||||
bool runOnMachineFunction(MachineFunction &MF) override {
|
bool runOnMachineFunction(MachineFunction &MF) override {
|
||||||
|
@ -702,9 +703,16 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // end anonymous namespace
|
||||||
|
|
||||||
|
INITIALIZE_PASS_BEGIN(R600ControlFlowFinalizer, DEBUG_TYPE,
|
||||||
|
"R600 Control Flow Finalizer", false, false)
|
||||||
|
INITIALIZE_PASS_END(R600ControlFlowFinalizer, DEBUG_TYPE,
|
||||||
|
"R600 Control Flow Finalizer", false, false)
|
||||||
|
|
||||||
char R600ControlFlowFinalizer::ID = 0;
|
char R600ControlFlowFinalizer::ID = 0;
|
||||||
|
|
||||||
} // end anonymous namespace
|
char &llvm::R600ControlFlowFinalizerID = R600ControlFlowFinalizer::ID;
|
||||||
|
|
||||||
FunctionPass *llvm::createR600ControlFlowFinalizer() {
|
FunctionPass *llvm::createR600ControlFlowFinalizer() {
|
||||||
return new R600ControlFlowFinalizer();
|
return new R600ControlFlowFinalizer();
|
||||||
|
|
|
@ -26,17 +26,20 @@
|
||||||
|
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
|
#define DEBUG_TYPE "r600-expand-special-instrs"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
class R600ExpandSpecialInstrsPass : public MachineFunctionPass {
|
class R600ExpandSpecialInstrsPass : public MachineFunctionPass {
|
||||||
private:
|
private:
|
||||||
static char ID;
|
|
||||||
const R600InstrInfo *TII;
|
const R600InstrInfo *TII;
|
||||||
|
|
||||||
void SetFlagInNewMI(MachineInstr *NewMI, const MachineInstr *OldMI,
|
void SetFlagInNewMI(MachineInstr *NewMI, const MachineInstr *OldMI,
|
||||||
unsigned Op);
|
unsigned Op);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static char ID;
|
||||||
|
|
||||||
R600ExpandSpecialInstrsPass() : MachineFunctionPass(ID),
|
R600ExpandSpecialInstrsPass() : MachineFunctionPass(ID),
|
||||||
TII(nullptr) { }
|
TII(nullptr) { }
|
||||||
|
|
||||||
|
@ -49,8 +52,15 @@ public:
|
||||||
|
|
||||||
} // End anonymous namespace
|
} // End anonymous namespace
|
||||||
|
|
||||||
|
INITIALIZE_PASS_BEGIN(R600ExpandSpecialInstrsPass, DEBUG_TYPE,
|
||||||
|
"R600 Expand Special Instrs", false, false)
|
||||||
|
INITIALIZE_PASS_END(R600ExpandSpecialInstrsPass, DEBUG_TYPE,
|
||||||
|
"R600ExpandSpecialInstrs", false, false)
|
||||||
|
|
||||||
char R600ExpandSpecialInstrsPass::ID = 0;
|
char R600ExpandSpecialInstrsPass::ID = 0;
|
||||||
|
|
||||||
|
char &llvm::R600ExpandSpecialInstrsPassID = R600ExpandSpecialInstrsPass::ID;
|
||||||
|
|
||||||
FunctionPass *llvm::createR600ExpandSpecialInstrsPass() {
|
FunctionPass *llvm::createR600ExpandSpecialInstrsPass() {
|
||||||
return new R600ExpandSpecialInstrsPass();
|
return new R600ExpandSpecialInstrsPass();
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,8 +145,15 @@ public:
|
||||||
|
|
||||||
} // end anonymous namespace.
|
} // end anonymous namespace.
|
||||||
|
|
||||||
|
INITIALIZE_PASS_BEGIN(R600VectorRegMerger, DEBUG_TYPE,
|
||||||
|
"R600 Vector Reg Merger", false, false)
|
||||||
|
INITIALIZE_PASS_END(R600VectorRegMerger, DEBUG_TYPE,
|
||||||
|
"R600 Vector Reg Merger", false, false)
|
||||||
|
|
||||||
char R600VectorRegMerger::ID = 0;
|
char R600VectorRegMerger::ID = 0;
|
||||||
|
|
||||||
|
char &llvm::R600VectorRegMergerID = R600VectorRegMerger::ID;
|
||||||
|
|
||||||
bool R600VectorRegMerger::canSwizzle(const MachineInstr &MI)
|
bool R600VectorRegMerger::canSwizzle(const MachineInstr &MI)
|
||||||
const {
|
const {
|
||||||
if (TII->get(MI.getOpcode()).TSFlags & R600_InstFlag::TEX_INST)
|
if (TII->get(MI.getOpcode()).TSFlags & R600_InstFlag::TEX_INST)
|
||||||
|
|
|
@ -51,7 +51,6 @@ public:
|
||||||
|
|
||||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||||
};
|
};
|
||||||
char R600Packetizer::ID = 0;
|
|
||||||
|
|
||||||
class R600PacketizerList : public VLIWPacketizerList {
|
class R600PacketizerList : public VLIWPacketizerList {
|
||||||
private:
|
private:
|
||||||
|
@ -404,6 +403,15 @@ bool R600Packetizer::runOnMachineFunction(MachineFunction &Fn) {
|
||||||
|
|
||||||
} // end anonymous namespace
|
} // end anonymous namespace
|
||||||
|
|
||||||
|
INITIALIZE_PASS_BEGIN(R600Packetizer, DEBUG_TYPE,
|
||||||
|
"R600 Packetizer", false, false)
|
||||||
|
INITIALIZE_PASS_END(R600Packetizer, DEBUG_TYPE,
|
||||||
|
"R600 Packetizer", false, false)
|
||||||
|
|
||||||
|
char R600Packetizer::ID = 0;
|
||||||
|
|
||||||
|
char &llvm::R600PacketizerID = R600Packetizer::ID;
|
||||||
|
|
||||||
llvm::FunctionPass *llvm::createR600Packetizer() {
|
llvm::FunctionPass *llvm::createR600Packetizer() {
|
||||||
return new R600Packetizer();
|
return new R600Packetizer();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue