This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][GlobalISel] Select zip1 and zip2
ClosedPublic

Authored by paquette on Jun 1 2020, 5:58 PM.

Details

Summary

Port the code to recognize a zip1/zip2 shuffle mask from AArch64ISelLowering and put it into the post-legalizer combiner.

Add G_ZIP1 and G_ZIP2 to AArch64InstrGISel.td and hook them up as equivalent nodes to AArch64zip1 and AArch64zip2. By doing this, we can select them without having to actually write any code in the selector. This same approach should work for several other instructions handled in AArch64TargetLowering::LowerVECTOR_SHUFFLE.

Minor code size improvements for SPECINT2000 at -O3 on 197.parser, 252.eon, and 186.crafty.

Diff Detail

Event Timeline

paquette created this revision.Jun 1 2020, 5:58 PM
aemerson accepted this revision.Jun 2 2020, 4:52 PM

Very nice!

This revision is now accepted and ready to land.Jun 2 2020, 4:52 PM
This revision was automatically updated to reflect the committed changes.