diff options
author | Tim Northover <tnorthover@apple.com> | 2017-03-08 18:49:54 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2017-03-08 18:49:54 +0000 |
commit | 7596bd7a27e62540aefc5607124d7b71d728f35e (patch) | |
tree | 04d9977a8d60a876f888f82e2f3ec08b7935080e /llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | |
parent | 95da05c3f5064c733dc486a43f262a55deb03dc5 (diff) | |
download | bcm5719-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.cpp | 5 |
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); |