llvm-project/llvm/test/Transforms/InstSimplify
Elena Demikhovsky 45f0448081 Fold fcmp in cases where value is provably non-negative. By Arch Robison.
This patch folds fcmp in some cases of interest in Julia. The patch adds a function CannotBeOrderedLessThanZero that returns true if a value is provably not less than zero. I.e. the function returns true if the value is provably -0, +0, positive, or a NaN. The patch extends InstructionSimplify.cpp to fold instances of fcmp where:
 - the predicate is olt or uge
 - the first operand is provably not less than zero
 - the second operand is zero
The motivation for handling these cases optimizing away domain checks for sqrt in Julia for common idioms such as sqrt(x*x+y*y)..

http://reviews.llvm.org/D6972

llvm-svn: 227298
2015-01-28 08:03:58 +00:00
..
2010-12-20-Boolean.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2011-01-14-Thread.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2011-02-01-Vector.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2011-09-05-InsertExtractValue.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2011-10-27-BinOpCrash.ll
2011-11-23-MaskedBitsCrash.ll
2013-04-19-ConstantFoldingCrash.ll
AndOrXor.ll InstSimplify: Try to bring back the rest of r223583 2014-12-08 18:30:43 +00:00
apint-or.ll Move optimization of some cases of (A & C1)|(B & C2) from instcombine to instsimplify. Patch by Rahul Jain, plus some last minute changes by me -- you can blame me for any bugs. 2014-06-19 03:51:46 +00:00
assume.ll Add @llvm.assume, lowering, and some basic properties 2014-07-25 21:13:35 +00:00
call-callconv.ll
call.ll Verify that we don't optimize null return checks to the nothrow_t version of operator new. 2013-09-24 18:37:49 +00:00
compare.ll InstSimplify: Handle some simple tautological comparisons 2014-11-25 02:55:48 +00:00
dead-code-removal.ll RecursivelyDeleteTriviallyDeadInstructions() could remove 2014-04-26 05:58:11 +00:00
exact-nsw-nuw.ll InstCombine, InstSimplify: (%X /s C1) /s C2 isn't always 0 when C1 * C2 overflow 2014-10-11 10:20:01 +00:00
fast-math.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
fdiv.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
floating-point-arithmetic.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
floating-point-compare.ll Fold fcmp in cases where value is provably non-negative. By Arch Robison. 2015-01-28 08:03:58 +00:00
fold-builtin-fma.ll Revert "r216914 - Revert: [APFloat] Fixed a bug in method 'fusedMultiplyAdd'" 2014-10-14 19:23:07 +00:00
gep.ll InstSimplify: Don't simplify gep X, (Y-X) to Y if types differ 2014-08-27 20:08:34 +00:00
maxmin.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
noalias-ptr.ll Revert "r223364 - Revert r223347 which has caused crashes on bootstrap bots." 2014-12-04 17:45:19 +00:00
past-the-end.ll
phi.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
ptr_diff.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
reassociate.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
rem.ll InstSimplify: Don't allow (x srem y) urem y -> x srem y 2014-09-17 04:16:35 +00:00
select.ll InstSimplify: Optimize away pointless comparisons 2014-12-20 03:04:38 +00:00
shr-nop.ll InstSimplify: Exact shifts of X by Y are X if X has the lsb set 2014-11-05 00:59:59 +00:00
undef.ll ConstantFold: Shifting undef by zero results in undef 2014-12-18 23:54:43 +00:00
vector_gep.ll InstSimplify: Make shift, select and GEP simplifications vector-aware. 2014-01-24 17:09:53 +00:00
vector_ptr_bitcast.ll [InstSimplify] Support constant folding to vector of pointers 2014-10-22 12:18:48 +00:00