1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

[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
llvm-svn: 297136
This commit is contained in:
Jonas Paulsson 2017-03-07 09:49:31 +00:00
parent 9e4b511e37
commit 2490763fc1
2 changed files with 11 additions and 1 deletions

View File

@ -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

View File

@ -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
}