From 8cd8c5784b813d6e1b58c57d61a06ff5686d3473 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Mon, 10 Jun 2019 14:14:51 +0000 Subject: [InstCombine] allow unordered preds when canonicalizing to fabs() PR42179: https://bugs.llvm.org/show_bug.cgi?id=42179 llvm-svn: 362937 --- llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp') 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); } -- cgit v1.2.3