[polly] r298507 - Map the new load to the base pointer of the invariant load hoisted load

Roman Gareev via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 22 06:57:53 PDT 2017


Author: romangareev
Date: Wed Mar 22 08:57:53 2017
New Revision: 298507

URL: http://llvm.org/viewvc/llvm-project?rev=298507&view=rev
Log:
Map the new load to the base pointer of the invariant load hoisted load

Map the new load to the base pointer of the invariant load hoisted load
to be able to find the alias information for it.

Reviewed-by: Tobias Grosser <tobias at grosser.es>

Differential Revision: https://reviews.llvm.org/D30605

Added:
    polly/trunk/test/Isl/CodeGen/invariant_load_alias_metadata.ll
Modified:
    polly/trunk/lib/CodeGen/IslNodeBuilder.cpp

Modified: polly/trunk/lib/CodeGen/IslNodeBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/IslNodeBuilder.cpp?rev=298507&r1=298506&r2=298507&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/IslNodeBuilder.cpp (original)
+++ polly/trunk/lib/CodeGen/IslNodeBuilder.cpp Wed Mar 22 08:57:53 2017
@@ -1211,6 +1211,9 @@ bool IslNodeBuilder::preloadInvariantEqu
   auto *Alloca = new AllocaInst(AccInstTy, AccInst->getName() + ".preload.s2a");
   Alloca->insertBefore(&*EntryBB->getFirstInsertionPt());
   Builder.CreateStore(PreloadVal, Alloca);
+  ValueMapT PreloadedPointer;
+  PreloadedPointer[PreloadVal] = AccInst;
+  Annotator.addAlternativeAliasBases(PreloadedPointer);
 
   for (auto *DerivedSAI : SAI->getDerivedSAIs()) {
     Value *BasePtr = DerivedSAI->getBasePtr();

Added: polly/trunk/test/Isl/CodeGen/invariant_load_alias_metadata.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_alias_metadata.ll?rev=298507&view=auto
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_alias_metadata.ll (added)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_alias_metadata.ll Wed Mar 22 08:57:53 2017
@@ -0,0 +1,32 @@
+; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true \
+; RUN: -S < %s | FileCheck %s
+;
+; This test case checks whether Polly generates alias metadata in case of
+; the ublas gemm kernel and polly-invariant-load-hoisting.
+;
+; CHECK: store float 4.200000e+01, float* %polly.access.A.load, !alias.scope !3, !noalias !4
+;
+; CHECK: !0 = distinct !{!0, !1, !"polly.alias.scope.MemRef_A"}
+; CHECK-NEXT: !1 = distinct !{!1, !"polly.alias.scope.domain"}
+; CHECK-NEXT: !2 = !{!3}
+; CHECK-NEXT: !3 = distinct !{!3, !1, !"polly.alias.scope.MemRef_ptrA"}
+; CHECK-NEXT: !4 = !{!0}
+;
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @nometadata(float** %A) {
+  entry:
+    br label %for
+
+  for:
+    %indvar = phi i64 [0, %entry], [%indvar.next, %for]
+    %indvar.next = add i64 %indvar, 1
+    %ptrA = load float*, float** %A
+    store float 42.0, float* %ptrA
+    %icmp = icmp sle i64 %indvar, 1024
+    br i1 %icmp, label %for, label %exit
+
+  exit:
+    ret void
+}




More information about the llvm-commits mailing list