[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