HomePhabricator

[AArch64][GlobalISel] Add G_EXT and select ext using it

Authored by paquette on Jun 8 2020, 2:02 PM.

Description

[AArch64][GlobalISel] Add G_EXT and select ext using it

Add selection support for ext via a new opcode, G_EXT and a post-legalizer
combine which matches it.

Add an applyEXT function, because the AArch64ext patterns require a register
for the immediate. So, we have to create a G_CONSTANT to get these without
writing new patterns or modifying the existing ones.

Tests are the same as arm64-ext.ll.

Also prevent ext from firing on the zip test. It has higher priority, so we
don't want it potentially getting in the way of mask tests.

Also fix up the shuffle-splat test, because ext is now selected there. The
test was incorrectly regbank selected before, which could cause a verifier
failure when you emit copies.

Differential Revision: https://reviews.llvm.org/D81436