This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][DAGCombine] Add pushAndThroughExtractSubvector
AbandonedPublic

Authored by peterwaller-arm on Jul 28 2022, 4:11 AM.

Details

Summary

Eliminate an AND by reifying an anyext.

   (and (extract_subvector (anyext v) _) iN_mask)
=> (extract_subvector (zeroext_iN v))

Depends on D130698

Diff Detail

Event Timeline

Herald added a project: Restricted Project. · View Herald TranscriptJul 28 2022, 4:11 AM
peterwaller-arm published this revision for review.Jul 28 2022, 4:16 AM
Herald added a project: Restricted Project. · View Herald TranscriptJul 28 2022, 4:16 AM
  • Update patch for changes to base patch D130698.
paulwalker-arm added inline comments.Jul 28 2022, 7:48 AM
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
15012–15017

Do you need to care about the exact node here. Can you use isConstOrConstSplat instead?

paulwalker-arm added inline comments.Jul 28 2022, 7:58 AM
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
15003–15004

Is this necessary? What are you trying to protect against?

  • Stylistic changes to shrink the code a little.
  • Drop unneeded scalable bailout.
  • Use isConstOrConstSplat.

This patch has been subsumed by D130782.

peterwaller-arm abandoned this revision.Aug 8 2022, 4:38 AM