See if we can remove X86ISD::ANDNP nodes by checking the state of the knownbits of the demanded elements.
This is equivalent to the generic ISD::AND handling, but flips the bits of the LHS operand to account for ANDNP.
Paths
| Differential D128216
[X86] Add SimplifyMultipleUseDemandedBitsForTargetNode X86ISD::ANDNP handling ClosedPublic Authored by RKSimon on Jun 20 2022, 10:47 AM.
Details Summary See if we can remove X86ISD::ANDNP nodes by checking the state of the knownbits of the demanded elements. This is equivalent to the generic ISD::AND handling, but flips the bits of the LHS operand to account for ANDNP.
Diff Detail
Unit TestsFailed
Event Timeline
RKSimon added inline comments.
Comment Actions The interleaved shuffles tend to create a sequence of ORs/BLENDs with zeros - for 265-bit on AVX2+ that means usually means 2 x VPBLENDD but the AVX1 path usually ends up with a OR(AND,ANDN) pattern instead. This revision is now accepted and ready to land.Aug 26 2022, 5:23 AM This revision was landed with ongoing or failed builds.Aug 26 2022, 6:29 AM Closed by commit rG488861d0e376: [X86] Add SimplifyMultipleUseDemandedBitsForTargetNode X86ISD::ANDNP handling (authored by RKSimon). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 452159 llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/combine-udiv.ll
llvm/test/CodeGen/X86/vector-interleaved-load-i16-stride-5.ll
|
Why return LHS rather than ~LHS?