forked from OSchip/llvm-project
![]() The first attempt was reverted because a clang test changed unexpectedly - the file is already marked with a FIXME, so I just updated it this time to pass. Original commit message: This is the main patch for converting a truncated scalar that is inserted into a vector to bitcast+shuffle. We could go either way on patterns like this, but this direction will allow collapsing a pair of these sequences on the motivating example from issue The patch is split into 3 parts to make it easier to see the progression of tests diffs. We allow inserting/shuffling into a different size vector for flexibility, so there are several test variations. The length-changing is handled by shortening/padding the shuffle mask with undef elements. In part 1, handle the basic pattern: inselt undef, (trunc T), IndexC --> shuffle (bitcast T), IdentityMask Proof for the endian-dependency behaving as expected: https://alive2.llvm.org/ce/z/BsA7yC The TODO items for handling shifts and insert into an arbitrary base vector value are implemented as follow-ups. Differential Revision: https://reviews.llvm.org/D138872 |
||
---|---|---|
.. | ||
SROA-after-final-loop-unrolling-2.ll | ||
SROA-after-final-loop-unrolling.ll | ||
SROA-after-loop-unrolling.ll | ||
addsub-inseltpoison.ll | ||
addsub.ll | ||
ctlz-loop.ll | ||
earlycse-after-simplifycfg-two-entry-phi-node-folding.ll | ||
excessive-unrolling.ll | ||
hoist-load-of-baseptr.ll | ||
horiz-math-inseltpoison.ll | ||
horiz-math.ll | ||
lit.local.cfg | ||
loadcombine.ll | ||
loop-idiom-vs-indvars.ll | ||
masked-memory-ops.ll | ||
merge-functions.ll | ||
nancvt.ll | ||
peel-before-lv-to-enable-vectorization.ll | ||
pixel-splat.ll | ||
pr38280.ll | ||
pr48844-br-to-switch-vectorization.ll | ||
pr50555.ll | ||
pr52078.ll | ||
pr52253.ll | ||
pr52289.ll | ||
scalarization-inseltpoison.ll | ||
scalarization.ll | ||
shuffle-inseltpoison.ll | ||
shuffle.ll | ||
simplifycfg-late.ll | ||
speculation-vs-tbaa.ll | ||
spurious-peeling.ll | ||
store-constant-merge.ll | ||
unsigned-multiply-overflow-check.ll | ||
vdiv-nounroll.ll | ||
vdiv.ll | ||
vec-load-combine.ll | ||
vec-shift.ll | ||
vector-math.ll | ||
vector-reduction-known-first-value.ll | ||
vector-reductions-expanded.ll | ||
vector-reductions-logical.ll | ||
vector-reductions.ll |