summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2017-03-08 18:49:54 +0000
committerTim Northover <tnorthover@apple.com>2017-03-08 18:49:54 +0000
commit7596bd7a27e62540aefc5607124d7b71d728f35e (patch)
tree04d9977a8d60a876f888f82e2f3ec08b7935080e /llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
parent95da05c3f5064c733dc486a43f262a55deb03dc5 (diff)
downloadbcm5719-llvm-7596bd7a27e62540aefc5607124d7b71d728f35e.tar.gz
bcm5719-llvm-7596bd7a27e62540aefc5607124d7b71d728f35e.zip
GlobalISel: correctly handle trivial fcmp predicates.
It makes sense to only do them once in IRTranslator rather than making everyone deal with them. llvm-svn: 297304
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index 488869f642f..4d1ac680a45 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -193,9 +193,12 @@ bool IRTranslator::translateCompare(const User &U,
CmpInst::Predicate Pred =
CI ? CI->getPredicate() : static_cast<CmpInst::Predicate>(
cast<ConstantExpr>(U).getPredicate());
-
if (CmpInst::isIntPredicate(Pred))
MIRBuilder.buildICmp(Pred, Res, Op0, Op1);
+ else if (Pred == CmpInst::FCMP_FALSE)
+ MIRBuilder.buildConstant(Res, 0);
+ else if (Pred == CmpInst::FCMP_TRUE)
+ MIRBuilder.buildConstant(Res, 1);
else
MIRBuilder.buildFCmp(Pred, Res, Op0, Op1);
OpenPOWER on IntegriCloud