<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Oopsy daisy! Sorry, and thanks for the revert. I will look into this.</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Hans Wennborg <hans@chromium.org><br>
<b>Sent:</b> 18 September 2019 14:41<br>
<b>To:</b> Sjoerd Meijer <Sjoerd.Meijer@arm.com><br>
<b>Cc:</b> cfe-commits <cfe-commits@lists.llvm.org><br>
<b>Subject:</b> Re: r372082 - [Clang] Pragma vectorize_width() implies vectorize(enable)</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">I've reverted this in r372225 as it broke the Chromium build. It seems<br>
it doesn't actually manage to enable vectorization of a simple loop at<br>
-Oz, and at -Os it asserts. See details in my commit message.<br>
<br>
On Tue, Sep 17, 2019 at 10:41 AM Sjoerd Meijer via cfe-commits<br>
<cfe-commits@lists.llvm.org> wrote:<br>
><br>
> Author: sjoerdmeijer<br>
> Date: Tue Sep 17 01:43:11 2019<br>
> New Revision: 372082<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=372082&view=rev">http://llvm.org/viewvc/llvm-project?rev=372082&view=rev</a><br>
> Log:<br>
> [Clang] Pragma vectorize_width() implies vectorize(enable)<br>
><br>
> Specifying the vectorization width was supposed to implicitly enable<br>
> vectorization, except that it wasn't really doing this. It was only<br>
> setting the vectorize.width metadata, but not vectorize.enable.<br>
><br>
> This should fix PR27643.<br>
><br>
> Differential Revision: <a href="https://reviews.llvm.org/D66290">https://reviews.llvm.org/D66290</a><br>
><br>
> Modified:<br>
>     cfe/trunk/lib/CodeGen/CGLoopInfo.cpp<br>
>     cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp<br>
>     cfe/trunk/test/CodeGenCXX/pragma-loop.cpp<br>
><br>
> Modified: cfe/trunk/lib/CodeGen/CGLoopInfo.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGLoopInfo.cpp?rev=372082&r1=372081&r2=372082&view=diff">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGLoopInfo.cpp?rev=372082&r1=372081&r2=372082&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/CodeGen/CGLoopInfo.cpp (original)<br>
> +++ cfe/trunk/lib/CodeGen/CGLoopInfo.cpp Tue Sep 17 01:43:11 2019<br>
> @@ -270,6 +270,14 @@ LoopInfo::createLoopVectorizeMetadata(co<br>
><br>
>    // Setting vectorize.width<br>
>    if (Attrs.VectorizeWidth > 0) {<br>
> +    // This implies vectorize.enable = true, but only add it when it is not<br>
> +    // already enabled.<br>
> +    if (Attrs.VectorizeEnable != LoopAttributes::Enable)<br>
> +      Args.push_back(<br>
> +          MDNode::get(Ctx, {MDString::get(Ctx, "llvm.loop.vectorize.enable"),<br>
> +                            ConstantAsMetadata::get(ConstantInt::get(<br>
> +                                llvm::Type::getInt1Ty(Ctx), 1))}));<br>
> +<br>
>      Metadata *Vals[] = {<br>
>          MDString::get(Ctx, "llvm.loop.vectorize.width"),<br>
>          ConstantAsMetadata::get(ConstantInt::get(llvm::Type::getInt32Ty(Ctx),<br>
><br>
> Modified: cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp?rev=372082&r1=372081&r2=372082&view=diff">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp?rev=372082&r1=372081&r2=372082&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp (original)<br>
> +++ cfe/trunk/test/CodeGenCXX/pragma-loop-predicate.cpp Tue Sep 17 01:43:11 2019<br>
> @@ -58,7 +58,6 @@ void test5(int *List, int Length) {<br>
>      List[i] = i * 2;<br>
>  }<br>
><br>
> -<br>
>  // CHECK:      ![[LOOP0]] = distinct !{![[LOOP0]], !3}<br>
>  // CHECK-NEXT: !3 = !{!"llvm.loop.vectorize.enable", i1 true}<br>
><br>
> @@ -70,7 +69,7 @@ void test5(int *List, int Length) {<br>
><br>
>  // CHECK-NEXT: ![[LOOP3]] = distinct !{![[LOOP3]], !5, !3}<br>
><br>
> -// CHECK-NEXT: ![[LOOP4]] = distinct !{![[LOOP4]], !10}<br>
> +// CHECK-NEXT: ![[LOOP4]] = distinct !{![[LOOP4]], !3, !10}<br>
>  // CHECK-NEXT: !10 = !{!"llvm.loop.vectorize.width", i32 1}<br>
><br>
> -// CHECK-NEXT: ![[LOOP5]] = distinct !{![[LOOP5]], !10}<br>
> +// CHECK-NEXT: ![[LOOP5]] = distinct !{![[LOOP5]], !3, !10}<br>
><br>
> Modified: cfe/trunk/test/CodeGenCXX/pragma-loop.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pragma-loop.cpp?rev=372082&r1=372081&r2=372082&view=diff">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pragma-loop.cpp?rev=372082&r1=372081&r2=372082&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/test/CodeGenCXX/pragma-loop.cpp (original)<br>
> +++ cfe/trunk/test/CodeGenCXX/pragma-loop.cpp Tue Sep 17 01:43:11 2019<br>
> @@ -158,23 +158,41 @@ void template_test(double *List, int Len<br>
>    for_template_constant_expression_test<double, 2, 4, 8>(List, Length);<br>
>  }<br>
><br>
> +void vec_width_1(int *List, int Length) {<br>
> +// CHECK-LABEL: @{{.*}}vec_width_1{{.*}}(<br>
> +// CHECK: br label {{.*}}, !llvm.loop ![[LOOP_15:.*]]<br>
> +<br>
> +  #pragma clang loop vectorize(enable) vectorize_width(1)<br>
> +  for (int i = 0; i < Length; i++)<br>
> +    List[i] = i * 2;<br>
> +}<br>
> +<br>
> +void width_1(int *List, int Length) {<br>
> +// CHECK-LABEL: @{{.*}}width_1{{.*}}(<br>
> +// CHECK: br label {{.*}}, !llvm.loop ![[LOOP_16:.*]]<br>
> +<br>
> +  #pragma clang loop vectorize_width(1)<br>
> +  for (int i = 0; i < Length; i++)<br>
> +    List[i] = i * 2;<br>
> +}<br>
> +<br>
>  // CHECK: ![[LOOP_1]] = distinct !{![[LOOP_1]], ![[UNROLL_FULL:.*]]}<br>
>  // CHECK: ![[UNROLL_FULL]] = !{!"llvm.loop.unroll.full"}<br>
><br>
> -// CHECK: ![[LOOP_2]] = distinct !{![[LOOP_2]], ![[UNROLL_DISABLE:.*]], ![[DISTRIBUTE_DISABLE:.*]], ![[WIDTH_8:.*]], ![[INTERLEAVE_4:.*]]}<br>
> +// CHECK: ![[LOOP_2]] = distinct !{![[LOOP_2]], ![[UNROLL_DISABLE:.*]], ![[DISTRIBUTE_DISABLE:.*]], ![[VECTORIZE_ENABLE:.*]], ![[WIDTH_8:.*]], ![[INTERLEAVE_4:.*]]}<br>
>  // CHECK: ![[UNROLL_DISABLE]] = !{!"llvm.loop.unroll.disable"}<br>
>  // CHECK: ![[DISTRIBUTE_DISABLE]] = !{!"llvm.loop.distribute.enable", i1 false}<br>
> +// CHECK: ![[VECTORIZE_ENABLE]] = !{!"llvm.loop.vectorize.enable", i1 true}<br>
>  // CHECK: ![[WIDTH_8]] = !{!"llvm.loop.vectorize.width", i32 8}<br>
>  // CHECK: ![[INTERLEAVE_4]] = !{!"llvm.loop.interleave.count", i32 4}<br>
><br>
> -// CHECK: ![[LOOP_3]] = distinct !{![[LOOP_3]], ![[INTERLEAVE_4:.*]], ![[INTENABLE_1:.*]], ![[FOLLOWUP_VECTOR_3:.*]]}<br>
> -// CHECK: ![[INTENABLE_1]] = !{!"llvm.loop.vectorize.enable", i1 true}<br>
> +// CHECK: ![[LOOP_3]] = distinct !{![[LOOP_3]], ![[INTERLEAVE_4:.*]], ![[VECTORIZE_ENABLE]], ![[FOLLOWUP_VECTOR_3:.*]]}<br>
>  // CHECK: ![[FOLLOWUP_VECTOR_3]] = !{!"llvm.loop.vectorize.followup_all", ![[AFTER_VECTOR_3:.*]]}<br>
>  // CHECK: ![[AFTER_VECTOR_3]] = distinct !{![[AFTER_VECTOR_3]], ![[ISVECTORIZED:.*]], ![[UNROLL_8:.*]]}<br>
>  // CHECK: ![[ISVECTORIZED]] = !{!"llvm.loop.isvectorized"}<br>
>  // CHECK: ![[UNROLL_8]] = !{!"llvm.loop.unroll.count", i32 8}<br>
><br>
> -// CHECK: ![[LOOP_4]] = distinct !{![[LOOP_4]], ![[WIDTH_2:.*]], ![[INTERLEAVE_2:.*]]}<br>
> +// CHECK: ![[LOOP_4]] = distinct !{![[LOOP_4]], ![[VECTORIZE_ENABLE]], ![[WIDTH_2:.*]], ![[INTERLEAVE_2:.*]]}<br>
>  // CHECK: ![[WIDTH_2]] = !{!"llvm.loop.vectorize.width", i32 2}<br>
>  // CHECK: ![[INTERLEAVE_2]] = !{!"llvm.loop.interleave.count", i32 2}<br>
><br>
> @@ -185,7 +203,7 @@ void template_test(double *List, int Len<br>
>  // CHECK: ![[FOLLOWUP_VECTOR_6]] = !{!"llvm.loop.vectorize.followup_all", ![[AFTER_VECTOR_6:.*]]}<br>
>  // CHECK: ![[AFTER_VECTOR_6]] = distinct !{![[AFTER_VECTOR_6]], ![[ISVECTORIZED:.*]], ![[UNROLL_8:.*]]}<br>
><br>
> -// CHECK: ![[LOOP_7]] = distinct !{![[LOOP_7]], ![[WIDTH_5:.*]]}<br>
> +// CHECK: ![[LOOP_7]] = distinct !{![[LOOP_7]], ![[VECTORIZE_ENABLE]], ![[WIDTH_5:.*]]}<br>
>  // CHECK: ![[WIDTH_5]] = !{!"llvm.loop.vectorize.width", i32 5}<br>
><br>
>  // CHECK: ![[LOOP_8]] = distinct !{![[LOOP_8]], ![[WIDTH_5:.*]]}<br>
> @@ -213,5 +231,9 @@ void template_test(double *List, int Len<br>
>  // CHECK: ![[AFTER_VECTOR_13]] = distinct !{![[AFTER_VECTOR_13]], ![[ISVECTORIZED:.*]], ![[UNROLL_32:.*]]}<br>
>  // CHECK: ![[UNROLL_32]] = !{!"llvm.loop.unroll.count", i32 32}<br>
><br>
> -// CHECK: ![[LOOP_14]] = distinct !{![[LOOP_14]], ![[WIDTH_10:.*]]}<br>
> +// CHECK: ![[LOOP_14]] = distinct !{![[LOOP_14]], ![[VECTORIZE_ENABLE]], ![[WIDTH_10:.*]]}<br>
>  // CHECK: ![[WIDTH_10]] = !{!"llvm.loop.vectorize.width", i32 10}<br>
> +<br>
> +// CHECK:      ![[LOOP_15]] = distinct !{![[LOOP_15]], ![[WIDTH_1]], ![[VECTORIZE_ENABLE]]}<br>
> +<br>
> +// CHECK-NEXT: ![[LOOP_16]] = distinct !{![[LOOP_16]], ![[VECTORIZE_ENABLE]], ![[WIDTH_1]]}<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> cfe-commits@lists.llvm.org<br>
> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</div>
</span></font></div>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose,
 or store or copy the information in any medium. Thank you.
</body>
</html>