Modify test cases to work with SCEV based code generation

This patch includes tests where we actually need to adjust the CHECK lines
for SCEV based code generation. Besides these adjustments we add explicit
calls to -polly-codegen-scev=[true|false] and make sure we test both cases.

llvm-svn: 222112
This commit is contained in:
Tobias Grosser 2014-11-16 22:43:21 +00:00
parent 95cd1c718e
commit bab3568105
10 changed files with 45 additions and 28 deletions

View File

@ -1,5 +1,5 @@
; RUN: opt %loadPolly -basicaa -polly-cloog -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-codegen -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
; RUN: opt %loadPolly -basicaa -polly-codegen -polly-codegen-scev=false -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
;#include <string.h>
;#define N 1024

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -tbaa -polly-codegen -polly-vectorizer=polly -S < %s | FileCheck %s
; RUN: opt %loadPolly -tbaa -polly-codegen -polly-vectorizer=polly -polly-codegen-scev=false -S < %s | FileCheck %s
target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
target triple = "i386-apple-macosx10.8.0"

View File

@ -1,4 +1,5 @@
; RUN: opt %loadPolly -polly-codegen-isl -polly-ast-detect-parallel -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen-isl -polly-ast-detect-parallel -polly-codegen-scev=false -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen-isl -polly-ast-detect-parallel -polly-codegen-scev=true -S < %s | FileCheck %s
;
; Check that we mark multiple parallel loops correctly including the memory instructions.
;
@ -8,7 +9,7 @@
; CHECK-DAG: %polly.loop_cond[[CInner:[0-9]*]] = icmp sle i64 %polly.indvar{{[0-9]*}}, 510
; CHECK-DAG: br i1 %polly.loop_cond[[CInner]], label %polly.loop_header{{[0-9]*}}, label %polly.loop_exit{{[0-9]*}}, !llvm.loop ![[IDInner:[0-9]*]]
;
; CHECK-DAG: store i32 %p_tmp{{[0-9]*}}, i32* %p_arrayidx{{[0-9]*}}, {{[ ._!,a-zA-Z0-9]*}}, !llvm.mem.parallel_loop_access !4
; CHECK-DAG: store i32 %{{[a-z_0-9]*}}, i32* %{{[a-z_0-9]*}}, {{[ ._!,a-zA-Z0-9]*}}, !llvm.mem.parallel_loop_access !4
;
; CHECK-DAG: ![[IDOuter]] = metadata !{metadata ![[IDOuter]]}
; CHECK-DAG: ![[IDInner]] = metadata !{metadata ![[IDInner]]}

View File

@ -1,9 +1,9 @@
; RUN: opt %loadPolly -S -polly-code-generator=isl -polly-codegen-isl < %s | FileCheck %s
; RUN: opt %loadPolly -S -polly-code-generator=isl -polly-codegen-isl -polly-codegen-scev=false < %s | FileCheck %s
; RUN: opt %loadPolly -S -polly-code-generator=isl -polly-codegen-isl -polly-codegen-scev=true < %s | FileCheck %s
;
; We have to cast %B to "short *" before we create RTCs.
;
; CHECK: entry:
; CHECK-NEXT: %polly.access.cast.B = bitcast i32* %B to i16*
; CHECK: %polly.access.cast.B = bitcast i32* %B to i16*
; CHECK-NEXT: %polly.access.B = getelementptr i16* %polly.access.cast.B, i64 1024
;
; We should never access %B as an i32 pointer:

View File

