[PATCH] D56281: [DAGCombiner] reduce buildvec of zexted extracted element to shuffle
Sjoerd Meijer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 21 08:04:53 PST 2019
SjoerdMeijer added a comment.
Hello. I am investigating a crash and this assertion failure on AArch64:
lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1548: llvm::SDValue llvm::SelectionDAG::getVectorShuffle(llvm::EVT, const llvm::SDLoc&, llvm::SDValue, llvm::SDValue, llvm::ArrayRef<int>): Assertion `VT.getVectorNumElements() == Mask.size() && "Must have the same number of vector elements as mask elements!"' failed.
Bisecting is blaming this commit. I've only just started debugging this (and it is hitting this new function), but just wanted to share this in case you have some ideas and thoughts on this. This is my reproducer:
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"
@a = common dso_local local_unnamed_addr global <4 x i16> zeroinitializer, align 8
@b = common dso_local local_unnamed_addr global i32 0, align 4
; Function Attrs: nounwind
define dso_local i32 @vqmovns_s32() local_unnamed_addr {
entry:
%0 = load <4 x i16>, <4 x i16>* @a, align 8
%1 = extractelement <4 x i16> %0, i32 2
%vgetq_lane = zext i16 %1 to i32
%2 = insertelement <4 x i32> undef, i32 %vgetq_lane, i64 0
%vqmovns_s32 = tail call <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32> %2)
%3 = extractelement <4 x i16> %vqmovns_s32, i64 0
%conv = sext i16 %3 to i32
store i32 %conv, i32* @b, align 4
ret i32 undef
}
; Function Attrs: nounwind readnone
declare <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32>)
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56281/new/
https://reviews.llvm.org/D56281
More information about the llvm-commits
mailing list