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
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 455890 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?