diff options
author | Sanjay Patel <spatel@rotateright.com> | 2019-06-10 14:14:51 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2019-06-10 14:14:51 +0000 |
commit | 8cd8c5784b813d6e1b58c57d61a06ff5686d3473 (patch) | |
tree | 9fdd80e646a26ed9cc239df1367e1ba3e04436b4 /llvm/lib | |
parent | 4cdd3ceb572d4ed8b16bd91ed99fc0302bad55c9 (diff) | |
download | bcm5719-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')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp | 6 |
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); } |