1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00

[NVPTX] Enable StructuredCFG for NVPTX

Summary:
Make NVPTX require structured CFG. Added a temporary flag to
"roll back" the behavior for easy deployment.

Combined with D45008, this fixes several internal Nvidia GPU test
failures that we suspect to be ptxas miscompiles (PR27738).

Reviewers: jlebar

Subscribers: jholewinski, sanjoy, llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D45070

llvm-svn: 328885
This commit is contained in:
Tim Shen 2018-03-30 17:51:03 +00:00
parent 5321f45406
commit fa134803cc

View File

@ -44,6 +44,14 @@ static cl::opt<bool>
cl::desc("Disable load/store vectorizer"), cl::desc("Disable load/store vectorizer"),
cl::init(false), cl::Hidden); cl::init(false), cl::Hidden);
// TODO: Remove this flag when we are confident with no regressions.
static cl::opt<bool> DisableRequireStructuredCFG(
"disable-nvptx-require-structured-cfg",
cl::desc("Transitional flag to turn off NVPTX's requirement on preserving "
"structured CFG. The requirement should be disabled only when "
"unexpected regressions happen."),
cl::init(false), cl::Hidden);
namespace llvm { namespace llvm {
void initializeNVVMIntrRangePass(PassRegistry&); void initializeNVVMIntrRangePass(PassRegistry&);
@ -108,6 +116,8 @@ NVPTXTargetMachine::NVPTXTargetMachine(const Target &T, const Triple &TT,
drvInterface = NVPTX::NVCL; drvInterface = NVPTX::NVCL;
else else
drvInterface = NVPTX::CUDA; drvInterface = NVPTX::CUDA;
if (!DisableRequireStructuredCFG)
setRequiresStructuredCFG(true);
initAsmInfo(); initAsmInfo();
} }