[SVE] Add support for folding for select + masked loads
authorDylan Fleming <Dylan.Fleming@arm.com>
Mon, 26 Jul 2021 10:26:28 +0000 (11:26 +0100)
committerDylan Fleming <Dylan.Fleming@arm.com>
Mon, 26 Jul 2021 10:58:41 +0000 (11:58 +0100)
commit20b0fa91c9eebc7501e280049b61e8de352f3c94
tree900061b9ccbb95b431b2bda2fa6abb84a049fda9
parent0bfc26e3a4bf291f1d64610fe422c82789d752bc
[SVE] Add support for folding for select + masked loads

Add folds to instcombine to support the removal of select instruction when the masked_load is guaranteed to zero the same lanes, i.e. select(mask, mload(,,mask,0), 0) -> mload(,,mask,0).

Patch originally authored by @paulwalker-arm

Reviewed By: david-arm

Differential Revision: https://reviews.llvm.org/D106376
llvm/include/llvm/IR/PatternMatch.h
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/test/Transforms/InstCombine/select-masked_load.ll [new file with mode: 0644]
llvm/test/Transforms/LoopVectorize/ARM/mve-reduction-predselect.ll
llvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll