[AArch64][DAGCombine] Add performBuildVectorCombine 'extract_elt ~> anyext'
authorDavid Sherwood <david.sherwood@arm.com>
Fri, 29 Jul 2022 08:32:08 +0000 (09:32 +0100)
committerDavid Sherwood <david.sherwood@arm.com>
Fri, 29 Jul 2022 08:51:09 +0000 (09:51 +0100)
commit487fa6f8c3af87232f7ff9484568be7782f7f8b2
tree05e8690af92a1f41538d27741def4d9678f50e44
parent210769f773ea0b9ba5111f47856ebda9d904488b
[AArch64][DAGCombine] Add performBuildVectorCombine 'extract_elt ~> anyext'

A build vector of two extracted elements is equivalent to an extract
subvector where the inner vector is any-extended to the
extract_vector_elt VT, because extract_vector_elt has the effect of an
any-extend.

  (build_vector (extract_elt_i16_to_i32 vec Idx+0) (extract_elt_i16_to_i32 vec Idx+1))
  => (extract_subvector (anyext_i16_to_i32 vec) Idx)

Depends on D130697

Differential Revision: https://reviews.llvm.org/D130698
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/bitcast-promote-widen.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-extract-subvector.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-masked-gather.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-masked-loads.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-masked-scatter.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-masked-stores.ll
llvm/test/CodeGen/AArch64/vector-fcvt.ll