@ -1,13 +1,16 @@
; RUN: opt %loadPolly -polly-code-generator=isl -polly-codegen-isl -S < %s | FileCheck %s --check-prefix=SCOPES
; RUN: opt %loadPolly -polly-code-generator=isl -polly-codegen-isl -polly-annotate-alias-scopes=false -S < %s | FileCheck %s --check-prefix=NOSCOPES
; RUN: opt %loadPolly -polly-code-generator=isl -polly-codegen-isl -polly-codegen-scev=false -S < %s | FileCheck %s --check-prefix=SCOPES
; RUN: opt %loadPolly -polly-code-generator=isl -polly-codegen-isl -polly-codegen-scev=true -S < %s | FileCheck %s --check-prefix=SCOPES
; RUN: opt %loadPolly -polly-code-generator=isl -polly-codegen-isl -polly-codegen-scev=false -polly-annotate-alias-scopes=false -S < %s | FileCheck %s --check-prefix=NOSCOPES
; RUN: opt %loadPolly -polly-code-generator=isl -polly-codegen-isl -polly-codegen-scev=true -polly-annotate-alias-scopes=false -S < %s | FileCheck %s --check-prefix=NOSCOPES
;
; Check that we create alias scopes that indicate the accesses to A, B and C cannot alias in any way.
;
; SCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr inbounds i32* %B, i64 %polly.indvar
; SCOPES-LABEL: polly.stmt.for.body:
; SCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %B, i64 %polly.indvar
; SCOPES: load i32* %[[BIdx]], align 4, !alias.scope ![[AliasScopeB:[0-9]*]], !noalias ![[NoAliasB:[0-9]*]]
; SCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr inbounds float* %C, i64 %polly.indvar
; SCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} float* %C, i64 %polly.indvar
; SCOPES: load float* %[[CIdx]], align 4, !alias.scope ![[AliasScopeC:[0-9]*]], !noalias ![[NoAliasC:[0-9]*]]
; SCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr inbounds i32* %A, i64 %polly.indvar
; SCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %A, i64 %polly.indvar
; SCOPES: store i32 %{{[._a-zA-Z0-9]*}}, i32* %[[AIdx]], align 4, !alias.scope ![[AliasScopeA:[0-9]*]], !noalias ![[NoAliasA:[0-9]*]]
;
; SCOPES: ![[AliasScopeB]] = metadata !{metadata ![[AliasScopeB]], metadata !{{[0-9]*}}, metadata !"polly.alias.scope.B"}
@ -26,15 +29,15 @@
; SCOPES-DAG: metadata ![[AliasScopeC]]
; SCOPES: }
;
; NOSCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr inbounds i32* %B, i64 %polly.indvar
; NOSCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %B, i64 %polly.indvar
; NOSCOPES: load i32* %[[BIdx]]
; NOSCOPES-NOT: alias.scope
; NOSCOPES-NOT: noalias
; NOSCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr inbounds float* %C, i64 %polly.indvar
; NOSCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} float* %C, i64 %polly.indvar
; NOSCOPES: load float* %[[CIdx]]
; NOSCOPES-NOT: alias.scope
; NOSCOPES-NOT: noalias
; NOSCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr inbounds i32* %A, i64 %polly.indvar
; NOSCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %A, i64 %polly.indvar
; NOSCOPES: store i32 %{{[._a-zA-Z0-9]*}}, i32* %[[AIdx]]
; NOSCOPES-NOT: alias.scope
; NOSCOPES-NOT: noalias

View File

@ -1,5 +1,6 @@
; RUN: opt %loadPolly -basicaa -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -polly-codegen-scev=false -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -polly-codegen-scev=true -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
;#include <string.h>
@ -215,4 +216,4 @@ declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
; LOOPS: Printing analysis 'Natural Loop Information' for function 'loop_with_condition':
; LOOPS: Loop at depth 1 containing: %1<header><exiting>,%2,%4,%7,%6,%8,%9,%10<latch>
; LOOPS: Loop at depth 1 containing:
; LOOPS: %polly.loop_header<header>,%polly.cond,%polly.merge,%polly.then,%polly.else,%polly.stmt.,%polly.cond3,%polly.merge4,%polly.then5,%polly.else6,%polly.stmt.7,%polly.stmt.8<latch><exiting>
; LOOPS: %polly.loop_header<header>,%polly.cond,%polly.merge,%polly.then,%polly.else,%polly.stmt.,%polly.cond3,%polly.merge4,%polly.then5,%polly.else6,%polly.stmt.7,%polly.stmt{{.*}}<latch><exiting>

View File

@ -1,4 +1,5 @@
; RUN: opt %loadPolly -basicaa -polly-codegen-isl %vector-opt -dce -S < %s | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -polly-codegen-scev=false %vector-opt -dce -S < %s | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -polly-codegen-scev=true %vector-opt -dce -S < %s | FileCheck %s -check-prefix=CHECK-SCEV
;#define N 1024
;float A[N];
@ -63,3 +64,6 @@ bb:
; CHECK: %vector_ptr7 = bitcast float* %p_scevgep.moved.to.bb3 to <4 x float>*
; CHECK: store <4 x float> %tmp4p_vec, <4 x float>* %vector_ptr7, align 8
; CHECK-SCEV: %tmp_p_vec_full = load <4 x float>* bitcast ([1024 x float]* @A to <4 x float>*), align 8, !alias.scope !0, !noalias !2
; CHECK-SCEV: %tmp4p_vec = fadd <4 x float> %tmp_p_vec_full, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
; CHECK-SCEV: store <4 x float> %tmp4p_vec, <4 x float>* bitcast ([1024 x float]* @B to <4 x float>*), align 8, !alias.scope !3, !noalias !4

View File

