[X86] Support ANDNP combine through vector_shuffle
authorEvgenii Kudriashov <evgenii.kudriashov@intel.com>
Wed, 21 Dec 2022 12:45:41 +0000 (20:45 +0800)
committerPhoebe Wang <phoebe.wang@intel.com>
Thu, 22 Dec 2022 08:55:14 +0000 (16:55 +0800)
commit15dd5ed96cf1ecd29842ef6d3bc9b5eea12dccfd
tree427839408a6f9ffda4fc648ab3453bb16b134f4b
parentdd881c9dbf5d940eedff7d23395141454c5a26b9
[X86] Support ANDNP combine through vector_shuffle

Combine
```
   and (vector_shuffle<Z,...,Z>
            (insert_vector_elt undef, (xor X, -1), Z), undef), Y
   ->
   andnp (vector_shuffle<Z,...,Z>
              (insert_vector_elt undef, X, Z), undef), Y
```

Reviewed By: RKSimon, pengfei

Differential Revision: https://reviews.llvm.org/D138521
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/combine-and.ll