[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