summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2019-06-10 14:14:51 +0000
committerSanjay Patel <spatel@rotateright.com>2019-06-10 14:14:51 +0000
commit8cd8c5784b813d6e1b58c57d61a06ff5686d3473 (patch)
tree9fdd80e646a26ed9cc239df1367e1ba3e04436b4 /llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
parent4cdd3ceb572d4ed8b16bd91ed99fc0302bad55c9 (diff)
downloadbcm5719-llvm-8cd8c5784b813d6e1b58c57d61a06ff5686d3473.tar.gz
bcm5719-llvm-8cd8c5784b813d6e1b58c57d61a06ff5686d3473.zip
[InstCombine] allow unordered preds when canonicalizing to fabs()
PR42179: https://bugs.llvm.org/show_bug.cgi?id=42179 llvm-svn: 362937
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
index aeeab4788f2..13452866f61 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -1895,7 +1895,8 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
match(TrueVal, m_FNeg(m_Specific(FalseVal))) &&
match(TrueVal, m_Instruction(FNeg)) &&
FNeg->hasNoNaNs() && FNeg->hasNoSignedZeros() &&
- (Pred == FCmpInst::FCMP_OLT || Pred == FCmpInst::FCMP_OLE)) {
+ (Pred == FCmpInst::FCMP_OLT || Pred == FCmpInst::FCMP_OLE ||
+ Pred == FCmpInst::FCMP_ULT || Pred == FCmpInst::FCMP_ULE)) {
Value *Fabs = Builder.CreateUnaryIntrinsic(Intrinsic::fabs, FalseVal, FNeg);
return replaceInstUsesWith(SI, Fabs);
}
@@ -1906,7 +1907,8 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
match(FalseVal, m_FNeg(m_Specific(TrueVal))) &&
match(FalseVal, m_Instruction(FNeg)) &&
FNeg->hasNoNaNs() && FNeg->hasNoSignedZeros() &&
- (Pred == FCmpInst::FCMP_OGT || Pred == FCmpInst::FCMP_OGE)) {
+ (Pred == FCmpInst::FCMP_OGT || Pred == FCmpInst::FCMP_OGE ||
+ Pred == FCmpInst::FCMP_UGT || Pred == FCmpInst::FCMP_UGE)) {
Value *Fabs = Builder.CreateUnaryIntrinsic(Intrinsic::fabs, TrueVal, FNeg);
return replaceInstUsesWith(SI, Fabs);
}
OpenPOWER on IntegriCloud