forked from OSchip/llvm-project
eb731b09f3
The 'ord' and 'uno' predicates have a logic operation for NAN built into their definitions: FCMP_ORD = 7, ///< 0 1 1 1 True if ordered (no nans) FCMP_UNO = 8, ///< 1 0 0 0 True if unordered: isnan(X) | isnan(Y) So we can simplify patterns like this: (fcmp ord (known NNAN), X) && (fcmp ord X, Y) --> fcmp ord X, Y (fcmp uno (known NNAN), X) || (fcmp uno X, Y) --> fcmp uno X, Y It might be better to split this into (X uno 0) | (Y uno 0) as a canonicalization, but that would be another patch. Differential Revision: https://reviews.llvm.org/D40130 llvm-svn: 318627 |
||
---|---|---|
.. | ||
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 | ||
add-mask.ll | ||
addsub.ll | ||
and-icmps-same-ops.ll | ||
assume.ll | ||
bitcast-vector-fold.ll | ||
bitreverse.ll | ||
bswap.ll | ||
call-callconv.ll | ||
call.ll | ||
cast.ll | ||
compare.ll | ||
dead-code-removal.ll | ||
div.ll | ||
exact-nsw-nuw.ll | ||
fast-math.ll | ||
fdiv.ll | ||
floating-point-arithmetic.ll | ||
floating-point-compare.ll | ||
fold-builtin-fma.ll | ||
gep.ll | ||
icmp-bool-constant.ll | ||
icmp-constant.ll | ||
icmp-ranges.ll | ||
implies.ll | ||
load-relative-32.ll | ||
load-relative.ll | ||
load.ll | ||
logic-of-fcmps.ll | ||
maxmin.ll | ||
mul.ll | ||
negate.ll | ||
noalias-ptr.ll | ||
or-icmps-same-ops.ll | ||
or.ll | ||
past-the-end.ll | ||
phi.ll | ||
pr28725.ll | ||
pr33957.ll | ||
ptr_diff.ll | ||
reassociate.ll | ||
rem.ll | ||
require-dominator.ll | ||
returned.ll | ||
select.ll | ||
shift-128-kb.ll | ||
shift-knownbits.ll | ||
shr-nop.ll | ||
shufflevector.ll | ||
signed-div-rem.ll | ||
simplify-nested-bitcast.ll | ||
undef.ll | ||
vec-cmp.ll | ||
vector_gep.ll | ||
vector_ptr_bitcast.ll |