llvm-project/llvm/test/Transforms/InstSimplify
Andrea Di Biagio 7277afeec1 [ConstantFold] Improve the bitcast folding logic for constant vectors.
The constant folder didn't know how to always fold bitcasts of constant integer
vectors. In particular, it was unable to handle the case where a constant vector
had some undef elements, and the resulting (i.e. bitcasted) vector type had more
elements than the original vector type.

Example:
  %cast = bitcast <2 x i64><i64 undef, i64 2> to <4 x i32>

On a little endian target, %cast could have been folded to:
  <4 x i32><i32 undef, i32 undef, i32 2, i32 0>

This patch improves the folding logic by teaching how to correctly propagate
undef elements in the folded vector.

Differential Revision: https://reviews.llvm.org/D24301

llvm-svn: 281343
2016-09-13 14:50:47 +00:00
..
2010-12-20-Boolean.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
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] analyze (optionally casted) icmps to eliminate obviously false logic (PR27869) 2016-06-20 20:59:59 +00:00
add-mask.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
apint-or.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
assume.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
bitcast-vector-fold.ll [ConstantFold] Improve the bitcast folding logic for constant vectors. 2016-09-13 14:50:47 +00:00
bswap.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
call-callconv.ll
call.ll Simplify llvm.masked.load w/ undef masks 2016-07-14 06:58:37 +00:00
cast.ll [InstSimplify] Fold gep (gep V, C), (xor V, -1) to C-1 2016-08-16 06:13:46 +00:00
compare.ll [InstSimplify] move icmp with constant tests to another file; NFC 2016-08-23 16:46:53 +00:00
dead-code-removal.ll
exact-nsw-nuw.ll
fast-math.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
fdiv.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
floating-point-arithmetic.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
floating-point-compare.ll [instsimplify] Fix incorrect folding of an ordered fcmp with a vector of all NaN. 2016-09-02 14:47:43 +00:00
fold-builtin-fma.ll
gep.ll
icmp-constant.ll [InstSimplify] allow icmp with constant folds for splat vectors, part 2 2016-08-23 18:00:51 +00:00
implies.ll [ValueTracking] Correct lit test comments. NFC. 2016-04-18 19:11:45 +00:00
load-relative-32.ll Introduce llvm.load.relative intrinsic. 2016-04-22 21:18:02 +00:00
load-relative.ll Introduce llvm.load.relative intrinsic. 2016-04-22 21:18:02 +00:00
load.ll [ConstantFolding] Extend FoldReinterpretLoadFromConstPtr to handle negative offsets 2016-07-13 23:33:07 +00:00
maxmin.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
noalias-ptr.ll
past-the-end.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
phi.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
pr28725.ll [ConstantFolding] Use ConstantExpr::getWithOperands 2016-07-29 03:27:31 +00:00
ptr_diff.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
reassociate.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
rem.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
require-dominator.ll Add unittest for r280760 2016-09-08 16:53:40 +00:00
returned.ll Pointer-comparison folding should look through returned-argument functions 2016-07-11 03:37:59 +00:00
select.ll [InstSimplify] don't crash handling a pointer or aggregate type 2016-07-21 21:56:00 +00:00
shift-128-kb.ll [InstSimplify] regenerate checks using a script 2016-03-25 20:12:25 +00:00
shift-knownbits.ll [InstSimplify] use computeKnownBits on shift amount operands 2016-05-10 20:46:54 +00:00
shr-nop.ll [ValueTracking] improve ComputeNumSignBits for vector constants 2016-06-22 19:20:59 +00:00
undef.ll [InstCombine] replace divide-by-constant checks with asserts; NFC 2016-08-30 17:31:34 +00:00
vec-cmp.ll [ValueTracking, InstSimplify] extend isKnownNonZero() to handle vector constants 2016-05-24 14:18:49 +00:00
vector_gep.ll Vector GEP - fixed a crash on InstSimplify Pass. 2016-05-15 12:30:25 +00:00
vector_ptr_bitcast.ll