aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp')
-rw-r--r--lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp b/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
index b750c6b5f6d2..1640a4a59ee2 100644
--- a/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
+++ b/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
@@ -55,6 +55,12 @@ static cl::opt<bool> WidenLoads(
cl::ReallyHidden,
cl::init(true));
+static cl::opt<bool> UseMul24Intrin(
+ "amdgpu-codegenprepare-mul24",
+ cl::desc("Introduce mul24 intrinsics in AMDGPUCodeGenPrepare"),
+ cl::ReallyHidden,
+ cl::init(true));
+
class AMDGPUCodeGenPrepare : public FunctionPass,
public InstVisitor<AMDGPUCodeGenPrepare, bool> {
const GCNSubtarget *ST = nullptr;
@@ -509,7 +515,9 @@ bool AMDGPUCodeGenPrepare::replaceMulWithMul24(BinaryOperator &I) const {
}
}
- I.replaceAllUsesWith(insertValues(Builder, Ty, ResultVals));
+ Value *NewVal = insertValues(Builder, Ty, ResultVals);
+ NewVal->takeName(&I);
+ I.replaceAllUsesWith(NewVal);
I.eraseFromParent();
return true;
@@ -879,7 +887,7 @@ bool AMDGPUCodeGenPrepare::visitBinaryOperator(BinaryOperator &I) {
DA->isUniform(&I) && promoteUniformOpToI32(I))
return true;
- if (replaceMulWithMul24(I))
+ if (UseMul24Intrin && replaceMulWithMul24(I))
return true;
bool Changed = false;