llvm-6502/test/Transforms/InstSimplify
Elena Demikhovsky b5c82c079a 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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227298 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-28 08:03:58 +00:00
..
2010-12-20-Boolean.ll
2011-01-14-Thread.ll
2011-02-01-Vector.ll
2011-09-05-InsertExtractValue.ll
2011-10-27-BinOpCrash.ll
2011-11-23-MaskedBitsCrash.ll
2013-04-19-ConstantFoldingCrash.ll
AndOrXor.ll
apint-or.ll
assume.ll
call-callconv.ll
call.ll
compare.ll
dead-code-removal.ll
exact-nsw-nuw.ll
fast-math.ll
fdiv.ll
floating-point-arithmetic.ll
floating-point-compare.ll
fold-builtin-fma.ll
gep.ll
maxmin.ll
noalias-ptr.ll
past-the-end.ll
phi.ll
ptr_diff.ll
reassociate.ll
rem.ll
select.ll
shr-nop.ll
undef.ll
vector_gep.ll
vector_ptr_bitcast.ll