[InstCombine][X86] Covert masked load/stores with (sign extended) bool vector masks...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 12 Sep 2020 14:02:30 +0000 (15:02 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 12 Sep 2020 14:09:28 +0000 (15:09 +0100)
commit3170d54842655d6d936aae32b7d0bc92fce7f22e
treebfbdd5fd81963a35affc0646e6ed23d08625054d
parenta874d63344093752c912d01de60211f65745ea6f
[InstCombine][X86] Covert masked load/stores with (sign extended) bool vector masks to generic intrinsics.

As detailed on PR11210, if the mask is known to come from a (sign extended) bool vector (e.g. comparisons) then we can represent with a generic masked load/store without losing anything.

We already do something similar for BLENDV -> SELECT conversion.
llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
llvm/test/Transforms/InstCombine/X86/x86-masked-memops.ll