[llvm] r179960 - Fix PR15800. Do not try to vectorize vectors and structs.
Hal Finkel
hfinkel at anl.gov
Sun Apr 21 06:58:06 PDT 2013
----- Original Message -----
> From: "Nadav Rotem" <nrotem at apple.com>
> To: llvm-commits at cs.uiuc.edu
> Sent: Saturday, April 20, 2013 5:29:43 PM
> Subject: [llvm] r179960 - Fix PR15800. Do not try to vectorize vectors and structs.
>
> Author: nadav
> Date: Sat Apr 20 17:29:43 2013
> New Revision: 179960
>
> URL: http://llvm.org/viewvc/llvm-project?rev=179960&view=rev
> Log:
> Fix PR15800. Do not try to vectorize vectors and structs.
Regarding vectorizing vectors, should there be a FIXME?
-Hal
>
>
> Added:
> llvm/trunk/test/Transforms/SLPVectorizer/X86/vector.ll
> Modified:
> llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp
>
> Modified: llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp?rev=179960&r1=179959&r2=179960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp (original)
> +++ llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp Sat Apr 20
> 17:29:43 2013
> @@ -157,7 +157,8 @@ unsigned SLPVectorizer::collectStores(Ba
> continue;
>
> // Check that the pointer points to scalars.
> - if (SI->getValueOperand()->getType()->isAggregateType())
> + Type *Ty = SI->getValueOperand()->getType();
> + if (Ty->isAggregateType() || Ty->isVectorTy())
> return 0;
>
> // Find the base of the GEP.
> @@ -180,6 +181,14 @@ bool SLPVectorizer::tryToVectorizePair(V
>
> bool SLPVectorizer::tryToVectorizeList(ArrayRef<Value *> VL, BoUpSLP
> &R) {
> DEBUG(dbgs()<<"SLP: Vectorizing a list of length = " << VL.size()
> << ".\n");
> +
> + // Check that all of the parts are scalar.
> + for (int i = 0, e = VL.size(); i < e; ++i) {
> + Type *Ty = VL[i]->getType();
> + if (Ty->isAggregateType() || Ty->isVectorTy())
> + return 0;
> + }
> +
> int Cost = R.getTreeCost(VL);
> int ExtrCost = R.getScalarizationCost(VL);
> DEBUG(dbgs()<<"SLP: Cost of pair:" << Cost <<
>
> Added: llvm/trunk/test/Transforms/SLPVectorizer/X86/vector.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SLPVectorizer/X86/vector.ll?rev=179960&view=auto
> ==============================================================================
> --- llvm/trunk/test/Transforms/SLPVectorizer/X86/vector.ll (added)
> +++ llvm/trunk/test/Transforms/SLPVectorizer/X86/vector.ll Sat Apr 20
> 17:29:43 2013
> @@ -0,0 +1,14 @@
> +; RUN: opt < %s -slp-vectorizer -S
> -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7-avx | FileCheck %s
> +
> +target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
> +target triple = "x86_64-apple-macosx10.8.0"
> +
> +; Make sure that we are not crashing or changing the code.
> +;CHECK: test
> +;CHECK: icmp
> +;CHECK: ret
> +define void @test(<4 x i32> %in, <4 x i32> %in2) {
> + %k = icmp eq <4 x i32> %in, %in2
> + ret void
> +}
> +
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list