llvm-project/llvm/test/Transforms/LoopVectorize/ARM
Sanjay Patel e71b81cab0 [InstCombine] canonicalize trunc + insert as bitcast + shuffle, part 1 (2nd try)
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
2022-11-30 14:52:20 -05:00
..
arm-ieee-vectorize.ll
arm-unroll.ll
gather-cost.ll
gcc-examples.ll
interleaved_cost.ll
lit.local.cfg
mve-gather-scatter-tailpred.ll [IRBuilder] Use PoisonValue in CreateMasked* 2022-09-19 11:01:41 -07:00
mve-icmpcost.ll
mve-interleaved-cost.ll
mve-known-trip-count.ll [ARM] Add an extra test for low trip count MVE vectorization. NFC 2022-11-17 15:07:28 +00:00
mve-maskedldst.ll
mve-predstorecost.ll
mve-qabs.ll [LV] Refresh autogen tests to reflect naming changes [nfc] 2022-08-29 14:16:54 -07:00
mve-recurrence.ll [LV] Replace fixed-order cost model with a SK_Splice shuffle 2022-08-24 13:00:32 +01:00
mve-reduction-predselect.ll [InstCombine] reassociate bitwise logic chains based on uses 2022-08-21 09:42:14 -04:00
mve-reduction-types.ll [LoopVectorize] Add FastMathFlags to the select used for reductions with tail-folding 2022-06-07 10:21:31 +01:00
mve-reductions.ll [ARM,MVE] Update MVE_VMLA_qr for architecture change. 2022-11-29 08:47:00 +00:00
mve-saddsatcost.ll [LV] Refresh autogen tests to reflect naming changes [nfc] 2022-08-29 14:16:54 -07:00
mve-selectandorcost.ll [LV] Refresh autogen tests to reflect naming changes [nfc] 2022-08-29 14:16:54 -07:00
mve-shiftcost.ll
mve-vldn.ll
pointer_iv.ll [InstCombine] canonicalize trunc + insert as bitcast + shuffle, part 1 (2nd try) 2022-11-30 14:52:20 -05:00
prefer-tail-loop-folding.ll
scalar-block-cost.ll
sphinx.ll
tail-fold-multiple-icmps.ll
tail-folding-allowed.ll
tail-folding-counting-down.ll
tail-folding-loop-hint.ll [LV] Use variables instead of hard-coded metadata IDs in tests. 2022-08-16 12:21:49 +01:00
tail-folding-not-allowed.ll [IRBuilder] Use PoisonValue in CreateMasked* 2022-09-19 11:01:41 -07:00
tail-folding-prefer-flag.ll
tail-folding-reduces-vf.ll
tail-folding-reductions-allowed.ll
tail-folding-scalar-epilogue-fallback.ll [LV] Refresh autogen tests to reflect naming changes [nfc] 2022-08-29 14:16:54 -07:00
vector_cast.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
width-detect.ll