From: Jonas Paulsson Date: Tue, 7 Mar 2017 09:49:31 +0000 (+0000) Subject: [SystemZ] Add check VT.isSimple() in canTreateAsByteVector() X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0a652f13093ce838e1eeb04abe88940257c62e20;p=llvm [SystemZ] Add check VT.isSimple() in canTreateAsByteVector() Since BB-vectorizer can produce vectors of for example 3 elements, this check is needed. Review: Ulrich Weigand git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297136 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/SystemZ/SystemZISelLowering.cpp b/lib/Target/SystemZ/SystemZISelLowering.cpp index afc9e60bdf2..6322098e1c3 100644 --- a/lib/Target/SystemZ/SystemZISelLowering.cpp +++ b/lib/Target/SystemZ/SystemZISelLowering.cpp @@ -4737,7 +4737,7 @@ const char *SystemZTargetLowering::getTargetNodeName(unsigned Opcode) const { // Return true if VT is a vector whose elements are a whole number of bytes // in width. static bool canTreatAsByteVector(EVT VT) { - return VT.isVector() && VT.getScalarSizeInBits() % 8 == 0; + return VT.isVector() && VT.getScalarSizeInBits() % 8 == 0 && VT.isSimple(); } // Try to simplify an EXTRACT_VECTOR_ELT from a vector of type VecVT diff --git a/test/CodeGen/SystemZ/vectorizer-output-3xi32.ll b/test/CodeGen/SystemZ/vectorizer-output-3xi32.ll new file mode 100644 index 00000000000..3e7ba609592 --- /dev/null +++ b/test/CodeGen/SystemZ/vectorizer-output-3xi32.ll @@ -0,0 +1,10 @@ +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 +; +; This tescase origininates from the BB-vectorizer output. + +define void @fun() { + %1 = zext <3 x i1> zeroinitializer to <3 x i32> + %2 = extractelement <3 x i32> %1, i32 2 + store i32 %2, i32* undef, align 8 + unreachable +}