llvm-project/llvm/test/Transforms/AggressiveInstCombine
Anton Afanasyev bed587631f [AggressiveInstCombine] Add arithmetic shift right instr to `TruncInstCombine` DAG
Add `ashr` instruction to the DAG post-dominated by `trunc`, allowing
`TruncInstCombine` to reduce bitwidth of expressions containing
these instructions.

We should be shifting by less than the target bitwidth.
Also it is sufficient to require that all truncated bits
of the value-to-be-shifted are sign bits (all zeros or ones) and
one sign bit is left untruncated: https://alive2.llvm.org/ce/z/Ajo2__

Part of https://reviews.llvm.org/D107766

Differential Revision: https://reviews.llvm.org/D108355
2021-08-24 10:41:16 +03:00
..
funnel.ll [AggressiveInstCombine] Generalize foldGuardedRotateToFunnelShift to generic funnel shifts (REAPPLIED) 2020-12-21 15:22:27 +00:00
masked-cmp.ll
popcount.ll
pr50555.ll [AggressiveInstCombine] Add logical shift right instr to `TruncInstCombine` DAG 2021-08-18 22:20:58 +03:00
rotate.ll [AggressiveInstCombine] Generalize foldGuardedRotateToFunnelShift to generic funnel shifts (REAPPLIED) 2020-12-21 15:22:27 +00:00
trunc_ashr.ll [AggressiveInstCombine] Add arithmetic shift right instr to `TruncInstCombine` DAG 2021-08-24 10:41:16 +03:00
trunc_const_expr.ll [TruncInstCombine] Remove scalable vector restriction 2020-12-10 18:00:19 +08:00
trunc_lshr.ll [Test][AggressiveInstCombine] Modify shift tests 2021-08-24 10:30:27 +03:00
trunc_multi_uses.ll
trunc_select.ll
trunc_select_cmp.ll
trunc_shl.ll [Test][AggressiveInstCombine] Split shift tests to `shl`, `lshr` and `ashr` 2021-08-20 06:33:19 +03:00
trunc_unreachable_bb.ll