HomePhabricator

[SelectionDAG] Make WidenVecRes_EXTRACT_SUBVECTOR work for scalable vectors.

Authored by sdesmalen on Sep 29 2021, 3:33 AM.

Description

[SelectionDAG] Make WidenVecRes_EXTRACT_SUBVECTOR work for scalable vectors.

The legalizer handles this by breaking up an EXTRACT_SUBVECTOR into
smaller parts, and combines those together, padding the result with
UNDEF vectors, e.g.

nxv6i64 extract_subvector(nxv12i64, 6)
<->
nxv8i64 concat(
  nxv2i64 extract_subvector(nxv16i64, 6)
  nxv2i64 extract_subvector(nxv16i64, 8)
  nxv2i64 extract_subvector(nxv16i64, 10)
  nxv2i64 undef)

Reviewed By: frasercrmck, david-arm

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