summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2018-08-28 18:10:02 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2018-08-28 18:10:02 +0000
commit10de2775bd31d332f2f1a2a62634eff78cf9d31f (patch)
tree14b1231726be580647495766b650afc01347ee91 /llvm/lib/Transforms
parent9873909b428497dfb5633579c63e97bac7e0a3f7 (diff)
downloadbcm5719-llvm-10de2775bd31d332f2f1a2a62634eff78cf9d31f.tar.gz
bcm5719-llvm-10de2775bd31d332f2f1a2a62634eff78cf9d31f.zip
AMDGPU: Remove nan tests in class if src is nnan
llvm-svn: 340850
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
index 1d0cd11f941..2993f0095a6 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
@@ -3282,6 +3282,13 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
return replaceInstUsesWith(*II, FCmp);
}
+ // fp_class (nnan x), qnan|snan|other -> fp_class (nnan x), other
+ if (((Mask & S_NAN) || (Mask & Q_NAN)) && isKnownNeverNaN(Src0, &TLI)) {
+ II->setArgOperand(1, ConstantInt::get(Src1->getType(),
+ Mask & ~(S_NAN | Q_NAN)));
+ return II;
+ }
+
const ConstantFP *CVal = dyn_cast<ConstantFP>(Src0);
if (!CVal) {
if (isa<UndefValue>(Src0))
OpenPOWER on IntegriCloud