From bab3568105ede202ceb4a16ad8cb3f615af5f54d Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Sun, 16 Nov 2014 22:43:21 +0000 Subject: [PATCH] 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 --- .../test/Cloog/CodeGen/loop_with_condition_nested.ll | 2 +- polly/test/Cloog/CodeGen/vector_load_from_bitcast.ll | 2 +- .../LoopParallelMD/loop_nest_param_parallel.ll | 5 +++-- .../aliasing_different_base_and_access_type.ll | 6 +++--- polly/test/Isl/CodeGen/annotated_alias_scopes.ll | 19 +++++++++++-------- polly/test/Isl/CodeGen/loop_with_condition_nested.ll | 5 +++-- polly/test/Isl/CodeGen/simple_vec_assign_scalar.ll | 6 +++++- polly/test/Isl/CodeGen/simple_vec_cast.ll | 12 +++++++++--- polly/test/Isl/single_loop_param_less_equal.ll | 7 ++++--- polly/test/Isl/single_loop_param_less_than.ll | 9 +++++---- 10 files changed, 45 insertions(+), 28 deletions(-) diff --git a/polly/test/Cloog/CodeGen/loop_with_condition_nested.ll b/polly/test/Cloog/CodeGen/loop_with_condition_nested.ll index 40a1fd8..98640a9 100644 --- a/polly/test/Cloog/CodeGen/loop_with_condition_nested.ll +++ b/polly/test/Cloog/CodeGen/loop_with_condition_nested.ll @@ -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 ;#define N 1024 diff --git a/polly/test/Cloog/CodeGen/vector_load_from_bitcast.ll b/polly/test/Cloog/CodeGen/vector_load_from_bitcast.ll index bee5657..2bc9a1c 100644 --- a/polly/test/Cloog/CodeGen/vector_load_from_bitcast.ll +++ b/polly/test/Cloog/CodeGen/vector_load_from_bitcast.ll @@ -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" diff --git a/polly/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll b/polly/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll index 90a654b..b2dfc25 100644 --- a/polly/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll +++ b/polly/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll @@ -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]]} diff --git a/polly/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll b/polly/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll index 23c8070..d89aeb5 100644 --- a/polly/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll +++ b/polly/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll @@ -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: diff --git a/polly/test/Isl/CodeGen/annotated_alias_scopes.ll b/polly/test/Isl/CodeGen/annotated_alias_scopes.ll index 72cbb3c..4324606 100644 --- a/polly/test/Isl/CodeGen/annotated_alias_scopes.ll +++ b/polly/test/Isl/CodeGen/annotated_alias_scopes.ll @@ -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 diff --git a/polly/test/Isl/CodeGen/loop_with_condition_nested.ll b/polly/test/Isl/CodeGen/loop_with_condition_nested.ll index d6b7103..1f4f44a9 100644 --- a/polly/test/Isl/CodeGen/loop_with_condition_nested.ll +++ b/polly/test/Isl/CodeGen/loop_with_condition_nested.ll @@ -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 @@ -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
,%2,%4,%7,%6,%8,%9,%10 ; LOOPS: Loop at depth 1 containing: -; LOOPS: %polly.loop_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 +; LOOPS: %polly.loop_header
,%polly.cond,%polly.merge,%polly.then,%polly.else,%polly.stmt.,%polly.cond3,%polly.merge4,%polly.then5,%polly.else6,%polly.stmt.7,%polly.stmt{{.*}} diff --git a/polly/test/Isl/CodeGen/simple_vec_assign_scalar.ll b/polly/test/Isl/CodeGen/simple_vec_assign_scalar.ll index 1dd0d88..001b529 100644 --- a/polly/test/Isl/CodeGen/simple_vec_assign_scalar.ll +++ b/polly/test/Isl/CodeGen/simple_vec_assign_scalar.ll @@ -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, +; 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 diff --git a/polly/test/Isl/CodeGen/simple_vec_cast.ll b/polly/test/Isl/CodeGen/simple_vec_cast.ll index 6d0ac9c..2b59adb 100644 --- a/polly/test/Isl/CodeGen/simple_vec_cast.ll +++ b/polly/test/Isl/CodeGen/simple_vec_cast.ll @@ -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 + diff --git a/polly/test/Isl/single_loop_param_less_equal.ll b/polly/test/Isl/single_loop_param_less_equal.ll index fbc798e..e0a2ae5 100644 --- a/polly/test/Isl/single_loop_param_less_equal.ll +++ b/polly/test/Isl/single_loop_param_less_equal.ll @@ -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 diff --git a/polly/test/Isl/single_loop_param_less_than.ll b/polly/test/Isl/single_loop_param_less_than.ll index 1497081..c85e9de0 100644 --- a/polly/test/Isl/single_loop_param_less_than.ll +++ b/polly/test/Isl/single_loop_param_less_than.ll @@ -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 -- 2.7.4