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:
parent
5321f45406
commit
fa134803cc
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user