<div dir="ltr">Hi Pekka,<div><br></div><div style>This test doesn't run well on targets that don't compile the X86 back-end (ie. ARM). Can you make that test target specific, please?</div><div style><br></div><div style>
--renato</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 29 January 2013 21:48, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">----- Original Message -----<br>
> From: "Pekka Jaaskelainen" <<a href="mailto:pekka.jaaskelainen@tut.fi">pekka.jaaskelainen@tut.fi</a>><br>
> To: <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> Sent: Tuesday, January 29, 2013 3:42:08 PM<br>
> Subject: [llvm] r173837 - LoopVectorize: convert TinyTripCountVectorThreshold constant<br>
><br>
> Author: pjaaskel<br>
> Date: Tue Jan 29 15:42:08 2013<br>
> New Revision: 173837<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=173837&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=173837&view=rev</a><br>
> Log:<br>
> LoopVectorize: convert TinyTripCountVectorThreshold constant<br>
> to a command line switch.<br>
<br>
</div>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.<br>

<span class="HOEnZb"><font color="#888888"><br>
 -Hal<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
><br>
> Added:<br>
>     llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll<br>
> Modified:<br>
>     llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=173837&r1=173836&r2=173837&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=173837&r1=173836&r2=173837&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp Tue Jan 29<br>
> 15:42:08 2013<br>
> @@ -101,7 +101,9 @@ EnableIfConversion("enable-if-conversion<br>
>                     cl::desc("Enable if-conversion during<br>
>                     vectorization."));<br>
><br>
>  /// We don't vectorize loops with a known constant trip count below<br>
>  this number.<br>
> -static const unsigned TinyTripCountVectorThreshold = 16;<br>
> +static cl::opt<unsigned><br>
> +TinyTripCountVectorThreshold("vectorizer-min-trip-count",<br>
> cl::init(16), cl::Hidden,<br>
> +                             cl::desc("The minimum trip count in the<br>
> loops to vectorize."));<br>
><br>
>  /// We don't unroll loops with a known constant trip count below<br>
>  this number.<br>
>  static const unsigned TinyTripCountUnrollThreshold = 128;<br>
><br>
> Added:<br>
> llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll?rev=173837&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll?rev=173837&view=auto</a><br>

> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll<br>
> (added)<br>
> +++ llvm/trunk/test/Transforms/LoopVectorize/min-trip-count-switch.ll<br>
> Tue Jan 29 15:42:08 2013<br>
> @@ -0,0 +1,28 @@<br>
> +; RUN: opt < %s  -loop-vectorize -force-vector-unroll=1<br>
> -vectorizer-min-trip-count=1 -force-vector-width=4 -dce -instcombine<br>
> -S | FileCheck %s<br>
> +<br>
> +target datalayout =<br>
> "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"<br>
> +target triple = "x86_64-unknown-linux-gnu"<br>
> +<br>
> +; CHECK: <4 x float><br>
> +define void @trivial_loop(float* nocapture %a) nounwind uwtable<br>
> optsize {<br>
> +entry:<br>
> +  br label %for.body<br>
> +<br>
> +for.body:                                         ; preds =<br>
> %for.body, %entry<br>
> +  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body<br>
> ]<br>
> +  %arrayidx = getelementptr inbounds float* %a, i64 %indvars.iv<br>
> +  %0 = load float* %arrayidx, align 4, !tbaa !0<br>
> +  %add = fadd float %0, 1.000000e+00<br>
> +  store float %add, float* %arrayidx, align 4, !tbaa !0<br>
> +  %indvars.iv.next = add i64 %indvars.iv, 1<br>
> +  %lftr.wideiv = trunc i64 %indvars.iv.next to i32<br>
> +  %exitcond = icmp eq i32 %lftr.wideiv, 8<br>
> +  br i1 %exitcond, label %for.end, label %for.body<br>
> +<br>
> +for.end:                                          ; preds =<br>
> %for.body<br>
> +  ret void<br>
> +}<br>
> +<br>
> +!0 = metadata !{metadata !"float", metadata !1}<br>
> +!1 = metadata !{metadata !"omnipotent char", metadata !2}<br>
> +!2 = metadata !{metadata !"Simple C/C++ TBAA"}<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>