@ -1,4 +1,5 @@
; RUN: opt %loadPolly -basicaa -polly-codegen-isl %vector-opt -dce -S < %s | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -polly-codegen-scev=false %vector-opt -dce -S < %s | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-codegen-isl -polly-codegen-scev=true %vector-opt -dce -S < %s | FileCheck %s -check-prefix=CHECK-SCEV
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"
target triple = "x86_64-unknown-linux-gnu"
@ -29,10 +30,15 @@ bb4: ; preds = %bb1
ret void
}
; CHECK: %p_scevgep.moved.to.bb2 = getelementptr [1024 x double]* @B, i64 0, i64 0
; CHECK: [[PTR:%[a-zA-Z0-9_\.]+]] = getelementptr [1024 x double]* @B, i64 0, i64 0
; CHECK: %tmp_p_splat_one = load <1 x float>* bitcast ([1024 x float]* @A to <1 x float>*), align 8
; CHECK: %tmp_p_splat = shufflevector <1 x float> %tmp_p_splat_one, <1 x float> %tmp_p_splat_one, <4 x i32> zeroinitializer
; CHECK: %0 = fpext <4 x float> %tmp_p_splat to <4 x double>
; CHECK: %vector_ptr = bitcast double* %p_scevgep.moved.to.bb2 to <4 x double>*
; CHECK: %vector_ptr = bitcast double* [[PTR]] to <4 x double>*
; CHECK: store <4 x double> %0, <4 x double>* %vector_ptr, align 8
; CHECK-SCEV: %tmp_p_splat_one = load <1 x float>* bitcast ([1024 x float]* @A to <1 x float>*), align 8, !alias.scope !0, !noalias !2
; CHECK-SCEV: %tmp_p_splat = shufflevector <1 x float> %tmp_p_splat_one, <1 x float> %tmp_p_splat_one, <4 x i32> zeroinitializer
; CHECK-SCEV: %0 = fpext <4 x float> %tmp_p_splat to <4 x double>
; CHECK-SCEV: store <4 x double> %0, <4 x double>* bitcast ([1024 x double]* @B to <4 x double>*), align 8, !alias.scope !3, !noalias !4

View File

@ -1,5 +1,6 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen-isl -S < %s | FileCheck %s -check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-codegen-isl -polly-codegen-scev=false -S < %s | FileCheck %s -check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-codegen-isl -polly-codegen-scev=true -S < %s | FileCheck %s -check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-codegen-isl -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
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"
target triple = "x86_64-pc-linux-gnu"
@ -49,8 +50,8 @@ ret:
; CODEGEN: br label %polly.stmt.loop.body
; CODEGEN: polly.stmt.loop.body:
; CODEGEN: %p_scevgep.moved.to.loop.body = getelementptr [1024 x i32]* @A, i64 0, i64 %polly.indvar
; CODEGEN: store i32 1, i32* %p_scevgep.moved.to.loop.body
; CODEGEN: [[PTR:%[a-zA-Z0-9_\.]+]] = getelementptr [1024 x i32]* @A, i64 0, i64 %polly.indvar
; CODEGEN: store i32 1, i32* [[PTR]]
; CODEGEN: %polly.indvar_next = add nsw i64 %polly.indvar, 1
; CODEGEN: %polly.adjust_ub = sub i64 %n, 1
; CODEGEN: %polly.loop_cond = icmp sle i64 %polly.indvar, %polly.adjust_ub

View File

@ -1,5 +1,6 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen-isl -S < %s | FileCheck %s -check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-codegen-isl -polly-codegen-scev=false -S < %s | FileCheck %s -check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-codegen-isl -polly-codegen-scev=true -S < %s | FileCheck %s -check-prefix=CODEGEN
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"
target triple = "x86_64-pc-linux-gnu"
@ -47,12 +48,12 @@ ret:
; CODEGEN: br label %polly.stmt.loop.body
; CODEGEN: polly.stmt.loop.body:
; CODEGEN: %p_scevgep.moved.to.loop.body = getelementptr [1024 x i32]* @A, i64 0, i64 %polly.indvar
; CODEGEN: store i32 1, i32* %p_scevgep.moved.to.loop.body
; CODEGEN: [[PTR:%[a-zA-Z0-9_\.]+]] = getelementptr [1024 x i32]* @A, i64 0, i64 %polly.indvar
; CODEGEN: store i32 1, i32* [[PTR]]
; CODEGEN: %polly.indvar_next = add nsw i64 %polly.indvar, 1
; CODEGEN: %polly.adjust_ub = sub i64 %n, 1
; CODEGEN: %polly.loop_cond = icmp slt i64 %polly.indvar, %polly.adjust_ub
; CODEGEN: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit
; CODEGEN: polly.loop_preheader:
; CODEGENL br label %polly.loop_header
; CODEGEN: br label %polly.loop_header