diff options
author | Christudasan Devadasan <Christudasan.Devadasan@amd.com> | 2022-01-07 11:52:00 -0500 |
---|---|---|
committer | Christudasan Devadasan <Christudasan.Devadasan@amd.com> | 2022-01-18 02:48:52 -0500 |
commit | 56a5d78893e62f348e329ea513f1fab28e869a10 (patch) | |
tree | 47f7105cb1e16eb7626275c16d034ce1cc455573 /llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp | |
parent | 5ceb4f5446f38ee81e74cd6ab9dd003c6d94280d (diff) | |
download | llvm-56a5d78893e62f348e329ea513f1fab28e869a10.zip llvm-56a5d78893e62f348e329ea513f1fab28e869a10.tar.gz llvm-56a5d78893e62f348e329ea513f1fab28e869a10.tar.bz2 |
[AMDGPU] Disable optimizeEndCf at -O0
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D116819
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp b/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp index 6ec37b3..e1018bd 100644 --- a/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp +++ b/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp @@ -56,6 +56,7 @@ #include "llvm/CodeGen/LiveVariables.h" #include "llvm/CodeGen/MachineDominators.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/Target/TargetMachine.h" using namespace llvm; @@ -90,6 +91,8 @@ private: unsigned OrSaveExecOpc; unsigned Exec; + bool EnableOptimizeEndCf = false; + bool hasKill(const MachineBasicBlock *Begin, const MachineBasicBlock *End); void emitIf(MachineInstr &MI); @@ -579,7 +582,7 @@ void SILowerControlFlow::combineMasks(MachineInstr &MI) { void SILowerControlFlow::optimizeEndCf() { // If the only instruction immediately following this END_CF is an another // END_CF in the only successor we can avoid emitting exec mask restore here. - if (!RemoveRedundantEndcf) + if (!EnableOptimizeEndCf) return; for (MachineInstr *MI : reverse(LoweredEndCf)) { @@ -807,6 +810,8 @@ bool SILowerControlFlow::runOnMachineFunction(MachineFunction &MF) { const GCNSubtarget &ST = MF.getSubtarget<GCNSubtarget>(); TII = ST.getInstrInfo(); TRI = &TII->getRegisterInfo(); + EnableOptimizeEndCf = + RemoveRedundantEndcf && MF.getTarget().getOptLevel() > CodeGenOpt::None; // This doesn't actually need LiveIntervals, but we can preserve them. LIS = getAnalysisIfAvailable<LiveIntervals>(); |