Hi Tyler,

0001-Rename-Vectorizer-to-Vectorize-and-VectorizeUnroll-t.patch:

  This makes sense; it makes the variable names match the name of the metadata 
they control. LGTM.

0002-Moved-functionality-from-EmitCondBr-to-CGLoopInfo.patch:

+      ValueInt = static_cast<unsigned>(ValueAPS.getSExtValue());

Do Clang or GCC warn here without the static cast? If not, remove it.

+      case LoopHintAttr::UnrollCount:
+      case LoopHintAttr::VectorizeWidth:
+      case LoopHintAttr::InterleaveCount:
+        break;

The fact that there is no code here for either LoopHintAttr::Disable or case 
LoopHintAttr::Enable seems counter-intuitive. If this is right, please add a 
comment explaining why.

--- a/test/CodeGenCXX/pragma-loop.cpp
+++ b/test/CodeGenCXX/pragma-loop.cpp
@@ -10,7 +10,7 @@ void while_test(int *List, int Length) {
 #pragma clang loop vectorize_width(4)
 #pragma clang loop unroll(full)
   while (i < Length) {
-    // CHECK: br i1 {{.*}}, label {{.*}}, label {{.*}}, !llvm.loop 
![[LOOP_1:.*]]
+    // CHECK: br label {{.*}}, !llvm.loop ![[LOOP_1:.*]]
     List[i] = i * 2;
     i++;
   }

Why are these things changing? Are we now attaching the metadata to a different 
branch?

 -Hal

----- Original Message -----
> From: "Tyler Nowicki" <tnowi...@apple.com>
> To: "Hal J. Finkel" <hfin...@anl.gov>
> Cc: "llvm cfe" <cfe-commits@cs.uiuc.edu>, "Gerolf Hoflehner" 
> <ghofleh...@apple.com>
> Sent: Wednesday, June 24, 2015 6:25:22 PM
> Subject: Re: [Patch][LoopInfo] Use CGLoopInfo to generate loop hints
> 
> 
> 
> Hi Hal,
> 
> Here are the split patches.
> 
> Thanks,
> 
> Tyler
> 
> 
> 
> > On Jun 22, 2015, at 5:40 PM, Hal Finkel <hfin...@anl.gov> wrote:
> > 
> > Hi Tyler,
> > 
> > - Type::getInt32Ty(Ctx), Attrs.VectorizerWidth))};
> > + Type::getInt32Ty(Ctx), Attrs.VectorizeWidth))};
> > 
> > Could you please factor out the renamings from the functional
> > change?
> >>> 
> >>> Hello,
> >>> 
> >>> I noticed a problem with my implementation of #pragma clang loop
> >>> vectorize(assume_safety). When it was specified on a loop other
> >>> loop hints were lost. The problem is that CGLoopInfo attaches
> >>> metadata a little bit differently than EmitCondBrHints in CGStmt.
> >>> For do-loops CGLoopInfo attaches metadata to the br in the body
> >>> block and for while and for loops, the inc block. EmitCondBrHints
> >>> on the other hand always attaches data to the br in the cond
> >>> block. When specifying assume_safety CGLoopInfo emits an empty
> >>> llvm.loop metadata shadowing the metadata in the cond block. Loop
> >>> transformations like rotate and unswitch would then eliminate the
> >>> cond block.
> >>> 
> >>> This patch unifies both approaches for adding metadata and
> >>> modifies
> >>> the existing safety tests to include non-assume_safety loop
> >>> hints.
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to