[polly] r217664 - Improve test coverage for non-affine access functions
Tobias Grosser
tobias at grosser.es
Fri Sep 12 02:07:56 PDT 2014
Author: grosser
Date: Fri Sep 12 04:07:56 2014
New Revision: 217664
URL: http://llvm.org/viewvc/llvm-project?rev=217664&view=rev
Log:
Improve test coverage for non-affine access functions
We now verify that such functions are correctly detected even in combination
with delinearization. This change is added to ensure we have good test coverage
for the subsequent delinearization fix.
We also remove unnecessary instructions from the test case.
Added:
polly/trunk/test/ScopInfo/non_affine_access.ll
Removed:
polly/trunk/test/ScopInfo/simple_nonaffine_loop.ll
Added: polly/trunk/test/ScopInfo/non_affine_access.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/non_affine_access.ll?rev=217664&view=auto
==============================================================================
--- polly/trunk/test/ScopInfo/non_affine_access.ll (added)
+++ polly/trunk/test/ScopInfo/non_affine_access.ll Fri Sep 12 04:07:56 2014
@@ -0,0 +1,34 @@
+; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-scops -polly-delinearize -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine -analyze < %s | FileCheck %s -check-prefix=NONAFFINE
+; RUN: opt %loadPolly -polly-scops -polly-delinearize -polly-allow-nonaffine -analyze < %s | FileCheck %s -check-prefix=NONAFFINE
+target datalayout = "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"
+target triple = "x86_64-apple-macosx10.7.2"
+
+; void foo(long *A) {
+; for (i = 0; i < 1024; i++)
+; A[i * i] = i;
+;
+
+define void @foo(i64 *%A) nounwind uwtable ssp {
+entry:
+ br label %entry.split
+
+entry.split: ; preds = %entry
+ br label %for.body
+
+for.body: ; preds = %entry.split, %for.body
+ %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
+ %mul = mul nsw i64 %indvar, %indvar
+ %arrayidx = getelementptr inbounds i64* %A, i64 %mul
+ store i64 %indvar, i64* %arrayidx, align 4
+ %indvar.next = add nsw i64 %indvar, 1
+ %exitcond = icmp ne i64 %indvar.next, 1024
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.end: ; preds = %for.body
+ ret void
+}
+
+; CHECK-NOT: Stmt_for_body
+; NONAFFINE: { Stmt_for_body[i0] -> MemRef_A[o0] };
Removed: polly/trunk/test/ScopInfo/simple_nonaffine_loop.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/simple_nonaffine_loop.ll?rev=217663&view=auto
==============================================================================
--- polly/trunk/test/ScopInfo/simple_nonaffine_loop.ll (original)
+++ polly/trunk/test/ScopInfo/simple_nonaffine_loop.ll (removed)
@@ -1,40 +0,0 @@
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine -analyze < %s | FileCheck %s
-target datalayout = "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"
-target triple = "x86_64-apple-macosx10.7.2"
-
- at .str = private unnamed_addr constant [17 x i8] c"Random Value: %d\00", align 1
-
-define i32 @main() nounwind uwtable ssp {
-entry:
- %A = alloca [1048576 x i32], align 16
- br label %entry.split
-
-entry.split: ; preds = %entry
- br label %for.body
-
-for.body: ; preds = %entry.split, %for.body
- %0 = phi i32 [ 0, %entry.split ], [ %1, %for.body ]
- %mul = mul i32 %0, 2
- %mul1 = mul nsw i32 %0, %0
- %idxprom1 = zext i32 %mul1 to i64
- %arrayidx = getelementptr inbounds [1048576 x i32]* %A, i64 0, i64 %idxprom1
- store i32 %mul, i32* %arrayidx, align 4
- %1 = add nsw i32 %0, 1
- %exitcond = icmp ne i32 %1, 1024
- br i1 %exitcond, label %for.body, label %for.end
-
-for.end: ; preds = %for.body
- %call = call i32 @rand() nounwind
- %rem = srem i32 %call, 1024
- %mul2 = shl nsw i32 %rem, 10
- %idxprom3 = sext i32 %mul2 to i64
- %arrayidx4 = getelementptr inbounds [1048576 x i32]* %A, i64 0, i64 %idxprom3
- %2 = load i32* %arrayidx4, align 16
- %call5 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8]* @.str, i64 0, i64 0), i32 %2) nounwind
- ret i32 0
-}
-
-declare i32 @printf(i8*, ...)
-
-declare i32 @rand()
-; CHECK: { Stmt_for_body[i0] -> MemRef_A[o0] };
More information about the llvm-commits
mailing list