llvm-project/llvm/test/Transforms/InstSimplify
Sanjay Patel adf42dff42 [ValueTracking] peek through min/max to find isKnownToBeAPowerOfTwo
This is similar to the select logic just ahead of the new code.
Min/max choose exactly one value from the inputs, so if both of
those are a power-of-2, then the result must be a power-of-2.

This might help with D98152, but we likely still need other
pieces of the puzzle to avoid regressions.

The change in PatternMatch.h is needed to build with clang.
It's possible there is a better way to deal with the 'const'
incompatibities.

Differential Revision: https://reviews.llvm.org/D99276
2021-03-24 17:54:38 -04:00
..
ConstProp [InstSimplify] Add load of undef aggregate test (NFC) 2021-03-21 17:42:26 +01:00
2010-12-20-Boolean.ll
2011-01-14-Thread.ll
2011-02-01-Vector.ll
2011-09-05-InsertExtractValue.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
2011-10-27-BinOpCrash.ll
2011-11-23-MaskedBitsCrash.ll
2013-04-19-ConstantFoldingCrash.ll
AndOrXor.ll [ValueTracking] peek through min/max to find isKnownToBeAPowerOfTwo 2021-03-24 17:54:38 -04:00
abs_intrinsic.ll [InstSimplify] Don't miscompile `X == 0 ? abs(X) : -abs(X) --> -abs(X)` xform 2020-12-18 21:18:13 +03:00
add-mask.ll [ValueTracking] Add computeKnownBits DemandedElts support to masked add instructions (PR36319) 2020-03-18 21:50:56 +00:00
add.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
addsub.ll
and-icmps-same-ops.ll
and-or-icmp-min-max.ll [InstSimplify] peek through 'not' operand in logic-of-icmps fold 2020-10-25 11:13:30 -04:00
and-or-icmp-nullptr.ll [InstSimplify] fold and/or of compares with equality to min/max constant 2020-04-23 09:16:10 -04:00
and-or-icmp-zero.ll
and.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
assume-non-zero.ll
assume_icmp.ll [InstSimplify] Fold icmp with dominating assume 2020-07-03 18:53:58 +02:00
bitcast-vector-fold.ll
bitreverse-fold.ll
bitreverse.ll
bswap.ll
call.ll [InstSimplify] ctlz({signbit} >>u x) --> x 2021-03-15 12:03:35 -04:00
cast-unsigned-icmp-cmp-0.ll
cast.ll
cmp-vec-fast-path.ll [SVE] Take constant fold fast path for splatted vscale vectors 2020-11-17 12:45:31 -08:00
cmp_ext.ll [InstSimplify] Simplify comparison between zext(x) and sext(x) 2020-07-04 11:03:00 +02:00
cmp_of_min_max.ll
compare.ll [InstSimplify] allow vector folds for (Pow2C << X) == NonPow2C 2020-11-08 09:52:05 -05:00
constantfold-add-nuw-allones-to-allones.ll
constantfold-shl-nuw-C-to-C.ll
constfold-constrained.ll [FEnv] Constfold some unary constrained operations 2020-03-28 12:28:33 +07:00
dead-code-removal.ll
distribute.ll [InstSimplify] add tests for expandCommutativeBinOp; NFC 2020-07-29 23:21:39 +09:00
div-by-0-guard-before-smul_ov-not.ll
div-by-0-guard-before-smul_ov.ll
div-by-0-guard-before-umul_ov-not.ll
div-by-0-guard-before-umul_ov.ll
div.ll Revert "[ConstantFold] Fold more operations to poison" 2021-02-04 00:24:02 +09:00
exact-nsw-nuw.ll
extract-element.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
fast-math.ll [ValueTracking] fix CannotBeNegativeZero() to disregard 'nsz' FMF 2020-05-05 16:04:59 -04:00
fcmp-select.ll
fcmp.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
fdiv.ll
floating-point-arithmetic.ll [InstSimplify] add/move tests for fmin/fmax; NFC 2020-09-14 10:24:19 -04:00
floating-point-compare.ll [ValueTracking] enhance isKnownNeverInfinity to understand sitofp 2020-09-27 08:40:31 -04:00
fminmax-folds.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
fold-intrinsics.ll
fp-nan.ll [InstSimplify] Fold nnan/ninf violation to poison 2021-01-03 22:05:40 +01:00
fp-undef-poison.ll [InstSimplify] Fold nnan/ninf violation to poison 2021-01-03 22:05:40 +01:00
fptoi-sat.ll [ConstantFold] Fold fptoi.sat intrinsics 2021-01-10 17:37:27 +01:00
freeze-noundef.ll Add support for !noundef metatdata on loads 2020-10-17 13:50:10 +09:00
freeze.ll [ValueTracking] Dereferenced pointers are noundef 2021-02-14 22:50:48 +09:00
gc_relocate.ll Use the right pass in test introduced in f1fdbd67 2021-03-04 12:21:13 -08:00
gep.ll [InstSimplify] Restrict a GEP transform to avoid provenance changes 2021-03-16 18:53:05 +02:00
icmp-abs-nabs.ll
icmp-bool-constant.ll
icmp-constant.ll [KnownBits] Add min/max shift amount handling to shl/lshr/ashr KnownBits helpers 2021-03-08 11:44:31 +00:00
icmp-ranges.ll
icmp.ll [InstSimplify] Fold x*C1/C2 <= x (PR48744) 2021-01-17 16:02:55 +01:00
implies.ll
insertelement.ll [InstSimplify] Fold insertelement vec, poison, idx into vec 2021-01-07 10:10:14 +09:00
insertvalue.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
known-never-nan.ll [FPEnv] Intrinsic llvm.roundeven 2020-05-26 19:24:58 +07:00
known-non-zero.ll [ValueTracking] isKnownNonZero, computeKnownBits for freeze 2020-09-10 08:07:38 +09:00
load-relative-32.ll
load-relative.ll
load.ll [AssumeBundles] add cannonicalisation to the assume builder 2020-06-19 10:32:26 +02:00
log-exp-intrinsic.ll
log2-pow2-intrinsic.ll
log10-pow10-intrinsic.ll
logic-of-fcmps.ll
maxmin.ll
maxmin_intrinsics.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
mul.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
named-vector-shuffle-reverse.ll [CodeGen][SelectionDAG]Add new intrinsic experimental.vector.reverse 2021-02-15 13:39:43 +00:00
negate.ll
noalias-ptr.ll
null-ptr-is-valid-attribute.ll ValueTracking: Fix isKnownNonZero for non-0 null pointers for byval 2020-07-16 13:50:49 -04:00
null-ptr-is-valid.ll ValueTracking: Fix isKnownNonZero for non-0 null pointers for byval 2020-07-16 13:50:49 -04:00
or-icmps-same-ops.ll
or.ll [InstSimplify] Handle commutativity for 'and' and 'outer or' for (~A & B) | ~(A | B) --> ~A 2021-01-16 19:42:50 +01:00
past-the-end.ll
phi-cse.ll [NFC][InstSimplify] Add a note to PHI CSE tests that they are all negative tests 2020-08-29 13:13:06 +03:00
phi.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
pr28725.ll
pr33957.ll
pr49495.ll [InstCombine] Whitelist non-refining folds in SimplifyWithOpReplaced 2021-03-22 22:12:56 +01:00
ptr_diff.ll
reassociate.ll
redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll
rem.ll Revert "[ConstantFold] Fold more operations to poison" 2021-02-04 00:24:02 +09:00
remove-dead-call.ll [Local] Treat calls that may not return as being alive. 2021-01-23 16:05:14 +00:00
require-dominator.ll
result-of-add-of-negative-is-non-zero-and-no-underflow.ll
result-of-usub-by-nonzero-is-non-zero-and-no-overflow.ll
result-of-usub-is-non-zero-and-no-overflow.ll
returned.ll [Local] Treat calls that may not return as being alive. 2021-01-23 16:05:14 +00:00
round-intrinsics.ll [FPEnv] Intrinsic llvm.roundeven 2020-05-26 19:24:58 +07:00
saturating-add-sub.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
sdiv.ll
select-and-cmp.ll
select-implied.ll
select-inseltpoison.ll Precommit transform tests that have poison as insertelement's placeholder 2020-12-24 11:46:17 +09:00
select-or-cmp.ll
select.ll [ValueTracking] Teach canCreateUndefOrPoison that ctpop does not create undef or poison. 2021-03-23 12:42:18 -07:00
shift-128-kb.ll
shift-knownbits.ll [InstSimplify] Fold out-of-bounds shift to poison 2021-01-06 20:41:37 +01:00
shift.ll [InstSimplify] Fold out-of-bounds shift to poison 2021-01-06 20:41:37 +01:00
shr-nop.ll
shr-scalar-vector-consistency.ll
shufflevector-inseltpoison.ll Precommit tests that have poison as shufflevector's placeholder 2020-12-29 17:09:31 +09:00
shufflevector.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
signed-div-rem.ll
simplify-nested-bitcast.ll
smul_fix.ll [InstSimplify] Simplify smul.fix and smul.fix.sat 2021-03-12 09:09:58 +01:00
srem.ll
sub.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00
undef.ll Revert "[ConstantFold] Fold more operations to poison" 2021-02-04 00:24:02 +09:00
vec-cmp.ll
vector_gep.ll
vector_ptr_bitcast.ll
vscale-inseltpoison.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
vscale.ll [InstSimplify] Return poison for out of bounds extractelement 2021-01-03 18:15:58 +01:00
xor.ll [InstSimplify] Add tests that fold instructions with poison operands (NFC) 2020-12-02 01:01:59 +09:00