[AArch64][DAGCombine] Fix a bug in performBuildVectorCombine where it could produce...
authorUsman Nadeem <mnadeem@quicinc.com>
Wed, 24 Aug 2022 23:23:19 +0000 (16:23 -0700)
committerUsman Nadeem <mnadeem@quicinc.com>
Wed, 24 Aug 2022 23:24:19 +0000 (16:24 -0700)
commit46768052e0c9e21a7fcaa2881e29e6b4237b200f
treed48bc9c5ef98bb6b918bb465a7126df1a8df7547
parent5ce4c9aa0405bb28dbe374aa741044025d63f05c
[AArch64][DAGCombine] Fix a bug in performBuildVectorCombine where it could produce an invalid EXTRACT_SUBVECTOR

EXTRACT_SUBVECTOR requires that Idx be a constant multiple of ResultType's
known minimum vector length.

Something like this will produce an invalid extract_subvector:

t1: v4i16 = .....
t2: i32 = extract_vector_elt t1, Constant:i64<1>
t3: i32 = extract_vector_elt t1, Constant:i64<2>
t4: v2i32 = BUILD_VECTOR t2, t3
// produces
t5: v2i32 = extract_subvector t...., Constant:i64<1>

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

Change-Id: I7a5acf054edee3e89c0f85a28d8869256403ce08
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/aarch64-vectorcombine-invalid-extract-index-crash.ll [new file with mode: 0644]