[PATCH] D138521: [X86] Support ANDNP combine through broadcast instructions with scalar input

Evgenii Kudriashov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 6 13:14:16 PST 2022


e-kud added a comment.

In D138521#3974292 <https://reviews.llvm.org/D138521#3974292>, @RKSimon wrote:

> Do we have any 256/512 bit test coverage?

Unfortunately, no. I only tested locally with 256 bits.

I found out that the generic approach has a problem. If we have a 256 or 512 bit vector, then we can't generate `ANDNP` with SSE because there is no type for 256 bits. But after type-legalizer we have several `ISD::AND` that can be combined into `ANDNP`.
It works with `BROADCAST/PSHUFD` approach but performing the generic-combine before type-legalization prevents it.

I think about `and (shuffle(not)) -> and(not(shuffle))` reordering before type-legalization and then after legalization we combine them into `ANDNP`. However I'm not sure about such two-step combine. What do you think?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D138521/new/

https://reviews.llvm.org/D138521



More information about the llvm-commits mailing list