llvm-project/llvm/test/Transforms/InstSimplify
Sanjay Patel 9dada83d6c [InstSimplify] remove zero-shift-guard fold for general funnel shift
As discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2019-February/130491.html

We can't remove the compare+select in the general case because
we are treating funnel shift like a standard instruction (as
opposed to a special instruction like select/phi).

That means that if one of the operands of the funnel shift is
poison, the result is poison regardless of whether we know that
the operand is actually unused based on the instruction's
particular semantics.

The motivating case for this transform is the more specific
rotate op (rather than funnel shift), and we are preserving the
fold for that case because there is no chance of introducing
extra poison when there is no anonymous extra operand to the
funnel shift.

llvm-svn: 354905
2019-02-26 18:26:56 +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 [InstSimplify] fold extracting from std::pair (2/2) 2018-08-03 05:39:48 +00:00
add-mask.ll
add.ll [InstSimplify] simplify add instruction if two operands are negative 2018-07-12 03:06:04 +00:00
addsub.ll
and-icmps-same-ops.ll
and-or-icmp-zero.ll
assume.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
bitcast-vector-fold.ll
bitreverse-fold.ll
bitreverse.ll
bswap.ll
call.ll [InstSimplify] remove zero-shift-guard fold for general funnel shift 2019-02-26 18:26:56 +00:00
cast-unsigned-icmp-cmp-0.ll [PatternMatch] allow undef elements when matching a vector zero 2018-04-22 17:07:44 +00:00
cast.ll
compare.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
constantfold-add-nuw-allones-to-allones.ll [InstSimplify] add nuw %x, -1 -> -1 fold. 2018-06-08 15:44:47 +00:00
constantfold-shl-nuw-C-to-C.ll [NFC][InstSimplify] One more negative test for shl nuw C, %x -> C fold. 2018-06-07 21:19:45 +00:00
dead-code-removal.ll
div.ll [InstSimplify] fold div/rem of zexted bool 2018-06-25 18:51:21 +00:00
exact-nsw-nuw.ll
extract-element.ll [InstCombine] remove dead code from visitExtractElement 2018-12-05 23:09:33 +00:00
fast-math.ll [FPEnv] PatternMatcher support for checking FNEG ignoring signed zeros 2018-10-09 21:48:00 +00:00
fcmp-select.ll [InstSimplify] fold select (fcmp X, Y), X, Y 2018-11-05 21:51:39 +00:00
fdiv.ll [InstSimplify] add tests for FP with undef operand; NFC 2018-02-27 20:17:18 +00:00
floating-point-arithmetic.ll [InstCombine] InstCombine and InstSimplify for minimum and maximum 2018-10-19 19:01:26 +00:00
floating-point-compare.ll [InstSimplify] use any-zero matcher for fcmp folds 2019-02-20 14:34:00 +00:00
fold-builtin-fma.ll
fold-intrinsics.ll
fp-nan.ll [InstSimplify] fp_binop X, NaN --> NaN 2018-03-21 19:31:53 +00:00
fp-undef.ll [InstSimplify] add tests for undef + partial undef constant folding; NFC 2018-11-30 22:51:34 +00:00
gep.ll [InstSimplify] regenerate checks, move tests; NFC 2018-03-23 15:31:31 +00:00
icmp-abs-nabs.ll [InstSimplify] fold icmp based on range of abs/nabs (2nd try) 2018-11-01 14:07:39 +00:00
icmp-bool-constant.ll [PatternMatch] enhance m_One() to ignore undef elements in vectors 2018-02-17 16:00:42 +00:00
icmp-constant.ll
icmp-ranges.ll
implies.ll
insertelement.ll
known-never-nan.ll [InstSimplify] use isKnownNeverNaN to fold more fcmp ord/uno 2018-08-21 14:45:13 +00:00
load-relative-32.ll
load-relative.ll
load.ll
log-exp-intrinsic.ll [InstSimplify] allow exp/log simplifications with only 'reassoc' FMF 2018-02-12 23:51:23 +00:00
log2-pow2-intrinsic.ll [InstSimplify] Missed optimization in math expression: log10(pow(10.0,x)) == x, log2(pow(2.0,x)) == x 2019-02-03 03:48:30 +00:00
log10-pow10-intrinsic.ll [InstSimplify] Missed optimization in math expression: log10(pow(10.0,x)) == x, log2(pow(2.0,x)) == x 2019-02-03 03:48:30 +00:00
logic-of-fcmps.ll
maxmin.ll
mul.ll [PatternMatch] allow undef elements when matching a vector zero 2018-04-22 17:07:44 +00:00
negate.ll [PatternMatch] allow undef elements when matching a vector zero 2018-04-22 17:07:44 +00:00
noalias-ptr.ll
or-icmps-same-ops.ll
or.ll [PatternMatch, InstSimplify] enhance m_AllOnes() to ignore undef elements in vectors 2018-02-18 18:05:08 +00:00
past-the-end.ll
phi.ll
pr28725.ll
pr33957.ll
ptr_diff.ll
reassociate.ll
rem.ll [InstSimplify] fold srem with sext bool divisor 2018-06-26 15:32:54 +00:00
require-dominator.ll
returned.ll
saturating-add-sub.ll [InstSimplify] Simplify saturating add/sub + icmp 2018-12-17 17:45:18 +00:00
sdiv.ll [InstrSimplify] fold sdiv if two operands are negated and non-overflow 2018-07-21 12:27:54 +00:00
select-and-cmp.ll [InstSimplify] Fold another Select with And/Or pattern 2018-07-31 14:17:15 +00:00
select-implied.ll [InstSimplify] fold select with implied condition 2018-11-29 18:44:39 +00:00
select-or-cmp.ll [InstSimplify] Fold another Select with And/Or pattern 2018-07-31 14:17:15 +00:00
select.ll Reland r301880(!): "[InstSimplify] Handle selects of GEPs with 0 offset" 2018-04-24 00:25:01 +00:00
shift-128-kb.ll
shift-knownbits.ll
shift.ll [InstSimplify] fold extracting from std::pair (1/2) 2018-08-01 04:40:32 +00:00
shr-nop.ll [InstSimplify] move tests for shifts; NFC 2018-04-21 16:58:00 +00:00
shr-scalar-vector-consistency.ll [PatternMatch] Handle undef vectors consistently 2018-11-20 16:08:19 +00:00
shufflevector.ll
signed-div-rem.ll
simplify-nested-bitcast.ll
srem.ll [InstSimplify] fold srem instruction if its two operands are negated. 2018-07-20 13:00:47 +00:00
sub.ll [InstCombine] move/add tests for sub/neg; NFC 2018-10-19 17:26:22 +00:00
undef.ll
vec-cmp.ll
vector_gep.ll [ConstantFolding, InstSimplify] Handle more vector GEPs 2018-03-15 16:00:29 +00:00
vector_ptr_bitcast.ll