[llvm] r173837 - LoopVectorize: convert TinyTripCountVectorThreshold constant

Hal Finkel hfinkel at anl.gov
Tue Jan 29 13:48:05 PST 2013


----- Original Message -----
> From: "Pekka Jaaskelainen" <pekka.jaaskelainen at tut.fi>
> To: llvm-commits at cs.uiuc.edu
> Sent: Tuesday, January 29, 2013 3:42:08 PM
> Subject: [llvm] r173837 - LoopVectorize: convert TinyTripCountVectorThreshold	constant
> 
> Author: pjaaskel
> Date: Tue Jan 29 15:42:08 2013
> New Revision: 173837
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=173837&view=rev
> Log:
> LoopVectorize: convert TinyTripCountVectorThreshold constant
> to a command line switch.

As a general note: while this is certainly an improvement over the static constant, we should really start moving these parameters into TTI so that they can be customized by the targets. The trick will be to do so without taking away the ability for the user to customize the behavior.

 -Hal

> 
> 
> Added:
>     llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll
> Modified:
>     llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
> 
> Modified: llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=173837&r1=173836&r2=173837&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp (original)
> +++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp Tue Jan 29
> 15:42:08 2013
> @@ -101,7 +101,9 @@ EnableIfConversion("enable-if-conversion
>                     cl::desc("Enable if-conversion during
>                     vectorization."));
>  
>  /// We don't vectorize loops with a known constant trip count below
>  this number.
> -static const unsigned TinyTripCountVectorThreshold = 16;
> +static cl::opt<unsigned>
> +TinyTripCountVectorThreshold("vectorizer-min-trip-count",
> cl::init(16), cl::Hidden,
> +                             cl::desc("The minimum trip count in the
> loops to vectorize."));
>  
>  /// We don't unroll loops with a known constant trip count below
>  this number.
>  static const unsigned TinyTripCountUnrollThreshold = 128;
> 
> Added:
> llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll?rev=173837&view=auto
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll
> (added)
> +++ llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll
> Tue Jan 29 15:42:08 2013
> @@ -0,0 +1,28 @@
> +; RUN: opt < %s  -loop-vectorize -force-vector-unroll=1
> -vectorizer-min-trip-count=1 -force-vector-width=4 -dce -instcombine
> -S | 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-unknown-linux-gnu"
> +
> +; CHECK: <4 x float>
> +define void @trivial_loop(float* nocapture %a) nounwind uwtable
> optsize {
> +entry:
> +  br label %for.body
> +
> +for.body:                                         ; preds =
> %for.body, %entry
> +  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body
> ]
> +  %arrayidx = getelementptr inbounds float* %a, i64 %indvars.iv
> +  %0 = load float* %arrayidx, align 4, !tbaa !0
> +  %add = fadd float %0, 1.000000e+00
> +  store float %add, float* %arrayidx, align 4, !tbaa !0
> +  %indvars.iv.next = add i64 %indvars.iv, 1
> +  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
> +  %exitcond = icmp eq i32 %lftr.wideiv, 8
> +  br i1 %exitcond, label %for.end, label %for.body
> +
> +for.end:                                          ; preds =
> %for.body
> +  ret void
> +}
> +
> +!0 = metadata !{metadata !"float", metadata !1}
> +!1 = metadata !{metadata !"omnipotent char", metadata !2}
> +!2 = metadata !{metadata !"Simple C/C++ TBAA"}
> 
> 
> _______________________________________________
> 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