diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-03-27 16:58:30 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-03-27 16:58:30 +0000 |
commit | 4d47ac3b30a0385f7fdbe716284fde1f44685c2e (patch) | |
tree | 513be4e5eb2cf41cf46479697f02c31e4b138c7f /llvm/lib/Target | |
parent | 4ab28b64b4cea1fc7d12a352e706a46eb5e5fe4c (diff) | |
download | bcm5719-llvm-4d47ac3b30a0385f7fdbe716284fde1f44685c2e.tar.gz bcm5719-llvm-4d47ac3b30a0385f7fdbe716284fde1f44685c2e.zip |
AMDGPU: Add additional MIR tests for exec mask optimizations
Also includes one example of how this transform is unsound. This isn't
verifying the copies are used in the control flow intrinisic patterns.
Also add option to disable exec mask opt pass. Since this pass is
unsound, it may be useful to turn it off until it is fixed.
llvm-svn: 357091
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp index e59281488c9..66f19b1c1d2 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -68,6 +68,11 @@ EnableEarlyIfConversion("amdgpu-early-ifcvt", cl::Hidden, cl::desc("Run early if-conversion"), cl::init(false)); +static cl::opt<bool> +OptExecMaskPreRA("amdgpu-opt-exec-mask-pre-ra", cl::Hidden, + cl::desc("Run pre-RA exec mask optimizations"), + cl::init(true)); + static cl::opt<bool> EnableR600IfConvert( "r600-if-convert", cl::desc("Use if conversion pass"), @@ -882,9 +887,12 @@ void GCNPassConfig::addFastRegAlloc() { } void GCNPassConfig::addOptimizedRegAlloc() { - insertPass(&MachineSchedulerID, &SIOptimizeExecMaskingPreRAID); - - insertPass(&SIOptimizeExecMaskingPreRAID, &SIFormMemoryClausesID); + if (OptExecMaskPreRA) { + insertPass(&MachineSchedulerID, &SIOptimizeExecMaskingPreRAID); + insertPass(&SIOptimizeExecMaskingPreRAID, &SIFormMemoryClausesID); + } else { + insertPass(&MachineSchedulerID, &SIFormMemoryClausesID); + } // This must be run immediately after phi elimination and before // TwoAddressInstructions, otherwise the processing of the tied operand of |